李久弘,關(guān)麗榮
(沈陽理工大學 機械工程學院, 遼寧 沈陽 110159)
為了適應(yīng)戰(zhàn)爭需要,部隊在裝備序列、戰(zhàn)術(shù)和使用方面會對武器和彈藥提出各種新的要求,使武器和彈藥性能不斷改進或更新.槍彈的設(shè)計任務(wù)就是根據(jù)上述幾方面的要求而提出的.我國目前的槍彈研制采用的仍是傳統(tǒng)的人工設(shè)計方法,根據(jù)以往的設(shè)計經(jīng)驗來改進和優(yōu)化槍彈設(shè)計.傳統(tǒng)設(shè)計方法的工作量繁重且周期長,不利于我國槍彈的更新?lián)Q代.因此,如何快速的生成槍彈三維模型是一個急需解決的問題.
參數(shù)化設(shè)計方法是計算機輔助設(shè)計的一項重要技術(shù),也是一門比較成熟的技術(shù),現(xiàn)已廣泛應(yīng)用于多種制造領(lǐng)域.從降低設(shè)計的重復(fù)性、提高其可修改性上考慮,參數(shù)化建模技術(shù)作為一種先進的設(shè)計方法,可以很好地解決槍彈結(jié)構(gòu)建模中遇到的難題.本文通過調(diào)研某輕武器研究所,查閱大量文獻,對槍彈設(shè)計知識加以整理,使其滿足參數(shù)化建模需要,以某槍彈作為研究對象,以Python開發(fā)工具和Solidworks二次開發(fā)技術(shù)來實現(xiàn)槍彈的參數(shù)化設(shè)計問題.
為了方便用戶進行二次開發(fā),Solidworks提供了幾百個應(yīng)用程序接口(Application Program Interface,API)函數(shù).這些函數(shù)是Solidworks基于OLE(Object Linking and Embedding)或COM(Computer-Output-Microfilm)開發(fā)技術(shù)的接口.用戶使用VB、NBANC、Python等高級語言調(diào)用這些對象屬性的設(shè)置和方法,就可以在設(shè)計者自己開發(fā)的程序中實現(xiàn)Solidworks的各種操作,建立滿足用戶需要的定制Solidworks軟件系統(tǒng)[1-2].
Solidworks具有強大的參數(shù)化特征造型功能.通過它能方便、快捷地創(chuàng)建幾乎任何復(fù)雜形狀的實體,可以滿足絕大部分的工程設(shè)計需要.Solidworks采用統(tǒng)一的內(nèi)部數(shù)據(jù)庫,全數(shù)據(jù)相關(guān).在其任何一個功能模塊中對零件的修改都會自動反映到其他模塊中.而且,它具有開放的體系結(jié)構(gòu),擁有豐富的第三方支持軟件,能夠提供開放的數(shù)據(jù)結(jié)構(gòu)和方便的二次開發(fā)環(huán)境,為工程應(yīng)用提供良好的平臺.
基于Solidworks的二次開發(fā)方法[3]有兩種:一種是編程法;另一種是尺寸驅(qū)動法.
編程法將設(shè)計過程的所有關(guān)系式包括在應(yīng)用程序中,程序按照建模過程順序地執(zhí)行.這種方法每更新一次模型都需要從頭至尾執(zhí)行一次應(yīng)用程序.
尺寸驅(qū)動法在保持模型結(jié)構(gòu)不變的前提下,將模型中尺寸視為變量,在應(yīng)用程序中給變量賦值就可同步更新模型中相應(yīng)的尺寸值,進而獲得一系列尺寸不同而結(jié)構(gòu)相同的模型,形成零部件系列庫.這種方法不需要重復(fù)建模過程,只是在基礎(chǔ)模型上修改若干尺寸就可以達到參數(shù)化建模的目的.
以上兩種方法都可以借助宏錄制簡化編程過程,但是二者的簡化程度不同.尺寸驅(qū)動法并不需要整個建模過程的代碼,它只是在建模完成后錄制修改模型尺寸的宏代碼,使得涉及API的函數(shù)大大減少.編程法較復(fù)雜,尺寸驅(qū)動法才是最理想的選擇.
槍彈設(shè)計需要設(shè)計者進行不斷修改與測試,整個設(shè)計和實踐的過程十分繁雜.根據(jù)設(shè)計者多年的設(shè)計研發(fā)經(jīng)驗,槍彈彈頭的結(jié)構(gòu)參數(shù)大致包括如下8個部分:頂部半徑(R1)、圓柱部長度(H2)、圓柱部直徑(D)、弧形部長度(H1)、弧形部半徑(R2)、尾錐部長度(H3)、尾錐角(α)、彈總長(H).槍彈彈頭的結(jié)構(gòu)參數(shù)如圖1所示.
圖1 槍彈彈頭的結(jié)構(gòu)參數(shù)
(1) 弧形部長度.它是彈頭飛行阻力的主要影響因素.H1值越大,飛行阻力越小,彈形系數(shù)也越小.但當H1增大到一定程度后阻力的減小量甚微,同時因為彈頭重量已定,所以彈總長是有一定限制的,亦即H1值不可能太大,否則圓柱部將被縮短,而圓柱部的縮短不僅影響彈頭在膛內(nèi)的正確運動(即有良好的運動姿態(tài)),也將影響其飛行穩(wěn)定性和射擊密集度.
(2) 圓柱部直徑.設(shè)計時圓柱部直徑要與槍管線膛尺寸密切配合.為了密封槍管,彈頭圓柱部橫斷面積應(yīng)大于(至少應(yīng)等于)線膛內(nèi)橫斷面積.
(3) 圓柱部長度.為了使彈頭在線膛內(nèi)正確運動和轉(zhuǎn)動,圓柱部應(yīng)有一定的長度.若圓柱部過短則會影響彈頭在膛內(nèi)正確運動,使彈頭出槍口時章動角增大,甚至產(chǎn)生橫彈而降低射擊的密集度.
(4) 尾錐角.為了減小彈底的渦流阻力,通常將彈頭尾部制成截錐體,其尾錐角約為6°~9°.若尾錐角過大,則空氣附面層容易與彈尾分離,而產(chǎn)生渦流.
參數(shù)化建模[4]的總體設(shè)計思路(圖2)是指在Solidworks的零件設(shè)計中建立新的設(shè)計表,并設(shè)計出構(gòu)件要素所需要的對話框;通過點擊按鈕,調(diào)用程序,實現(xiàn)Solidworks用戶界面的功能響應(yīng);通過選擇構(gòu)件要素,依靠后臺程序生成所需要的設(shè)計模型.
圖2 總體設(shè)計思路
單擊工具欄上的【插入】、【新系列零件設(shè)計表】,一個嵌入的工作表會出現(xiàn)在窗口中,而且可用Excel工具欄替換Solidworks工具欄.
在PropertyManager中進行如下操作:在【來源】下選擇空白,以插入空白系列零件設(shè)計表;在【編輯控制】下選擇阻止,會更新系列零件設(shè)計表,但不允許更改模型;在【選項】下清除數(shù)據(jù)和新配置(這樣,對模型所做的任何更改將不更新系列零件設(shè)計表),此時,Excel工具欄會替換Solidworks工具欄.
在打開系列零件設(shè)計表[5]后,需要對其進行編輯.
(1) 在設(shè)計圖形區(qū)域雙擊某個尺寸而插入新的系列零件設(shè)計表之前,需確定所有必要尺寸都已顯示出來.單個尺寸插入新的系列零件設(shè)表后,將該尺寸【特征】和尺寸【草圖參數(shù)】插入單元格中.
(2) 在模型特征的單個面上雙擊左鍵,將【狀態(tài)】中【特征參數(shù)】插入單元格中.
(3) 在列A中輸入需要生成的配置名稱,但該名稱不能包含正斜線(/)或(@)字符.
(4) 在試算表單元格中輸入?yún)?shù),即可完成系列零件設(shè)計表的編輯.如需顯示由系列零件設(shè)計表添加的配置[6],就在單擊窗口底部的【ConfigurationManager】標簽后,雙擊該配置的名稱,或者用右鍵單擊該名稱并選擇顯示配置.彈頭的參數(shù)化配置如圖3所示.
圖3 彈頭的參數(shù)化配置
程序設(shè)計的主要任務(wù)是參數(shù)化建模,即通過程序編寫來實現(xiàn)所需要的模型特征.程序編寫的主要步驟分為:①獲取工作文檔;②拾取建模基準;③獲取草圖建模環(huán)境;④繪制草圖;⑤創(chuàng)建約束;⑥模型輸出及更新.彈頭的模型創(chuàng)建流程如圖4所示.
圖4 彈頭的模型創(chuàng)建流程
3.3.1 定制Solidworks界面
用戶自定義菜單所插入的位置可以用數(shù)字來表示.菜單插入的規(guī)則是:把Solidworks菜單從左往右排序并由0開始計數(shù).自定義菜單的位置在【插入】與【工具】之間.菜單插入的具體實現(xiàn)需要在函數(shù)中添加如下代碼:
//自定義菜單的插入位置
#define QD MenuPosition
//添加頂部彈出式菜單【3Dcaotu】
menu = win64ui.CreatePopupMenu()
submenu.AppendMenu(MF_3D,'Caotu')
//添加【3Dcaotu】下一級菜單
submenu.TrackPopupMenu(param[5],flag,self)
flag = TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON.
3.3.2 定制Solidworks工具欄
用戶可先繪制自定義工具欄按鈕的圖標,然后在函數(shù)中添加以下代碼:
class MenuForm(wx.Frame):
def OnQuit(self,event):
self.Close()
def OnOpen(self,event):
self.statusbar.SetStatusText('Open a File!').
函數(shù)中添加的代碼被加載成功后,彈頭三維實體模型(圖5)就可以生成了.
圖5 彈頭的三維實體模型
本文對槍彈彈頭設(shè)計流程進行討論,采用參數(shù)化建模技術(shù)的基本原理和方法,以Solidworks為平臺,利用Python編程語言對三維軟件Solidworks進行二次開發(fā),設(shè)計出簡單實用的槍彈彈頭參數(shù)化程序,基本實現(xiàn)了初期的設(shè)計目標,節(jié)省了人力和物力,為后期的槍彈彈頭設(shè)計奠定了基礎(chǔ).