劉松健, 趙捍東, 曹紅松, 劉 闖, 劉 勝
(中北大學 機電工程學院, 山西 太原 030051)
榴彈作為構成火炮彈藥的基本彈種, 在殺傷敵人有生力量, 摧毀敵人防御工事、武器裝備及其它軍事設施上有著不可替代的作用. 在現代戰爭中, 對榴彈的戰術技術要求越來越越具體化和多樣化, 榴彈的設計要迅速反映現代戰爭的需求[1]. 隨著計算機技術的發展, 數字化設計技術在彈藥設計工作中有著越來越廣泛的應用. 大量的專家學者已經在彈藥的數字化設計系統研究上取得了顯著成果[2-5].
目前, 各類彈藥數字化設計系統所采用的參數化建模技術主要為基于交互式運行模式的UG二次開發技術. 該模式允許開發人員直接添加菜單項, 從用戶對菜單的交互操作中調用程序, 實現和UG界面的無縫集成并擴充成所需的特定功能. 采用該技術的UG二次開發應用程序開發簡單、操作靈活, 執行時的每個步驟都能從UG的客戶窗口中得到動態反映, 能方便地通過UI界面對象來實現與用戶的交互、屏幕選取等復雜操作[6,7]. 然而基于該模式的應用程序必須在UG框架內執行, 導致該類方法存在集成于某一設計系統中時會出現數據交互不便, 無法同時對多個零件進行批量操作等缺陷. 本文為了使UG二次開發應用程序能夠獨立運行, 適合集成在數字化設計系統中, 實現對多個部件進行快速操作等功能, 在榴彈外形結構設計系統中采用了基于批處理運行模式的UG二次開發方法.
該系統由C#語言在 Visual Studio 2012(以下簡稱VS2012)環境下進行開發, 總體架構為典型的4層體系結構, 包括用戶層、應用層、數據層及驅動層, 系統框架如圖 1 所示.
用戶層是軟件的交互界面, 用戶通過由C#編寫的可視化界面調用系統的各功能模塊完成設計工作.
應用層主要由榴彈設計和快速建模兩個功能模塊構成. 其中, 榴彈設計模塊分為口徑及用途選擇模塊、榴彈質量初步選擇模塊、榴彈外形設計、榴彈內腔設計和榴彈裝藥選擇5個子模塊; 快速建模模塊分為引信建模、彈體建模、彈帶建模、藥柱建模和榴彈裝配5個子模塊.
數據層即為軟件的數據庫, 由各類數據文件組成. 系統通過讀取相應的數據文件得到設計工作中所需的各項參數, 并將設計結果保存在新建的數據文件中, 各功能模塊通過對該數據文件進行讀寫完成數據交互.
驅動層是在VS2012環境下, 將程序進行編譯, 完成各模塊功能的實現. 系統通過NXOpenAPI函數從后臺調用UG, 完成對模型的快速操作.

圖 1 系統框架圖Fig.1 System frame diagram
榴彈的參數化模型根據功能模塊的設計結果生成. 三維模型的建立流程如圖 2 所示.

圖 2 榴彈的三維模型建立過程Fig.2 Three-dimensional modeling process of grenade
榴彈模型的設計流程由榴彈設計功能模塊實現, 該模塊程序根據相關彈藥設計理論知識整理得到. 模塊功能涵蓋了榴彈設計過程中給定最大射程、榴彈口徑選擇、引信選擇、榴彈質量初步設計、榴彈外形設計、彈帶設計、榴彈內腔設計和榴彈裝藥選擇等主要內容[8,9].
模塊程序通過對外彈道數據文件和各項設計參數文件的讀取完成設計工作中對部分外彈道設計參數的查詢及各步驟中所需設計參數的調用, 并完成相關計算工作. 榴彈模型的設計結果被儲存在新建的ini文件中, 建模模塊通過讀取ini文件調用相應的UG二次開發應用程序完成三維模型的繪制, 設計功能模塊的主界面及設計結果如圖 3 所示.

圖 3 榴彈的設計結果Fig.3 The result of shell design
榴彈的參數化模型如圖 4 所示. UG在建立三維模型時需要先繪制草圖, 而繪制該草圖的過程即為榴彈的參數化模型. 建模模塊根據不同類型的設計結果調用相應的建模程序模板, 將設計結果中的參數帶入至建模程序中, 驅動建模程序完成草圖的繪制. 設計結果中各參數與榴彈參數化模型中的參數對應如表 1 所示.
其中, 口螺處的半徑R2按照螺紋的內徑選取. 外圓弧與內圓弧需要根據其圓心坐標、半徑以及起止位置的角度確定.

圖 4 榴彈參數化模型Fig.4 Parametric model of grenade
圓弧起始角度
圓弧停止角度
圓柱部定心部寬度L2,L4等長, 彈帶槽寬L5根據所選彈帶確定;
非定心部段長度
L3=L13-L2-L4-L5.
非定心部段半徑R7略小于定心部處半徑R6, 與尾柱部半徑R8相等;
彈底半徑R11=R8-L7×tanθ2;
彈丸內腔圓柱部半徑
截錐部長
L11=L13-L8-L9-L10-L12.
彈底半徑
R5=R4-L11×tanθ1.
當修改榴彈設計參數時, 模型中對應參數也會隨之變化, 以此來達到快速修改榴彈模型的效果.

表 1 模型參數與設計參數對應關系Tab.1 The correspondence between model parameters and design parameters
本文采用的平臺為UG NX10.0與VS2012. 將UG的根文件夾NX10.0下的UGOPEN文件夾中vs_files里的VC#文件夾復制到VS2012根文件夾Microsoft Visual Studio 11.0完成開發環境的搭建. 在VS2012中新建UG10開發模板并在設置向導中選擇外部類型, 再向所配置的開發模板中添加根據設計結果繪制榴彈模型的操作步驟代碼, 最后將模板發布為exe文件, 以供建模模塊調用.
本文通過VS2012編寫NX OpenAPI程序從外部驅動UG完成建模的各個步驟. NX OpenAPI是一個允許程序訪問并改變UG對象模型的程序集, 并且封裝了近2 000個UG操作函數[10]. 它是VS2012與UG的接口, 通過它可以對UG的圖形終端進行操作[11].
3.2.1 彈體的創建
榴彈彈體作為回轉體, 在建模過程中, 可以通過草圖繪制母線, 再通過建立回轉特征得到. 榴彈彈體母線的構成元素主要包含直線和圓弧.
1) 直線元素的添加通過函數CreateLine()繪制再用函數AddGeometry()添加至草圖中.
2) 圓弧元素的繪制通過函數CreateArc()完成, 函數所需的參數有圓心坐標、圓弧半徑和起止弧度. 再通過函數AddGeometry()添加至草圖中.
3) 回轉特征的構建由回轉特征構造器RevolveBuilder實現, 建立回轉特征需要的參數有: 構造器所使用的截面Section、用于生成回轉特征的截面線Geometry、回轉方向以及回轉軸線Axis, 由構造器的CommitFeature()函數提交特征, 完成對回轉特征的構建.
3.2.2 口螺的創建
榴彈彈體與引信的連接通過口螺實現, 因此在建模過程中需要對口螺進行繪制. 在UG的API函數庫中, 并無用于直接創建螺紋類特征的API函數, 所以需要通過掃掠特征和切除運算模擬機加工中對螺紋的切制來實現口螺的創建, 具體步驟如下:
1) 根據螺紋的牙型添加需切除部分的草圖, 添加方法與上文相同.
2) 創建螺旋線, 螺旋線由構造器HelixBuilder進行創建, 并根據螺紋的參數對構造器中的Value(直徑)、PitchLaw(螺距)、StartLimit(起始位置)、EndLimit(終止位置)4個成員進行設置, 確定螺旋線的尺寸, 再通過設置CoordinateSystem(坐標系統)成員確定螺旋線的位置與方向.
3) 創建掃掠特征, 掃掠特征由構造器SweptBuilder進行創建, 建立掃掠特征所需的參數有: 構造器所使用的截面Section、用于生成掃掠特征的截面線Geometry(通過選取草圖中的所有曲線)、 用于生成掃掠特征的引導線Spline(通過選取構成螺旋線的樣條曲線)以及掃掠過程的定位方法OrientationMethod. 由構造器的Commit()函數提交特征, 完成掃掠特征的創建.
4) 布爾運算切除, 將回轉特征作為參數代至構造器BooleanBuilder中的Add()函數中, 完成將彈體作為目標體的操作, 選取掃掠特征為函數CreateRuleBodyDumb()的參數完成對工件具體的選取; 由構造器的Commit()函數提交特征, 完成對口螺的切制.
3.2.3 彈體、引信、彈帶的裝配
榴彈的各部分三維模型繪制完成后, 裝配工作同樣可以由API函數完成. 通過API函數進行裝配時, 各組件的定位方式均為絕對原點. 二次開發程序根據各組件在裝配體中的位置以及自身尺寸, 計算裝配時所需的偏移量和旋轉量, 并以此為參數添加到裝配體中.
坐標偏移存放在變量Point3d(X,Y,Z)中, 旋轉方向存放在變量Matrix3x3(Xx,Xy,Xz,Yx,Yy,Yz,Zx,Zy,Zz)中. UG二次開發應用程序通過坐標偏移和方向旋轉的方式完成各組件的裝配. 各部件的加載操作則由函數OpenBase()完成, 二次開發程序將部件的路徑filePath作為參數代入至函數OpenBase(), 再由函數AddComponent()根據坐標偏移和旋轉方向將組件添加至裝配體中. 最終三維模型如圖 5 所示.

圖 5 榴彈的三維模型Fig.5 The three-dimensional model of the shell
因此, UG二次開發程序可以通過多次調用函數OpenBase()在一個程序中多次打開不同的三維模型, 再通過調用不同的API函數對打開的三維模型進行快速操作, 以此來實現在一個應用程序中對多個模型進行快速操作. 另一方面, 當面對較為復雜的模型時, 亦可以將模型拆分為數個外形較為簡單的組件, 通過執行一個或多個UG二次開發應用程序完成對各組件的操作, 再利用OpenBase()與AddComponent()函數將組件進行裝配, 完成對一些外形較為復雜的模型的參數化設計.
本文在榴彈設計理論研究的基礎上, 將基于批處理模式的UG二次開發技術與參數化設計方法相結合, 開發了一種榴彈外形結構參數化設計系統. 根據可視化界面的設計內容, 建立了榴彈彈體的三維CAD參數化模型, 通過NXOpenAPI函數從后臺調用UG完成系統三維模型的快速操作, 彌補了基于交互式運行模式的UG二次開發應用程序必須在UG框架內執行, 集成于某一設計系統中時會出現數據交互不便, 無法同時對多個零件進行批量操作等缺陷. 為今后相關數字化設計平臺的集成及復雜模型的參數化設計提供了參考.