袁 影, 孫付春, 楊 濤, 吳昌明, 甘露萍
(成都大學(xué) 機(jī)械工程學(xué)院, 四川 成都 610106)
基于SolidEdge二次開(kāi)發(fā)的工程圖智能生成系統(tǒng)
袁 影, 孫付春, 楊 濤, 吳昌明, 甘露萍
(成都大學(xué) 機(jī)械工程學(xué)院, 四川 成都 610106)
針對(duì)工程圖智能生成的問(wèn)題,提出一種基于SolidEdge平臺(tái)的智能生成零件明細(xì)表單、尺寸標(biāo)注、屬性填寫(xiě)以及技術(shù)要求的方法,搭建VB.NET系統(tǒng)開(kāi)發(fā)的總體框架,分析了系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù),實(shí)現(xiàn)了SolidEdge功能模塊的擴(kuò)展.以某醫(yī)療設(shè)備裝配為例,驗(yàn)證了工程圖智能生成的可行性.
SolidEdge二次開(kāi)發(fā);BOM表;尺寸標(biāo)注;VB.NET
工程圖作為機(jī)械從業(yè)人員的語(yǔ)言,其制作效率對(duì)整個(gè)制造業(yè)的發(fā)展有著重要的作用,工程圖質(zhì)量的高低直接影響著產(chǎn)品的質(zhì)量和產(chǎn)生廢品的概率.隨著計(jì)算機(jī)科學(xué)的不斷發(fā)展,越來(lái)越多的企業(yè)從原來(lái)的手工繪圖轉(zhuǎn)變?yōu)槭褂肁utoCAD繪圖,從二維轉(zhuǎn)到三維設(shè)計(jì),使得工程人員制作工程圖的錯(cuò)誤概率不斷降低.由于三維平臺(tái)具有可擴(kuò)展性強(qiáng)的特點(diǎn),研究者們?cè)诓煌娜S平臺(tái)上實(shí)現(xiàn)了對(duì)工程圖功能模塊的擴(kuò)展,并取得了大量的成果[1-6].目前,基于SolidEdge平臺(tái)進(jìn)行工程圖的開(kāi)發(fā)鮮有人涉足,而醫(yī)療病床設(shè)備帶作為醫(yī)院病床前必不可少的設(shè)備,其設(shè)計(jì)過(guò)程具有模塊化、標(biāo)準(zhǔn)化程度較高的特點(diǎn),設(shè)計(jì)人員會(huì)根據(jù)每個(gè)醫(yī)院房間大小不一和醫(yī)院自身要求不同來(lái)不斷重復(fù)設(shè)計(jì)和制作該設(shè)備.對(duì)此,本研究基于SolidEdge平臺(tái),以醫(yī)療病床設(shè)備帶為例,開(kāi)發(fā)了一套工程圖智能生成系統(tǒng).
系統(tǒng)以SolidEdge ST6為開(kāi)發(fā)平臺(tái),VB.NET作為開(kāi)發(fā)框架,在Visual Studio 2013開(kāi)發(fā)環(huán)境下,使用Windows應(yīng)用程序編程接口(Application Programming Interface,API)、SolidEdge API、Access數(shù)據(jù)庫(kù)和組件對(duì)象模型(Component Object Model,COM)技術(shù),實(shí)現(xiàn)了基于SolidEdge的工程圖智能生成系統(tǒng).
系統(tǒng)的工程流程如下:首先,系統(tǒng)進(jìn)入初始化階段,讀取Access數(shù)據(jù)庫(kù)中有關(guān)設(shè)備生成的參數(shù)設(shè)置到界面相應(yīng)的位置,根據(jù)設(shè)備需求設(shè)置關(guān)鍵尺寸,生成設(shè)備主體框架;隨后,系統(tǒng)進(jìn)入模塊化配置環(huán)節(jié),將設(shè)備中需要配置的模塊以自動(dòng)的方式加載到裝配相應(yīng)位置,保存位置數(shù)據(jù)等信息,為二維圖尺寸標(biāo)注做準(zhǔn)備;整個(gè)裝配生成后,系統(tǒng)進(jìn)入裝配圖生成環(huán)節(jié),完成視圖、零件明細(xì)表單(Bill of material,BOM)、裝配尺寸、工程圖屬性、技術(shù)要求等工藝信息的生成.系統(tǒng)的流程圖如圖1所示.

圖1 系統(tǒng)的工程流程圖
由于模塊化配置過(guò)程主要為工程圖自動(dòng)生成提供數(shù)據(jù),因此本研究主要分析工程圖自動(dòng)生成模塊.
系統(tǒng)實(shí)現(xiàn)的關(guān)鍵在于:通過(guò)COM技術(shù),建立Visual Studio 2013與SolidEdge間的通信與關(guān)聯(lián),再以API對(duì)SolidEdge進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)SolidEdge平臺(tái)下的工程圖工藝信息的智能生成.
2.1 SolidEdge二次開(kāi)發(fā)
為滿足不同用戶需求的定制和開(kāi)發(fā),SolidEdge提供了可供用戶自定義開(kāi)發(fā)API函數(shù)庫(kù),實(shí)現(xiàn)對(duì)SolidEdge對(duì)象的訪問(wèn)與控制.API接口包含了SolidEdge開(kāi)發(fā)中使用到的所有類(lèi),其采用的面向?qū)ο蠹夹g(shù)的方法,在SolidEdge之下是表示應(yīng)用程序各種模型的事件、屬性和方法,其對(duì)象框架圖如圖2所示.Visual Studio 2013 VB.NET工程通過(guò)COM技術(shù)調(diào)用SolidEdge API函數(shù),可以完成某些特定功能,實(shí)現(xiàn)自動(dòng)化.

圖2 SolidEdge對(duì)象框架圖
2.2 VB.NET與SolidEdge的連接
建立VB.NET與SolidEdge相關(guān)聯(lián)的系統(tǒng)開(kāi)發(fā)項(xiàng)目工程主要方式為,通過(guò)Visual Studio 2013創(chuàng)建VB.NET的集成開(kāi)發(fā)環(huán)境.完成創(chuàng)建后,在工程項(xiàng)目中引用連接SolidEdge的COM組件(見(jiàn)圖3),并在系

圖3 COM組件引用圖
統(tǒng)函數(shù)中加入如下代碼,即可創(chuàng)建VB.NET與SolidEdge間的關(guān)聯(lián).其關(guān)聯(lián)代碼為:
Dim objApplication As SolidEdgeFramework.Application=Nothing
Dim objAssemblyDocument As SolidEdgeAssembly.AssemblyDocu-
ment=Nothing
On Error Resume Next
objApplication=GetObject(,″SolidEdge.Application″)’獲取Solid-
Edge對(duì)象
If Err.Number 〈〉 0 Then '不成功,打開(kāi)SolidEdge
Err.Clear()
objApplication=CreateObject(″SolidEdge.Application″)
objAssemblyDocument=objApplication.Documents.'創(chuàng)建文檔
Add(″SolidEdge.AssemblyDocument″)
objApplication.Visible=True 'SolidEdge窗口顯示
Else '打開(kāi)成功,獲取SolidEdge活動(dòng)文檔
objAssemblyDocument=objApplication.ActiveDocument
End If
2.3 BOM表單自動(dòng)生成
BOM表單又稱(chēng)零件明細(xì)表,其在裝配圖的制作中占有重要的比重.傳統(tǒng)的裝配圖采用CAD直接繪制,在三視圖上會(huì)花費(fèi)大量時(shí)間.隨著三維軟件的快速發(fā)展,當(dāng)前裝配圖的制作主要時(shí)間花費(fèi)為BOM表單的制作,而三視圖的表達(dá)只需通過(guò)軟件就可自動(dòng)完成.因此,在三維平臺(tái)上實(shí)現(xiàn)BOM表單的自動(dòng)生成,將大大提高設(shè)計(jì)效率.
基于SolidEdge實(shí)現(xiàn)的BOM表單自動(dòng)生成功能模塊,其實(shí)現(xiàn)方式為:當(dāng)用戶點(diǎn)擊生成工程圖時(shí),系統(tǒng)遍歷整個(gè)三維裝配樹(shù),將裝配樹(shù)中所有零件屬性讀取并存儲(chǔ)在內(nèi)存中,創(chuàng)建標(biāo)準(zhǔn)BOM表頭結(jié)構(gòu)的表格,將當(dāng)前所獲取的信息按格式自動(dòng)寫(xiě)入表格中.有時(shí),某些虛擬值并未在裝配樹(shù)中體現(xiàn),對(duì)此,本研究設(shè)計(jì)了對(duì)BOM表單的增加、修改與刪除功能,其核心代碼如下:
1)BOM表單創(chuàng)建.
objDraftDocument=objApp.ActiveDocument'SolidEdge工程圖活
動(dòng)文檔
objSheets=objDraftDocument.Sheets'SolidEdge工程圖頁(yè)
objSheet=objDraftDocument.Sheets.Item(1)'SolidEdge工程圖打
開(kāi)的頁(yè)
objDrawingViews=objSheet.DrawingViews'SolidEdge工程圖繪制
視圖
objDrawingView=objDrawingViews.Item(1)'SolidEdge工程圖主
視圖
objDrawingView.DisplayBreakLinesInBrokenState=False'視圖連接
屬性狀態(tài)
objPartsLists=objDraftDocument.PartsLists'SolidEdge工程圖零件
明細(xì)表'以主視圖創(chuàng)建零件明細(xì)表
objPartsList=objPartsLists.AddEx(objDrawingView,1,″″,1,10)
2)BOM表單增加.
objTables=objDoc.Tables'SolidEdge工程圖表單總數(shù)對(duì)象
objTable=objTables.Item(1)'SolidEdge工程圖BOM表對(duì)象
objTable.Rows.Add(1,False)'新增一行
objTable.Update()'BOM表單更新
3)BOM表單修改.
objTableCell=objTable.Cell(1,1)'BOM表單第1行第1列表格對(duì)象
objTableCell.value=1'設(shè)置該表格的值為1
4)BOM表單刪除.
objTable.Rows.Item(1).Delete()'刪除1行
objTable2.Update()
2.4 尺寸標(biāo)注自動(dòng)生成
完成裝配視圖和BOM表的自動(dòng)生成后,系統(tǒng)實(shí)現(xiàn)了對(duì)裝配視圖關(guān)鍵尺寸的自動(dòng)生成.實(shí)現(xiàn)方式為:獲取當(dāng)前裝配圖中的配合關(guān)系,在關(guān)鍵部位創(chuàng)建點(diǎn),并調(diào)用尺寸標(biāo)準(zhǔn)API將兩點(diǎn)聯(lián)系起來(lái),實(shí)現(xiàn)尺寸的自動(dòng)標(biāo)準(zhǔn),其核心代碼如下:
Dim objPoint1 As SolidEdgeFrameworkSupport.Point2d
Dim objPoint2 As SolidEdgeFrameworkSupport.Point2d
Dim objDimStyles As SolidEdgeFrameworkSupport.DimensionStyles
Dim objDimGBStyle As SolidEdgeFrameworkSupport.DimensionStyle
Dim objDimScale As SolidEdgeFrameworkSupport.DimStyle
objSheet.DrawingViews.Item(1).GetOrigin(ViewCenterPointInfo.x,
ViewCenterPointInfo.y)'獲取主視圖中點(diǎn)坐標(biāo)
objPoint1=objSheet.Points2d.Add(ViewCenterPointInfo.x,
ViewCenterPointInfo.y)'中點(diǎn)處創(chuàng)建點(diǎn)
objPoint2=objSheet.Points2d.Add(ViewCenterPointInfo.x,y)'右
邊界創(chuàng)建點(diǎn)
objSheet.Dimensions.AddDistanceBetweenObjects(objPoint1,0.55,
0.55,0,False,objPoint2,0,0,0,False)'創(chuàng)建兩點(diǎn)間的尺寸
objSheet.Dimensions.Item(i).Style.DimensionScaleMode=0'設(shè)置
尺寸風(fēng)格
2.5 屬性及技術(shù)要求自動(dòng)生成
屬性及技術(shù)要求是工程圖中關(guān)鍵的工藝信息.其自動(dòng)生成功能的實(shí)現(xiàn),主要是系統(tǒng)自動(dòng)捕獲屬性或設(shè)計(jì)人員自動(dòng)填寫(xiě)系統(tǒng)界面,系統(tǒng)獲取信息并在指定位置創(chuàng)建文本,再將所獲取的信息設(shè)置到文本中,完成整個(gè)過(guò)程.其實(shí)現(xiàn)方式如下:
Dim objSheet As SolidEdgeDraft.Sheet=Nothing
Dim objTextBoxs As SolidEdgeFrameworkSupport.TextBoxes=Nothing
Dim objTextBox As SolidEdgeFrameworkSupport.TextBox=Nothing
objSheet=objDoc.ActiveSheet
objTextBoxs=objSheet.TextBoxes'獲取文本框?qū)ο?/p>
objTextBox=objTextBoxs.Add(x1:=0.226,y1:=0.274,z1:=
0)'指定位置創(chuàng)建文本框
TextString=″技術(shù)要求″+Chr(10)'寫(xiě)入文本框的內(nèi)容
objTextBox.Text=TextString'寫(xiě)入
objTextBox.TextControlType=SolidEdgeFrameworkSupport.'文本框
格式
TextControlTypeConstants.igTextWrap
技術(shù)要求與屬性的實(shí)現(xiàn)方式相似,只是文本框創(chuàng)建的位置不同.
本研究所設(shè)計(jì)系統(tǒng)的測(cè)試以病床設(shè)備帶產(chǎn)品為例,實(shí)現(xiàn)了智能生成病床設(shè)備帶裝配圖,裝配圖中包含了BOM表單、裝配尺寸、工程圖屬性和技術(shù)要求.其主要實(shí)施步驟為:
1)系統(tǒng)開(kāi)始,進(jìn)入病床設(shè)備帶設(shè)計(jì)系統(tǒng)主窗口.系統(tǒng)初始化時(shí),首先連接指定目錄下的Access數(shù)據(jù)庫(kù)中設(shè)備帶代號(hào)表單,更新主窗口中設(shè)備帶代號(hào)下拉框選項(xiàng).設(shè)計(jì)人員編輯好當(dāng)前需創(chuàng)建的設(shè)備帶整體布局參數(shù),點(diǎn)擊“創(chuàng)建設(shè)備帶布局”按鈕,系統(tǒng)進(jìn)入設(shè)置設(shè)備帶長(zhǎng)度對(duì)話框.點(diǎn)擊“確定”,完成布局創(chuàng)建,其結(jié)果如圖4所示.

圖4 系統(tǒng)三維框架測(cè)試圖
2)完成病床設(shè)備帶整體布局后,系統(tǒng)進(jìn)入“設(shè)備帶配置選型設(shè)計(jì)”選項(xiàng)卡.該功能模塊根據(jù)設(shè)計(jì)人員需要,完成將設(shè)備帶中需配置的各功能件加入到指定位置的整體布局裝配中.配置完成后,點(diǎn)擊“移動(dòng)復(fù)制”按鈕,生成最終的三維裝配模型,如圖5所示.

圖5 系統(tǒng)整體布局測(cè)試圖
3)完成三維裝配模型,系統(tǒng)進(jìn)入“工程圖自動(dòng)生成”選項(xiàng)卡.該功能模塊是本研究的核心.設(shè)計(jì)人員填寫(xiě)好工程圖相關(guān)名稱(chēng)、代碼等屬性,點(diǎn)擊“計(jì)算虛擬值”按鈕.系統(tǒng)自動(dòng)計(jì)算裝配圖中各功能件的個(gè)數(shù)、電線長(zhǎng)度、接線盒數(shù)、終端數(shù)量、螺釘數(shù)量與管道長(zhǎng)度等.點(diǎn)擊“生成工程圖”按鈕,系統(tǒng)調(diào)用工程圖模板,完成主視圖和BOM表單的自動(dòng)創(chuàng)建.BOM表單中的零件名稱(chēng)、代號(hào)均從零件自身屬性中獲取,而其數(shù)量為計(jì)算所得.最后完成主視圖關(guān)鍵尺寸、技術(shù)要求及工程圖屬性生成,結(jié)果如圖6所示.

圖6 系統(tǒng)工程圖自動(dòng)生成測(cè)試圖
本研究對(duì)基于SolidEdge工程圖工藝信息的智能生成進(jìn)行了深入探討,實(shí)現(xiàn)了對(duì)SolidEdge平臺(tái)功能的擴(kuò)展.在SolidEdge平臺(tái)環(huán)境下利用SolidEdge的二次開(kāi)發(fā)功能,應(yīng)用Access數(shù)據(jù)庫(kù)、VB.NET以及SolidEdge API編程實(shí)現(xiàn)了自動(dòng)化.本研究直接將整套設(shè)備的設(shè)計(jì)經(jīng)驗(yàn)以軟件的方式寫(xiě)入數(shù)據(jù)庫(kù),完成了從無(wú)到有的快速設(shè)計(jì),實(shí)現(xiàn)了工程圖的快速生成,減少了出錯(cuò)概率,大大提高了工作效率.
[1]劉鶇根,張鐵,王小強(qiáng).基于SolidEdge采用Visual Basic開(kāi)發(fā)塑料模標(biāo)準(zhǔn)件庫(kù)[J].模具工業(yè),2006,32(5):15-19.
[2]常選倉(cāng),殷國(guó)富,尹洋,等.基于SolidEdge的機(jī)床高速主軸數(shù)字化設(shè)計(jì)系統(tǒng)研究[J].機(jī)械設(shè)計(jì)與制造,2008,46(5):58-61.
[3]葉斌,劉向農(nóng),江斌,等.基于VB的SolidEdge變量化設(shè)計(jì)在換熱器設(shè)計(jì)中的應(yīng)用[J].低溫與超導(dǎo),2011,39(9):47-52.
[4]陳洋,管殿柱,何西陽(yáng),等.基于SolidWorks的蝸輪蝸桿設(shè)計(jì)系統(tǒng)研究[J].青島大學(xué)學(xué)報(bào)(工程技術(shù)版),2016,31(1):115-119.
[5]張超,廖敦明,賀云峰,等.基于UG的汽車(chē)管路自動(dòng)化彎曲胎具CAD二次開(kāi)發(fā)[J].模具工業(yè),2016,42(3):1-5,9.[6]杭祖權(quán).基于Pro/E二次開(kāi)發(fā)的自動(dòng)裝配技術(shù)[J].軍民兩用技術(shù)與產(chǎn)品,2016,29(3):57-58,62.
Intelligent Generating System of Engineering Drawing Based on SolidEdge Secondary Development
YUANYing,SUNFuchun,YANGTao,WUChangming,GANLuping
(School of Mechanical Engineering, Chengdu University, Chengdu 610106, China)
Aiming at the intelligent generating problems in engineering drawing,the paper puts forward an intelligent generating BOM form,size marking,attribute requests and technical requirements based to SolidEdge.The overall framework of VB.NET system development is built,and the key techniques for the system implementation are analyzed.Therefore,the extension of the function module of SolidEdge is realized.A medical equipment assembly is taken as an example,which is used to prove the feasibility of the intelligent generating method of engineering drawing.
SolidEdge;secondary development;BOM form;dimension marking;VB.NET
1004-5422(2017)01-0085-04
2016-10-08.
四川省教育廳自然科學(xué)基金(16ZA0382)資助項(xiàng)目.
袁 影(1993 — ), 男, 碩士研究生, 從事機(jī)械制造與設(shè)計(jì)CAD/CAM/CAE技術(shù)研究.
TH164;TP391.72
A