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