朱英翔,陳 燕,余啟志
(上海工程技術(shù)大學(xué) 高等職業(yè)技術(shù)學(xué)院,上海 200437)
基于SolidWorks的焊件參數(shù)化自動(dòng)建模研究
朱英翔,陳 燕,余啟志
(上海工程技術(shù)大學(xué) 高等職業(yè)技術(shù)學(xué)院,上海 200437)
產(chǎn)品規(guī)格會(huì)因尺寸的改變而多樣化,這就導(dǎo)致三維建模過程中對(duì)同一類產(chǎn)品由于其規(guī)格變化而反復(fù)進(jìn)行設(shè)計(jì)。為了解決這一問題,應(yīng)用SolidWorks的API和軟件開發(fā)工具包進(jìn)行二次開發(fā)。以VisualStudio作為集成開發(fā)工具,C#語言作為開發(fā)環(huán)境,采用add-in組件并嵌入DLL動(dòng)態(tài)鏈接庫作為可執(zhí)行文件。然后以穩(wěn)定器的焊接結(jié)構(gòu)包裝架作為原型模型,基于該原型模型調(diào)用SolidWorks的API,自定義屬性管理器建立用戶交互操作。實(shí)例應(yīng)用表明,通過應(yīng)用該方法可高效地進(jìn)行產(chǎn)品的參數(shù)化設(shè)計(jì)和建模。
二次開發(fā); 自動(dòng)建模;SolidWorksAPI; 焊件
工程技術(shù)人員廣泛使用各種三維CAD軟件,這些軟件的應(yīng)用使得設(shè)計(jì)過程更加直觀[1]。但是,隨著社會(huì)分工越來越細(xì),一般的CAD軟件對(duì)于專門產(chǎn)品設(shè)計(jì)存在著重復(fù)建模、效率低下等問題。為了縮短設(shè)計(jì)繪圖的時(shí)間,針對(duì)三維CAD軟件的二次開發(fā)越來越受到青睞。這些開發(fā)大多利用三維CAD軟件提供開發(fā)接口,建立一個(gè)基本模型庫,基于尺寸的數(shù)字化驅(qū)動(dòng)得到不同規(guī)格的產(chǎn)品[2]。
近年來,在我國(guó)有很多學(xué)者論述了應(yīng)用SolidWorks實(shí)現(xiàn)參數(shù)化建模的方法,羅煜峰等人研究了SolidWorks的二次開發(fā)接口,在VC++編譯環(huán)境下開發(fā)了三維CAD文件的快速發(fā)布模塊,并將其通過動(dòng)態(tài)鏈接庫技術(shù)集成到SolidWorks軟件環(huán)境中[3]。彭波等人研究了應(yīng)用VisualBasic窗口應(yīng)用程序作為交互平臺(tái)的SolidWorksAPI參數(shù)化建模模塊[4]。關(guān)永軍闡述了應(yīng)用VisualBasic宏操作對(duì)SolidWorks的二次開發(fā),完成了基于參數(shù)輸入的快速建模,驗(yàn)證了其高效、準(zhǔn)確的設(shè)計(jì)意圖[5]。彭玉青等人利用VB.net程序和COM組件構(gòu)建了SolidWorks有關(guān)建筑組件的常用庫,這些部件可以被尺寸驅(qū)動(dòng)且以插件的形式嵌入模型內(nèi)[6]。
上述研究都沒有涉及屬性管理器。因此,本文運(yùn)用自定義屬性管理器的方式,利用C#語言編寫一個(gè)可執(zhí)行的DLL(動(dòng)態(tài)鏈接庫)文件,在不新建窗口的基礎(chǔ)上,僅通過樣板模型特征的屬性管理器頁面的尺寸參數(shù)設(shè)置,達(dá)到快速參數(shù)化建模的目的。這里的樣板模型以鉆具穩(wěn)定器包裝架的焊件實(shí)例形式呈現(xiàn)[7]。
1.1 開發(fā)環(huán)境的選擇
三維CAD軟件SolidWorks給使用者提供了專供二次開發(fā)的API(應(yīng)用程序接口),可以調(diào)用基于應(yīng)用的VisualBasic、VB.net、VisualC#、VisualC++6.0以及VisualC++/CLI等開發(fā)環(huán)境來實(shí)現(xiàn)API包含的功能[8]。本實(shí)例將采用VisualC#作為開發(fā)環(huán)境。C#作為.Net框架下面向?qū)ο蟮木幊陶Z言,它也支持SolidWorks宏。
1.2 二次開發(fā)環(huán)境構(gòu)建方法
第一種是獨(dú)立的計(jì)算機(jī)應(yīng)用程序。首先在VisualStudio中創(chuàng)建一個(gè)項(xiàng)目,該項(xiàng)目要添加外部引用,通過COM(組件對(duì)象模型)組件的形式在該項(xiàng)目中添加有關(guān)SolidWorks類型庫。然后,在Main方法中實(shí)例化SolidWorks項(xiàng)目,并編寫相關(guān)建模代碼和交互方式。最后,運(yùn)行并調(diào)試該項(xiàng)目,生成一個(gè).exe結(jié)尾的可執(zhí)行文件,從而可以視為是一個(gè)獨(dú)立的應(yīng)用程序。
第二種是嵌入一個(gè)add-in(加載項(xiàng))程序。SolidWorks提供了相應(yīng)的SDK(軟件開發(fā)工具包),在開發(fā)之前首先要在操作系統(tǒng)中安裝相應(yīng)版本的SolidWorksAPISDK。安裝成功SDK之后,再次啟動(dòng)VisualStudio,在新建的項(xiàng)目中就可以選擇SolidWorksadd-in項(xiàng)目模板SwCSharpAddin,自動(dòng)預(yù)生成一個(gè)C#項(xiàng)目,該項(xiàng)目的可執(zhí)行文件是以DLL形式嵌入建模軟件內(nèi)部的,在此基礎(chǔ)上編寫相關(guān)建模代碼和交互方式。
本文的設(shè)計(jì)是基于原型模型的參數(shù)化建模,所謂原型模型是指拓?fù)浣Y(jié)構(gòu)完全定義,尺寸參數(shù)由尺寸變量定義的一種CAD模型。為了實(shí)現(xiàn)高效的尺寸參數(shù)重新賦值和模型重建,采用add-in程序作為二次開發(fā)的手段[9]。其開發(fā)結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)開發(fā)結(jié)構(gòu)

圖2 鉆具穩(wěn)定器及包裝架實(shí)物圖
本文所舉例的三維模型是一個(gè)包裝架,它是一個(gè)由型材焊接而成的焊件。其實(shí)物如圖2所示,圖中包裝架內(nèi)部就是所承載的鉆具穩(wěn)定器。鉆具穩(wěn)定器作為石油開采工具,國(guó)家能源局標(biāo)準(zhǔn)SY/T5051-2009對(duì)此產(chǎn)品做了規(guī)范性指導(dǎo),由于該產(chǎn)品尺寸規(guī)格相差很多,其包裝架規(guī)格也就需要適應(yīng)這一點(diǎn)。本文以該焊件的參數(shù)化自動(dòng)建模作為例,其他基于原型的零件自動(dòng)化建模的過程亦可參考。
2.1 包裝架設(shè)計(jì)方案
圖3是標(biāo)準(zhǔn)中穩(wěn)定器主要尺寸的示意圖,圖中L2是工作長(zhǎng)度,D1是工作直徑,D2是鉆具連接外徑。先以標(biāo)準(zhǔn)中某一個(gè)規(guī)格鉆具穩(wěn)定器設(shè)計(jì)包裝架為例,其包裝架的尺寸就是默認(rèn)值,為了保證承載這里的樣板焊件,以最大的穩(wěn)定器包裝架進(jìn)行設(shè)計(jì)。包裝架全部由70×70×7的等邊角鋼焊接而成。

圖3 穩(wěn)定器主要尺寸的示意圖
其穩(wěn)定器軸向的支撐結(jié)構(gòu)視圖如圖4所示。

圖4 軸向的支撐結(jié)構(gòu)視圖
設(shè)計(jì)要求支架兩側(cè)留10mm空隙,支架底部留40mm空隙。根據(jù)幾何關(guān)系可得:
W=D1+160
H=D1+45
此外,包裝架的長(zhǎng)度取兩倍的穩(wěn)定器工作長(zhǎng)度(L2)。
2.2 樣板模型建模分析
建模基本步驟如下:(1)通過草圖和3D草圖以直線的命令繪制等邊角鋼所在位置;(2)利用焊件選項(xiàng)卡下的結(jié)構(gòu)構(gòu)件命令生成等邊角鋼模型;(3)剪裁、延伸兩端使支架成型。
建模完成之后,可以充分利用三維CAD軟件做結(jié)構(gòu)分析,判斷焊件是否達(dá)標(biāo)。本例應(yīng)用有限元方法做靜力學(xué)分析,仿真結(jié)果安全系數(shù)如圖5所示,最小安全系數(shù)為2.7,能夠滿足承載需求。由于樣板穩(wěn)定器焊件模型是按最大的穩(wěn)定器設(shè)計(jì)的,所以其余尺寸穩(wěn)定器包裝架亦能滿足強(qiáng)度要求。

圖5 有限元仿真靜應(yīng)力結(jié)果安全系數(shù)分布圖
3.1 基于API建模
為了更加快速地找到API的建模方法,可以借助宏操作。SolidWorks支持基于VSTA(VisualStudioToolsforApplications)C#的宏語句,可以通過宏的記錄操作來找需要的API方法。新建零件,點(diǎn)擊“錄制宏”并對(duì)包裝架重新建模,建模完成后點(diǎn)擊“停止宏”,選擇保存為SWVSTAC#Macro項(xiàng)目。通過點(diǎn)擊“編輯”命令打開保存的宏項(xiàng)目文件。此例主要用到的API方法如下:
繪制直線:ModelDoc@::SketchManager.CreateLine
繪制焊件結(jié)構(gòu)件:ModelDoc@::FeatureManager.InsertStructuralWeldment4
剪裁焊件:ModelDoc@::FeatureManager.EditRollback
系統(tǒng)內(nèi)加載SolidWorksAPISDK完畢后,在VisualStudio中就可以選擇新建SolidWorksadd-in項(xiàng)目,選擇該項(xiàng)目后自動(dòng)生成一個(gè)項(xiàng)目模板,根據(jù)項(xiàng)目模板自動(dòng)生成的類進(jìn)行編程。在建立樣板模型的時(shí)候,根據(jù)默認(rèn)的穩(wěn)定器參數(shù)值算出對(duì)應(yīng)的包裝架尺寸參數(shù),然后以這個(gè)參數(shù)作為包裝架設(shè)計(jì)依據(jù),調(diào)用繪制直線、繪制焊件結(jié)構(gòu)件、剪裁焊件等API方法,完成整個(gè)包裝架默認(rèn)尺寸的樣板模型的自動(dòng)建模。
3.2 參數(shù)化建模和尺寸賦值方法
參數(shù)化建模就是采用預(yù)定義的方法建立圖形的幾何約束集 ,指定一組尺寸作為參數(shù)與幾何約束集相關(guān)聯(lián),并將所有的關(guān)聯(lián)式融入到應(yīng)用程序中,然后采用人機(jī)交互方式即通過對(duì)話框修改參數(shù)尺寸,最終由程序根據(jù)這些參數(shù)順序地執(zhí)行表達(dá)式來實(shí)現(xiàn)的方法。
從上文中可知,包裝架的尺寸是由其所擺放的穩(wěn)定器的尺寸決定的,因此在參數(shù)化建模時(shí),可以直接用穩(wěn)定器的主要尺寸來驅(qū)動(dòng)包裝架的尺寸,這樣簡(jiǎn)化了設(shè)計(jì)的步驟,體現(xiàn)了CAD技術(shù)在設(shè)計(jì)中的功能,同時(shí)也提高了設(shè)計(jì)效率[10]。在C#工程文件中新建基于樣板模型建模的方法,該改方法利用穩(wěn)定器的尺寸驅(qū)動(dòng)包裝架的尺寸。其代碼段如下:
……
myFeature= ((Feature)(swDoc.FeatureManager.InsertWeldmentFeature()));
……
SketchSegmentskSegment=null;
skSegment= ((SketchSegment)(swDoc.SketchManager.CreateLine(w, 0, 0,w,l, 0)));//6個(gè)參數(shù)表明直線首末點(diǎn)的坐標(biāo)(X1,Y1,Z1,X2,Y2,Z2)
myFeature= ((Feature)(swDoc.FeatureManager.InsertStructuralWeldment4("C:ProgramFilesSOLIDWORKSCorpSOLIDWORKSlangchinese-simplifiedweldmentprof" +"ilesGBLAngle(equal)7X7.sldlfp",1,true,vGroups)));
……
由于包裝架的型材和剪裁方式不會(huì)隨規(guī)格尺寸變化而變化,因此改變包裝架規(guī)格尺寸在建模過程中也就是改變等邊角鋼所在的直線的位置和長(zhǎng)度。從API建模方法中可知,創(chuàng)建直線過程中,直線的位置是通過直線首末兩點(diǎn)的坐標(biāo)確定的,因此把包裝架尺寸參數(shù)先映射到等邊角鋼所在直線坐標(biāo)中,再把包裝架尺寸參數(shù)值由穩(wěn)定器基本尺寸值換算得出。通過定義一些雙精度浮點(diǎn)變量,來代替原本樣板模型中建模命令的一些常量。這樣便構(gòu)建了一個(gè)帶有參數(shù)的建模方法。
3.3 屬性管理器設(shè)計(jì)
完成了樣板模型的建模之后,還要以用戶輸入進(jìn)行尺寸進(jìn)行參數(shù)化建模,所有的參數(shù)在輸入時(shí)都需要用戶交互界面,用戶交互操作最好描述為控件創(chuàng)建和響應(yīng)的各種事件。常用的方法就是新建并設(shè)計(jì)一個(gè)窗體在窗體內(nèi)嵌入控件,通過對(duì)控件的操作完成參數(shù)的賦值。本次開發(fā)充分發(fā)揮SolidWorks屬性管理器的功能,所謂屬性管理器,就是用來記錄模型、裝配、工程圖中某一個(gè)結(jié)構(gòu)的特征參數(shù)的選項(xiàng)卡。在SolidWorksAPI中提供了自定義屬性管理器的開發(fā)接口。其構(gòu)建方法和窗體程序類似,可以把整個(gè)屬性管理器視為一個(gè)容器,在其中可以添加各種控件完成頁面設(shè)計(jì)。每一個(gè)控件都有一個(gè)ID,通過監(jiān)聽各種事件,判斷ID之后可以寫入相應(yīng)事件的響應(yīng)。
本例中需要完成的用戶交互操作就是輸入穩(wěn)定器主要尺寸,該尺寸是驅(qū)動(dòng)包裝架尺寸的,分別是工作長(zhǎng)度L2,鉆具直徑D2,工作直徑D1。通過SolidWorksAPI提供的方法自定義屬性管理器,首先是設(shè)計(jì)屬性管理器的界面,為了使得參數(shù)可視化效果更好,創(chuàng)建了三個(gè)組,給每個(gè)組都賦給相應(yīng)的名稱,在每組內(nèi)包含一個(gè)數(shù)字欄,這些數(shù)字欄就是對(duì)應(yīng)要修改的L2、D2,D1,默認(rèn)值是0 。此外還在每一個(gè)數(shù)字欄邊上添加尺寸種類枚舉,在長(zhǎng)度單位的枚舉項(xiàng)上改為毫米。最后的效果如圖6所示。

圖6 屬性管理器頁面設(shè)計(jì)
提供了交互界面之后,還需要為控件創(chuàng)建響應(yīng),因?yàn)樵趯傩怨芾砥髦杏凶詭У拇_定按鈕(√),不必再創(chuàng)建按鈕控件,通過點(diǎn)擊“確定”按鈕觸發(fā)重新建模的方法。其建模方法程序段如下:
publicvoidModifyModel(doublel2,doubled2,doubled1)
{
modDoc= (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.swDwgPaperA2size, 0.0, 0.0);
modDoc.SketchManager.InsertSketch(true);
w=d1+0.16;
h=d1+0.045;
h1=d1/2+0.707*d2+0.04;
l=2*l2;
modDoc.SketchManager.InsertSketch(true);
ArrayvGroups=null;
DispatchWrapper[]GroupArray=newDispatchWrapper[1];
StructuralMemberGroupGroup1 =null;
Group1 = ((StructuralMemberGroup)(swDoc.FeatureManager.CreateStructuralMemberGroup()));
……
Group1.Angle= 1.570796326795;
GroupArray[0] =newDispatchWrapper(Group1);
vGroups=GroupArray;
skSegment= ((SketchSegment)(swDoc.SketchManager.CreateLine(0, 0, 0, 0,l, 0)));
myFeature= ((Feature)(swDoc.FeatureManager.InsertStructuralWeldment4("C:ProgramFilesSOLIDWORKSCorpSOLIDWORKSlangchinese-simplifiedweldmentprof" +"ilesGBLAngle(equal)7X7.sldlfp",1,true,vGroups)));
skSegment= ((SketchSegment)(swDoc.SketchManager.CreateLine(w, 0, 0,w,l, 0)));
……
}
完成調(diào)試工作并生成相應(yīng)的.dll文件之后,打開SolidWorks軟件,點(diǎn)擊工具欄下拉菜單,在如圖7所示的界面中,就能建立樣板模型或者重新建立參數(shù)化的自定義模型。

圖7 add-in菜單欄
按圖6輸入所要求的參數(shù)后點(diǎn)擊確定按鈕(√),SolidWorks執(zhí)行重新建模方法,完成了基于參數(shù)化的自動(dòng)建模,其結(jié)果如圖8所示。通過實(shí)例展示,本文利用屬性管理器實(shí)現(xiàn)了產(chǎn)品的參數(shù)化自動(dòng)建模,從而避免了建模工作中的重復(fù)工作,整個(gè)建模過程更加快速直觀。

圖8 參數(shù)化建模模型(渲染后)
[1] 馮興路. 現(xiàn)代機(jī)械制造技術(shù)及其發(fā)展趨勢(shì)探討[J]. 山東工業(yè)技術(shù), 2016(1):233.
[2] 孫志洋, 仲梁維, 魯康東,等. 基于SolidWorks二次開發(fā)的立罐快速設(shè)計(jì)系統(tǒng)研究[J]. 通信電源技術(shù), 2015,32(6):64-66.
[3] 羅煜峰, 陳旭, 李元山.SolidWorks的三維CAD文件快速發(fā)布模塊的設(shè)計(jì)[J]. 圖學(xué)學(xué)報(bào), 2012, 33(5):94-98.
[4] 彭波, 楊岳, 蘇春模. 采用SolidWorksAPI的離心式葉輪參數(shù)化建模[J]. 圖學(xué)學(xué)報(bào), 2009, 30(5):1-7.
[5] 關(guān)永軍.SolidWorks的二次開發(fā)及應(yīng)用[J]. 科技創(chuàng)新導(dǎo)報(bào), 2012(14):28.
[6]PengYuqing,JingXie,WangXiaoyan.Researchandrealizationonarchitectural3Dmodelofarchitecturalprocesssimulationsystem[C].InternationalWorkshoponComputerScienceandEngineering,IEEE, 2009,1:543-547.
[7] 陳雨, 毛恩榮, 呂黃珍,等. 基于推理的大型收獲機(jī)械變速箱參數(shù)化設(shè)計(jì)[J]. 農(nóng)業(yè)機(jī)械學(xué)報(bào), 2013, 44(S2):278-282.
[8]NAGELC,EVJENB,GLYNNJ,等.C#高級(jí)編程(第7版)[M].李銘,譯.北京:清華大學(xué)出版社, 2010.
[9] 敖行, 江昊, 張迅. 一種CAD圖紙中WLAN器件連接關(guān)系的獲取方法[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2016,33(1):90-93.
[10] 彭澤軍. 基于UG/OPEN、C#的箱蓋模具快速設(shè)計(jì)系統(tǒng)研究[J]. 制造業(yè)自動(dòng)化, 2014(21):84-86.
Research on dense urban LTE network planning and designing
ZhuYingxiang,ChenYan,YuQizhi
(AdvancedVocationalTechnicalCollege,ShanghaiUniversityofEngineeringScience,Shanghai200437,China)
Inmodernproduction,thechangeofdimensioncanresultindiversificationofproductspecifications,whichwillresultinaprobleminreusability.Inthispaper,weuseSolidWorksAPIandsoftwaredevelopmentkitstodosecondarydevelopmentsoastodealwiththeproblem.TheintegratedevelopmenttoolisVisualStudiowithprogramminglanguageofC#,andadd-incomponentisadoptedtogenerateDLLasexecutablefile.Usingcustompropertymanagerpageinsteadofformstoreassigntheparameterandrebuildthemodel.Themodelisbasedonaweldedstructurewhichisastabilizerpackingframeasaprototypemodel,andAPIisusedtoachievetheeffectofmodularmodelingandparameteroperation.Exampleshowsthismethodisfeasibletoefficientparametricdesignandmodeling.
secondarydevelopment;modularmodeling;SolidWorksAPI;weldedstructure
TP
ADOI: 10.19358/j.issn.1674- 7720.2016.22.022
朱英翔,陳燕,余啟志. 基于SolidWorks的焊件參數(shù)化自動(dòng)建模研究[J].微型機(jī)與應(yīng)用,2016,35(22):84-87,91.
2016-07-19)
朱英翔(1989-),男,碩士,助教,主要研究方向:工程機(jī)械、遠(yuǎn)程控制。
陳燕(1980-),女,碩士,講師,主要研究方向:CAD/CAM。
余啟志(1979-)男,碩士,講師,主要研究方向:機(jī)械結(jié)構(gòu)及焊接強(qiáng)度分析。