屈華山,鄒俊磊,盛亮亮,張文龍
(航空工業(yè)洪都,江西 南昌,330024)
AutoCAD 是Autodesk 公司發(fā)行的自動(dòng)計(jì)算機(jī)輔助設(shè)計(jì)軟件,在現(xiàn)代飛機(jī)設(shè)計(jì)中有著廣泛的應(yīng)用,它具有完善的圖形繪制功能、精確的圖形捕捉功能、強(qiáng)大的圖形編輯功能和二次開(kāi)發(fā)功能。AutoCAD 提供了很多功能,簡(jiǎn)化了飛機(jī)設(shè)計(jì)中的很多工作。但飛機(jī)設(shè)計(jì)過(guò)程的工作需求多種多樣,AutoCAD 沒(méi)有提供相應(yīng)的功能,提供的部分功能不能很好地滿足相應(yīng)工作需求。本文結(jié)合飛機(jī)設(shè)計(jì)中遇到的實(shí)際問(wèn)題,利用AutoCAD 提供的二次開(kāi)發(fā)工具AutoLISP 和Visual LISP 編制程序擴(kuò)展AutoCAD 功能來(lái)解決該問(wèn)題。
為方便對(duì)AutoCAD 進(jìn)行二次開(kāi)發(fā),AutoCAD 提供了多種二次開(kāi)發(fā)工具,如AutoLISP、Visual LISP 和VBA 等。AutoLISP 是 Autodesk 公司為便于對(duì) Auto-CAD 二次開(kāi)發(fā)推出的二次開(kāi)發(fā)工具, 隨后Autodesk公司又推出了Visual LISP。Visual LISP 是對(duì)AutoLISP的補(bǔ)充和升級(jí)。AutoLISP 和Visual LISP 是擴(kuò)展Auto CAD 最好、最直接的程序設(shè)計(jì)語(yǔ)言,它可以加快重復(fù)性繪圖工作的步伐,也可以簡(jiǎn)化一系列復(fù)雜操作,廣受AutoCAD 使用者和二次開(kāi)發(fā)人員好評(píng);AutoLISP和Visual LISP 易學(xué)易用,即使沒(méi)有程序開(kāi)發(fā)經(jīng)歷的人員,在簡(jiǎn)單學(xué)習(xí)過(guò)后也能寫(xiě)出實(shí)用的程序。AutoLISP和Visual LISP 具有良好的向下兼容性,在低版本Au toCAD 上編制出的程序能不作任何修改即可在高版本AutoCAD 上運(yùn)行。
飛機(jī)設(shè)計(jì)是一個(gè)反復(fù)迭代、優(yōu)化的過(guò)程,該過(guò)程中會(huì)對(duì)飛機(jī)結(jié)構(gòu)參數(shù)進(jìn)行多次調(diào)整。飛機(jī)結(jié)構(gòu)剖面的形心慣性矩是結(jié)構(gòu)設(shè)計(jì)迭代和優(yōu)化需要用到的參數(shù)。圖1 為飛機(jī)結(jié)構(gòu)一個(gè)典型剖面,由上壁板、梁和下壁板組成。根據(jù)要求,需要截取上壁板和下壁板特定的寬度:以梁的左、右端面為基準(zhǔn),梁腹板厚度10 倍距離的寬度,截取上壁板和下壁板(見(jiàn)圖2),提取由截取后剖面的形心慣性矩。 AutoCAD 提供了提取剖面形心慣性矩的功能,具體操作步驟如下:
圖1 飛機(jī)結(jié)構(gòu)一個(gè)典型剖面
1) 在梁的左、右端面做出輔助直線,梁腹板厚度乘以10 的距離來(lái)偏移輔助直線;
2) 根據(jù)壁板邊線和偏移的直線,通過(guò)菜單“繪圖”→“邊界”命令生成閉合曲線;
3) 通過(guò)菜單“繪圖”→“面域”命令將閉合曲線圍成的區(qū)域生成面域;
4) 通過(guò)菜單“工具”→“查詢(xún)”→“面域/質(zhì)量特性”得到剖面的形心坐標(biāo);
5) 命令行中輸入“UCS”命令將世界坐標(biāo)原點(diǎn)移動(dòng)到剖面形心坐標(biāo)處;
6) 再次通過(guò)菜單“工具”→“查詢(xún)”→“面域/質(zhì)量特性”得到剖面的慣性矩,即為剖面的形心慣性矩。
圖2 剖面的形心慣性矩的值見(jiàn)圖3。
圖2 需提取形心慣性矩的剖面尺寸
圖3 剖面的形心慣性矩值
該方法是提取剖面形心慣性矩的傳統(tǒng)方法,步驟雖然繁瑣,在剖面數(shù)量較少時(shí)也是實(shí)用的好方法。但在剖面數(shù)量較多時(shí),繁瑣的操作步驟使得該方法不再實(shí)用和好用。同時(shí),飛機(jī)設(shè)計(jì)中需要進(jìn)行多次迭代和優(yōu)化,結(jié)構(gòu)參數(shù)的部分改變就會(huì)導(dǎo)致前次得到的數(shù)據(jù)不再適用于本次設(shè)計(jì)。 所以, 找到一種方法簡(jiǎn)化AutoCAD 操作,讓設(shè)計(jì)者從提取剖面形心慣性矩這類(lèi)數(shù)量多、操作繁瑣的工作中解放出來(lái),是十分必要的。
在AutoCAD 中,剖面多種多樣。 每個(gè)剖面中,有各種各樣的圖形對(duì)象,如點(diǎn)/Point、直線/Line、輕多線段/LWPolyline、文本/Text、尺寸/Dimension 等,識(shí)別了剖面中的不同圖形對(duì)象是解決問(wèn)題的基礎(chǔ)。
AutoCAD 中,每個(gè)圖形對(duì)象如 Point、Line、Text和Dimension 等都有共有的和各自專(zhuān)屬的屬性列表,其屬性以組碼進(jìn)行有規(guī)律的組織。圖形對(duì)象的共有組碼部分內(nèi)容見(jiàn)表1,LWPolyline 組碼的部分內(nèi)容見(jiàn)表2。程序中可通過(guò)組碼來(lái)識(shí)別AutoCAD 中的圖形對(duì)象。
表1 常用圖元組碼中部分內(nèi)容
表2 LWPolyline 屬性組碼中部分內(nèi)容
剖面形心慣性矩提取的傳統(tǒng)方法之所以在剖面數(shù)量較多時(shí)可用卻不實(shí)用,是因?yàn)樵摲椒ú襟E繁瑣,只需要編制程序來(lái)自動(dòng)執(zhí)行操作,就解決了步驟繁瑣的問(wèn)題。這就是我們解決該問(wèn)題的方案思路。
1) 在圖1 剖面中梁的左、右端面處進(jìn)行手動(dòng)操作,作出輔助直線;
2) 在梁腹板附近,上、下壁板剖面邊線間進(jìn)行手動(dòng)操作,作出一個(gè)點(diǎn);
3) 編制程序,利用圖形對(duì)象的組碼來(lái)識(shí)別剖面中的直線、點(diǎn)、輕多線段和尺寸。 梁和上、下壁剖面的邊線是LWPolyline。
4) 編制程序,根據(jù)步驟3 得到的圖形對(duì)象偏移直線,由點(diǎn)位置生成閉合 LWPolyline,并將閉合LWPolyline 生成面域/Region,由 Region 結(jié)合公式(1)、公式(2)和公式(3)得到剖面的形心慣性矩。
3.3.1 多個(gè)小剖面組成的剖面的形心坐標(biāo)
說(shuō)明:(xiC,yiC)為小剖面的形心坐標(biāo),Ai為對(duì)應(yīng)的小剖面面積,(xC,yC)為剖面的形心坐標(biāo)。
3.3.2 多個(gè)小剖面組成的剖面的慣性矩
說(shuō)明:Iix和 Iiy是小剖面對(duì) x 軸和 y 軸的慣性矩,Ix和 Iy是剖面對(duì)x 軸和y 軸的慣性矩。
3.3.3 平等移軸公式
同一平面對(duì)于平行的兩對(duì)坐標(biāo)系的慣性矩并不相同,當(dāng)其中一對(duì)坐標(biāo)原點(diǎn)位于平面形心時(shí),它們之間有公式(3)表示的關(guān)系:
說(shuō)明:(b,a)為平面的形心坐標(biāo)。
有了上述方案思路,程序的編制就有了依據(jù)。
4.1.1 剖面中圖形對(duì)象的選擇
4.1.2 閉合LWPolyline 的生成
4.1.3 由閉合 LWPolyline 生成 Region 并提取Region 的屬性
4.1.4 剖面形心慣性矩的求值
AutoLISP 和Visual LISP 程序編制完成后,需要在AutoCAD 中加載運(yùn)行,加載運(yùn)行方式有三種:
1) 在命令行中直接輸入(Load "主程序名");
2) 使用 appload 命令加載;
3) 將程序掛載于菜單中,執(zhí)行自動(dòng)加載及執(zhí)行。
在AutoCAD 等待編制好的程序后,其運(yùn)行結(jié)果見(jiàn)圖4,與圖3 中顯示的結(jié)果一致。
圖4 程序求得剖面的形心慣性矩的值
AutoLISP 和 Visual LISP 是 擴(kuò)展 AutoCAD 功能的有效方法,是方便實(shí)用的解決問(wèn)題的手段。本文只用到了AutoLISP 和Visual LISP 功能的很小的一個(gè)方面,其更多和更強(qiáng)大的功能有待在使用中進(jìn)一步學(xué)習(xí)。 飛機(jī)設(shè)計(jì)工作中廣泛的需求有助于進(jìn)一步發(fā)掘AutoLISP 和Visual LISP 應(yīng)用方向,如將程序生成的結(jié)果保存至另一個(gè)AutoCAD 文件中,將數(shù)據(jù)結(jié)果按預(yù)定的規(guī)則保存到Excel 表格中,以便對(duì)數(shù)據(jù)進(jìn)行下一步處理,等等。