韋文龍 仲梁維 陳彩鳳
摘 要:干涉檢查與產(chǎn)品設(shè)計研發(fā)質(zhì)量有著密切聯(lián)系,無論是在組合件裝配體或模型的設(shè)計生產(chǎn)過程中,都可能避免不了裝配體中存在干涉的情況。因此,為快速偵測出存在干涉的位置,進(jìn)而快速修正干涉現(xiàn)象,干涉檢查成為設(shè)計人員在建模過程中必不可少的工作。為了在建模裝配過程中給設(shè)計人員提供高效、便捷的干涉檢查方式,以VB.NET作為編程設(shè)計平臺,結(jié)合SQL Server數(shù)據(jù)庫相關(guān)知識,利用SolidWorks為軟件開發(fā)平臺,以棱形結(jié)構(gòu)的千斤頂為研究對象,開發(fā)了一套動態(tài)干涉檢查系統(tǒng)。該系統(tǒng)通過人機交互界面,可實現(xiàn)零部件間動態(tài)干涉的快速檢查,從而顯著提升設(shè)計效率和產(chǎn)品質(zhì)量。
關(guān)鍵詞:動態(tài)干涉檢查;SolidWorks;VB.NET;千斤頂
DOI:10.11907/rjdk.172609
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2018)004-0144-04
Abstract:Interference check is closely related to the quality of product design, research and development. Interference check exists both in component assembly, model design and manufacuring. Therefore it is indispensable for designers to set up models in interference check and necessary and essential to detect interference loaction rapidly so as to achieve rapid detection. In order to provide designers with an efficient and convenient interference check during the modeling and assembly process, we develop a dynamic interference system in which VB.NET is used as the programming design platform and SolidWorks 2016 as the software development platform, and relevant knowledge of SQL Server database is combined to research on prismatic structure lifting jack through human-computer interaction. Rapid inspection of dynamic interference between parts and components is then realized to significantly improve design efficiency and product quality.
Key Words:dynamic interference checking; SolidWorks; VB.NET; lifting jack
0 引言
在經(jīng)濟全球化背景下,企業(yè)面臨的競爭越來越激烈,設(shè)計的產(chǎn)品不僅要滿足客戶要求,還要保證產(chǎn)品安全可靠。為此引進(jìn)計算機輔助軟件[1],并結(jié)合相關(guān)編程語言對其進(jìn)行二次開發(fā),使產(chǎn)品的設(shè)計和開發(fā)朝著智能化、信息化、快速化的方向發(fā)展,從而極大地節(jié)約了開發(fā)成本和設(shè)計時間,增強了企業(yè)競爭力。
產(chǎn)品在設(shè)計和研發(fā)過程中,通常會存在干涉現(xiàn)象。因此,如何快速偵測出干涉,并對其進(jìn)行有效判斷與快速修正,變得極其重要。本文基于SolidWorks二次開發(fā)平臺,以能上下升降的千斤頂為研究對象,設(shè)計出能夠?qū)崿F(xiàn)動態(tài)干涉檢查的功能系統(tǒng),對設(shè)計人員快速設(shè)計出高質(zhì)量的產(chǎn)品具有積極作用。
1 SolidWorks二次開發(fā)原理
SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM集成系統(tǒng),集設(shè)計、分析、加工與數(shù)據(jù)管理于一體。而SolidWorks API是SolidWorks的OLE應(yīng)用程序開發(fā)接口,用戶可以利用它并通過支持OLE編程的開發(fā)工具,如VB、VBA、C等對其進(jìn)行二次開發(fā)[2]。
圖1為SolidWorks的對象模型層次結(jié)構(gòu),是一個自上而下的樹型結(jié)構(gòu)。
SolidWorks的OLE對象總共可分為10大類,幾乎涵蓋了所有操作,如建模、修改等基本功能,任何支持OLE和COM的編程語言都可作為SolidWorks的開發(fā)工具[3]。SolidWorks二次開發(fā)分為兩種,一種是基于自動化的,此技術(shù)只能開發(fā)EXE形式的程序;另一種是基于COM的,將程序內(nèi)容以DLL插件形式嵌入到SolidWorks菜單欄中。本文以編程語言VB為開發(fā)工具[4],采用基于COM的開發(fā)方式,通過編程語言訪問這些API對象,可以輕松向SolidWorks發(fā)出操作指令,令其執(zhí)行特定動作,從而快速建立適合用戶需要的功能模塊。
2 裝配動態(tài)干涉檢查系統(tǒng)
2.1 SolidWorks干涉檢查
SolidWorks對于干涉檢查部分,無論是組合件或零部件于靜態(tài)、動態(tài)環(huán)境下都能快速進(jìn)行干涉檢測,且系統(tǒng)會立即以警示窗口提示存在的干涉情況,從而實現(xiàn)快速修正模型的全方位設(shè)計功能。
2.2 動態(tài)干涉檢查系統(tǒng)簡介
為解決裝配體干涉問題,以編程語言VB開發(fā)了一套簡易的動態(tài)干涉檢查系統(tǒng),可為用戶提供便捷的動態(tài)干涉檢查功能模塊[5]。通過調(diào)用SolidWorks API,實現(xiàn)了VB與SolidWorks的連接,并通過參數(shù)化設(shè)計實現(xiàn)動態(tài)干涉檢查,最后利用SQI. Server數(shù)據(jù)庫讀取數(shù)據(jù)[6],將檢查結(jié)果以Excel表格形式導(dǎo)出,使用戶可從“干涉檢查表”中讀取到干涉的詳細(xì)信息。
本系統(tǒng)所使用的“動態(tài)干涉檢查”不同于SolidWorks自帶的“動態(tài)干涉檢查”,主要體現(xiàn)在本方式結(jié)合了“靜態(tài)干涉”和零部件“位移”的關(guān)系,通過程序控制,使零部件位移到指定位置,分別在不同位置進(jìn)行干涉檢查,并實現(xiàn)了每位移一段距離進(jìn)行一次干涉檢查的功能。該系統(tǒng)不僅提高了開發(fā)人員的設(shè)計效率,還提升了產(chǎn)品開發(fā)質(zhì)量。
2.3 系統(tǒng)設(shè)計開發(fā)過程
利用編程語言VB開發(fā)基于SolidWorks的“動態(tài)干涉檢查”功能模塊,大致分為兩個階段:第一階段是可視化設(shè)計,可利用VB.NET工具箱對界面進(jìn)行設(shè)計,然后通過SolidWorks SDK,在VB與SolidWorks之間建立一座聯(lián)系的橋梁,使系統(tǒng)嵌入SolidWorks插件菜單中[7];第二階段是代碼編寫,可通過VB編程語言和API實現(xiàn)。系統(tǒng)開發(fā)流程如圖2所示。
3 動態(tài)干涉檢查系統(tǒng)應(yīng)用
3.1 裝配體選擇
“干涉檢查”作為一個功能模塊,需要對一個具體模型進(jìn)行識別和操作。因此,需要以一個能進(jìn)行“位移”的裝配體為研究對象。該模型至少包含兩個零部件,并且在運行時要求至少選擇兩個零部件。結(jié)合日常生活中的機械設(shè)備,本文選擇的對象是“千斤頂”,其不僅用途廣泛,對加工精度要求也很高,最重要的是其工作方式是上下移動的,滿足了本系統(tǒng)開發(fā)的基本要求。
3.2 交互式系統(tǒng)界面設(shè)計與操作
3.2.1 系統(tǒng)用戶界面
用戶界面是系統(tǒng)的重要部分,主要由啟動模型、位移、干涉檢查等按鈕組成。功能模塊則包括兩種檢查方式,一種是“手動式”動態(tài)干涉檢查,另一種是“自動式”動態(tài)干涉檢查。
3.2.2 系統(tǒng)基本操作流程
“手動式”:輸入“高度值H”,點擊“位移”按鈕,此時系統(tǒng)檢測輸入的數(shù)值是否符合設(shè)計要求,如不符合,會提醒用戶再次輸入,如果符合,模型會位移到指定高度;然后點擊“干涉檢查”開始檢查,結(jié)果以Excel表格形式輸出,本次檢查結(jié)束;再輸入新的“高度值H”,可進(jìn)行下一次檢查,從而實現(xiàn)裝配體在不同位置的干涉檢查。
“自動式”:本方式更加智能化與參數(shù)化[8],只需分別輸入“間隔距離D”和“檢查次數(shù)N”,點擊“一鍵檢查”,如果數(shù)值符合要求,則開始“動態(tài)干涉檢查”,最后得到裝配體在N個位置的干涉檢查結(jié)果。
動態(tài)干涉檢查系統(tǒng)運行流程如圖4所示。
3.3 動態(tài)干涉檢查系統(tǒng)實現(xiàn)
在復(fù)雜裝配體中,僅依靠視覺判斷裝配體是否存在干涉十分困難,以VB作為編程設(shè)計平臺,依靠API即可實現(xiàn)干涉檢查。本系統(tǒng)的“動態(tài)干涉檢查”是指將“干涉檢查”與“位移”結(jié)合起來,即在程序中加上一個循環(huán)語句,通過調(diào)整間隔距離和檢查次數(shù),便可實現(xiàn)模型的自動位移和干涉檢查。
(1)啟動模型。打開SolidWorks,進(jìn)入系統(tǒng)操作界面[9],在進(jìn)行干涉檢查前,需要先打開某一裝配體,具體程序如下:
SwApp=CreateObject("sldworks.application")
part=SwApp.OpenDoc("路徑.SLDASM",2,0,"",longstatus,longwarnings)
SwApp.ActivateDoc("模型名稱.SLDASM",F(xiàn)alse,longstatus)
part=SwApp.ActiveDoc
(2)位移。由于實現(xiàn)“動態(tài)干涉檢查”的基本要求是使零部件動起來,并且不能破壞零部件的裝配關(guān)系,利用基準(zhǔn)面的配合關(guān)系,不僅能使零部件動起來,還能設(shè)置其位移距離,主要代碼如下:
part.EditUnsuppress()
boolstatus=part.Extension.SelectByID2("基準(zhǔn)面","PLANE",0,0,0,F(xiàn)alse,0,Nothing,0)
part.ActivateSelectedFeature()
……
myDimension=part.Parameter("D1@基準(zhǔn)面")
myDimension.SystemValue=Val(310-TextBox3.Text*(O-1))/1000
boolstatus=part.EditRebuild3()
其中,myDimension是關(guān)于位移距離的變量,在全局加一個循環(huán)語句,通過該變量的賦值,可使模型依次位移到指定位置。
(3)進(jìn)行動態(tài)干涉檢查,通過調(diào)用API函數(shù),實現(xiàn)了“干涉檢查”功能,主要程序如下:
nSelCount=swSelMgr.GetSelectedObjectCount
ReDimCompArray(nSelCount-1)
vCompArray=CompArray
swAssy.ToolsCheckInterference2(nSelCount,(vCompArray),F(xiàn)alse,vIntCompArray,vIntFaceArray)
If (IsNothing(vIntCompArray)) And (IsNothing(vIntFaceArray))
其中If (IsNothing(vIntCompArray)) And (IsNothing(vIntFaceArray))的作用是判斷是否存在干涉,swAssy.ToolsCheckInterference2是進(jìn)行干涉檢查的關(guān)鍵代碼。在模型中的運行效果如圖5所示。
(4)使存在干涉的部分高亮顯示,代碼如下:
……
swFace.Highlight(True)
bRet=swEnt.Select2(True,0)
Next i
For i=0 To UBound(vIntCompArray)
swComp=vIntCompArray(i)
bRet=swComp.Select2(True,0)
Next i
(5)詳細(xì)干涉結(jié)果。通過以下代碼可得到干涉結(jié)果詳細(xì)信息:
pIntMgr=swAssemblyDoc.InterferenceDetectionManager
……
pIntMgr.CreateFastenersFolder=True
pIntMgr.IgnoreHiddenBodies=True
pIntMgr.UseTransform=True
pIntMgr.NonInterferingComponentDisplay=value
vInts=pIntMgr.GetInterferences
ret=pIntMgr.GetComponentsAndTransforms(vComps,vTrans)
……
vComps=interference.Components
swApp.SendMsgToUser("干涉序數(shù):"&(i+1)&"干涉的組件個數(shù):共"&interference.GetComponentCount;&"個"&"干涉的總面積:"&(V)&"mm^3")
pIntMgr.Done()
3.4 數(shù)據(jù)庫應(yīng)用
在查看干涉結(jié)果的方式上,最先采用的是彈窗形式[10],后來考慮到操作的簡便性,以SQL Server提供數(shù)據(jù)支持,加上程序識別的干涉信息,最后以Excel表格形式列出干涉結(jié)果,不僅可一目了然地查看結(jié)果,還有利于數(shù)據(jù)存儲。干涉檢查表樣式如圖6所示。
4 結(jié)語
本文以千斤頂為研究對象,以SolidWorks軟件為開發(fā)平臺,以VB為編程語言對SolidWorks進(jìn)行二次開發(fā),研發(fā)出一套動態(tài)干涉檢查系統(tǒng),不僅可為開發(fā)類似功能的系統(tǒng)提供參考,也為企業(yè)未來在虛擬裝配領(lǐng)域的二次開發(fā)奠定基礎(chǔ)。本系統(tǒng)功能的實現(xiàn),不僅提高了開發(fā)人員設(shè)計效率,避免時間花費大量時間重新設(shè)計及建構(gòu)原型,降低了公司的人力與時間成本,同時提升了產(chǎn)品質(zhì)量和企業(yè)競爭力。
參考文獻(xiàn):
[1] 湛迪強,孔杰.SolidWorks 2014快速入門、進(jìn)階與精通[M].北京:電子工業(yè)出版社,2014.
[2] 江洪,李仲興,邢啟恩.SolidWorks2003二次開發(fā)基礎(chǔ)與實例教程[M].北京:電子工業(yè)出版社,2003.
[3] 陳超祥,胡啟登.SolidWorks高級教程簡編[M].北京:機械工業(yè)出版社,2015.
[4] 林卓然.VB語言程序設(shè)計[M].北京:電子工業(yè)出版社,2012.
[5] 錢海軍.Visual Basic項目案例開發(fā)實戰(zhàn)[M].北京:清華大學(xué)出版社,2016.
[6] 張昊,高晶.SQL Server 2008數(shù)據(jù)庫原理及應(yīng)用教程[M].北京:清華大學(xué)出版社,2016.
[7] 鮑東,仲梁維.利用參數(shù)化設(shè)計技術(shù)的起重機快速設(shè)計研究[J].現(xiàn)代制造工程,2014(1):2-4.
[8] 張峰,李前兆,黃傳真.參數(shù)化設(shè)計的研究現(xiàn)狀與發(fā)展趨勢[J].機械工程師,2002(1):13-15.
[9] 沈斌,宮大.產(chǎn)品廣義參數(shù)化設(shè)計的研究[J].計算機工程與應(yīng)用,2006,31(1):94-96.
[10] 孫毅.對稱驅(qū)動剪式升降平臺設(shè)計及研究[D].昆明:昆明理工大學(xué),2012.
(責(zé)任編輯:黃 ?。?/p>