劉若斐
(浙江大學(xué)建筑設(shè)計(jì)研究院有限公司,浙江 杭州 310028)
AutoCAD是美國(guó)AutoDesk公司開發(fā)的通用計(jì)算機(jī)輔助繪圖設(shè)計(jì)系統(tǒng),是世界上最為流行的通用CAD平臺(tái)。AutoCAD的強(qiáng)大生命力在于它的通用性、多工業(yè)標(biāo)準(zhǔn)和開放的體系結(jié)構(gòu)。
然而通用軟件最大的缺點(diǎn)就是不能很好地為某個(gè)特定領(lǐng)域服務(wù)。針對(duì)CAD 的二次開發(fā)能有效地解決實(shí)際工程應(yīng)用,縮短設(shè)計(jì)周期,減少工作量,降低出錯(cuò)概率及提高設(shè)計(jì)中的自動(dòng)化程度[1]。
結(jié)構(gòu)施工圖中,混凝土梁配筋為整個(gè)項(xiàng)目最繁瑣,工作量最大的任務(wù),結(jié)構(gòu)工程師在繪制梁配筋圖紙時(shí)需要花費(fèi)大量時(shí)間進(jìn)行人工手動(dòng)配筋。隨著出圖時(shí)間日益緊張,以及結(jié)構(gòu)計(jì)算模型的日益復(fù)雜,最終圖紙經(jīng)常會(huì)出現(xiàn)梁配筋不足的情況,這不僅違反國(guó)家強(qiáng)制性規(guī)范,給設(shè)計(jì)人員和設(shè)計(jì)單位帶來處罰通報(bào)的風(fēng)險(xiǎn),同時(shí)降低了結(jié)構(gòu)安全余量,造成結(jié)構(gòu)安全風(fēng)險(xiǎn)。而通過二次開發(fā)輔助配筋設(shè)計(jì),不僅可大大減小手工配筋出錯(cuò)的概率,還可以提高設(shè)計(jì)人員的工作效率。
AutoCAD數(shù)據(jù)庫是用來管理當(dāng)前圖形的圖元實(shí)體和其他非集合信息的容器。一個(gè)AutoCAD數(shù)據(jù)庫包含特定的符號(hào)表和命名對(duì)象字典。符號(hào)表是AutoCAD中的一個(gè)容器對(duì)象,保存了對(duì)應(yīng)的符號(hào)表記錄,用來保存AutoCAD對(duì)象。每個(gè)符號(hào)表包含特定的符號(hào)表記錄的實(shí)例,例如層表(AcDbLayTable)包含層表記錄,塊表(AcDbBlockTable)包含塊表記錄,所有的AutoCAD實(shí)體包含于塊表記錄中。圖1形象地描述了AutoCAD 數(shù)據(jù)庫的基本結(jié)構(gòu)。
圖1 AutoCAD數(shù)據(jù)庫的組成
對(duì)CAD 進(jìn)行二次開發(fā)用到的工具主要有ObjectARX、VBA 和Lisp,其中ObjectARX 是AutoDesk 公司針對(duì)AutoCAD 平臺(tái)上的二次開發(fā)而推出的新一代功能強(qiáng)大的軟件包[2-4]。對(duì)CAD進(jìn)行二次開發(fā),充分發(fā)揮了面向?qū)ο缶幊痰膬?yōu)點(diǎn),具有很強(qiáng)的技術(shù)實(shí)用性和可操作性,ObjectARX應(yīng)用程序?qū)嵸|(zhì)是在運(yùn)行期間以動(dòng)態(tài)鏈接庫(DLL)的形式共存于AutoCAD地址空間,采用Windows的消息傳遞機(jī)制直接通信,可直接調(diào)用AutoCAD的核心函數(shù)和訪問、利用CAD 核心數(shù)據(jù)庫結(jié)構(gòu)、圖形系統(tǒng)、幾何造型核心及代碼,它獲得的穩(wěn)定性比Autolisp、ADS 更高,運(yùn)行效率利用ObjectARX與MFC相結(jié)合的方法對(duì)AutoCAD進(jìn)行二次開發(fā),一方面通過C++和MFC進(jìn)行可視化編程,另一方面通過ObjectARX提供的類和函數(shù)深入到AutoCAD系統(tǒng)內(nèi)部,實(shí)現(xiàn)系統(tǒng)功能要求,極大地提高了開發(fā)效率,是深入開發(fā)和應(yīng)用AutoCAD的一個(gè)有效途徑。
本軟件使用ObjectARX2008+VS2008開發(fā),運(yùn)行于CAD2010平臺(tái)。使用方法簡(jiǎn)單,在CAD平臺(tái)下輸入ARX命令,加載ARX軟件即可。
本軟件基于AutoCAD 平臺(tái)開發(fā),自動(dòng)識(shí)別計(jì)算軟件(盈建科)中梁的計(jì)算數(shù)據(jù),根據(jù)結(jié)構(gòu)工程師的工作習(xí)慣,運(yùn)用計(jì)算機(jī)超強(qiáng)的計(jì)算能力,對(duì)計(jì)算數(shù)據(jù)進(jìn)行批量后處理,剔除與梁配筋無關(guān)的數(shù)據(jù),將有限元軟件中的分段梁數(shù)據(jù)歸并成平法中的整梁段。同時(shí),為避免機(jī)器歸并識(shí)別過程中的錯(cuò)誤,提供了手動(dòng)歸并梁段的模式。上述處理完成后,由結(jié)構(gòu)工程師手動(dòng)選擇同一連續(xù)梁的相關(guān)梁段,自動(dòng)生成集中標(biāo)注與原位標(biāo)注。待全部梁標(biāo)注完畢,可選擇需要編號(hào)的梁集中標(biāo)注,按順序編號(hào)。
軟件操作流程見圖2。
圖2 軟件操作流程
1)首先提取計(jì)算書中相關(guān)實(shí)體信息,實(shí)體包括:梁中心線(line)、梁配筋信息(text)、梁截面(text)等原始計(jì)算信息。
2)構(gòu)建梁數(shù)據(jù)結(jié)構(gòu),將梁各項(xiàng)截面配筋數(shù)據(jù)以擴(kuò)展數(shù)據(jù)的形式附屬在梁中心線上。
3)根據(jù)平法標(biāo)注規(guī)則,將有限元計(jì)算形成的零散梁段數(shù)據(jù)整合成單一梁段的數(shù)據(jù)。
上述各項(xiàng)完成后,數(shù)據(jù)處理完畢,即可進(jìn)入人機(jī)互動(dòng)配筋。本文構(gòu)建的梁數(shù)據(jù)結(jié)構(gòu)代碼如下:
typedef struct {
int PjLeft;
int PjRight;
int PjGuantong;
int PjDown;
int BeamWidth;
int BeamHeight;
double G_N;
} BeamData;
梁平法[5]的表達(dá)形式,概括的來講,是把結(jié)構(gòu)構(gòu)件的尺寸和配筋等,按照平面整體表示方法制圖規(guī)則,整體直接表達(dá)在各類構(gòu)件的結(jié)構(gòu)平面布置圖上。
本軟件提供梁構(gòu)件從計(jì)算結(jié)果到成圖高度自動(dòng)化與智能化的解決方案。
數(shù)據(jù)處理后形成的梁中心線段為帶有梁截面配筋信息的直線,將數(shù)據(jù)處理后形成的梁中心線段拷貝到平面布置圖后即可繼續(xù)本程序的梁平法標(biāo)注階段,見圖3。本軟件通過人工選擇梁中心線段,采用人工介入的方法,使得連續(xù)梁段的標(biāo)注更符合設(shè)計(jì)者的意圖,同時(shí)也避免了軟件過度參與。
圖3 數(shù)據(jù)處理后形成的梁段線
選筋是“平法”的核心部分,軟件將根據(jù)計(jì)算結(jié)果,對(duì)梁縱筋、箍筋進(jìn)行歸并及選筋等工作。根據(jù)選取的鋼筋直徑對(duì)梁面梁底鋼筋進(jìn)行排布。鋼筋排布的間距按混凝土規(guī)范[7]的要求進(jìn)行。
下面是鋼筋選取函數(shù)及鋼筋排布函數(shù):
CString GJdatachoice(ads_name sname,int position); //箍筋選取
CString UPGJdatachoice(ads_name sname); //梁面縱向鋼筋選取
CString DownGJdatachoice(ads_name sname); //梁底縱向鋼筋選取
CString NGJdatachoice(int width,int height,double g_n); //抗扭鋼筋選取
CString GJPb(int width,int upordown,int gjnum,int dia);//鋼筋排布
集中標(biāo)注在選擇點(diǎn)位置生成,原位標(biāo)注在梁面梁底分別放置。
下面是主要字符生成的函數(shù)列表:
BOOL insertJZbz(ads_name sname,int position,CString GJdata,CString UPGJdata,CString DownGJdata,ads_point insert_pt1,ads_point insert_pt2,int drawscale); //集中標(biāo)注字符放置
BOOL insertUPGJdata(ads_name sname,int position,CString GJdata,CString UPGJdata,CString DownGJdata,ads_point insert_pt1,ads_point insert_pt2,int drawscale); //梁面鋼筋字符放置
BOOL insertDownGJdata(ads_name sname,int position,CString GJdata,CString UPGJdata,CString DownGJdata,ads_point insert_pt1,ads_point insert_pt2,int drawscale); //梁底鋼筋字符放置
上述配筋通過人機(jī)交互完成后,通過程序自動(dòng)識(shí)別梁平面布置圖中的梁集中標(biāo)注編號(hào),按空間左右上下順序依次編號(hào),方便施工技術(shù)人員查看,完成后的梁平法施工圖見圖4。
圖4 梁平法施工圖
本文在智能化平法配筋方面做出了有益的嘗試,目的是為了讓結(jié)構(gòu)設(shè)計(jì)人員從繁瑣的繪圖勞動(dòng)中解脫出來,主要取得了如下成果:
1)YJK計(jì)算結(jié)果的識(shí)別及后處理,生成帶配筋擴(kuò)展數(shù)據(jù)的梁中心線。
2)人機(jī)交互選擇混凝土連續(xù)梁,根據(jù)擴(kuò)展數(shù)據(jù)智能選筋及梁集中標(biāo)注和原位標(biāo)注的生成。
3)梁編號(hào)按空間左右上下順序依次編號(hào)。