朱英翔,陳 燕,余啟志
(上海工程技術(shù)大學 高等職業(yè)技術(shù)學院,上海 200437)
基于SolidWorks的焊件參數(shù)化自動建模研究
朱英翔,陳 燕,余啟志
(上海工程技術(shù)大學 高等職業(yè)技術(shù)學院,上海 200437)
產(chǎn)品規(guī)格會因尺寸的改變而多樣化,這就導致三維建模過程中對同一類產(chǎn)品由于其規(guī)格變化而反復進行設計。為了解決這一問題,應用SolidWorks的API和軟件開發(fā)工具包進行二次開發(fā)。以VisualStudio作為集成開發(fā)工具,C#語言作為開發(fā)環(huán)境,采用add-in組件并嵌入DLL動態(tài)鏈接庫作為可執(zhí)行文件。然后以穩(wěn)定器的焊接結(jié)構(gòu)包裝架作為原型模型,基于該原型模型調(diào)用SolidWorks的API,自定義屬性管理器建立用戶交互操作。實例應用表明,通過應用該方法可高效地進行產(chǎn)品的參數(shù)化設計和建模。
二次開發(fā); 自動建模;SolidWorksAPI; 焊件
工程技術(shù)人員廣泛使用各種三維CAD軟件,這些軟件的應用使得設計過程更加直觀[1]。但是,隨著社會分工越來越細,一般的CAD軟件對于專門產(chǎn)品設計存在著重復建模、效率低下等問題。為了縮短設計繪圖的時間,針對三維CAD軟件的二次開發(fā)越來越受到青睞。這些開發(fā)大多利用三維CAD軟件提供開發(fā)接口,建立一個基本模型庫,基于尺寸的數(shù)字化驅(qū)動得到不同規(guī)格的產(chǎn)品[2]。
近年來,在我國有很多學者論述了應用SolidWorks實現(xiàn)參數(shù)化建模的方法,羅煜峰等人研究了SolidWorks的二次開發(fā)接口,在VC++編譯環(huán)境下開發(fā)了三維CAD文件的快速發(fā)布模塊,并將其通過動態(tài)鏈接庫技術(shù)集成到SolidWorks軟件環(huán)境中[3]。彭波等人研究了應用VisualBasic窗口應用程序作為交互平臺的SolidWorksAPI參數(shù)化建模模塊[4]。關(guān)永軍闡述了應用VisualBasic宏操作對SolidWorks的二次開發(fā),完成了基于參數(shù)輸入的快速建模,驗證了其高效、準確的設計意圖[5]。彭玉青等人利用VB.net程序和COM組件構(gòu)建了SolidWorks有關(guān)建筑組件的常用庫,這些部件可以被尺寸驅(qū)動且以插件的形式嵌入模型內(nèi)[6]。
上述研究都沒有涉及屬性管理器。因此,本文運用自定義屬性管理器的方式,利用C#語言編寫一個可執(zhí)行的DLL(動態(tài)鏈接庫)文件,在不新建窗口的基礎上,僅通過樣板模型特征的屬性管理器頁面的尺寸參數(shù)設置,達到快速參數(shù)化建模的目的。這里的樣板模型以鉆具穩(wěn)定器包裝架的焊件實例形式呈現(xiàn)[7]。
1.1 開發(fā)環(huán)境的選擇
三維CAD軟件SolidWorks給使用者提供了專供二次開發(fā)的API(應用程序接口),可以調(diào)用基于應用的VisualBasic、VB.net、VisualC#、VisualC++6.0以及VisualC++/CLI等開發(fā)環(huán)境來實現(xiàn)API包含的功能[8]。本實例將采用VisualC#作為開發(fā)環(huán)境。C#作為.Net框架下面向?qū)ο蟮木幊陶Z言,它也支持SolidWorks宏。
1.2 二次開發(fā)環(huán)境構(gòu)建方法
第一種是獨立的計算機應用程序。首先在VisualStudio中創(chuàng)建一個項目,該項目要添加外部引用,通過COM(組件對象模型)組件的形式在該項目中添加有關(guān)SolidWorks類型庫。然后,在Main方法中實例化SolidWorks項目,并編寫相關(guān)建模代碼和交互方式。最后,運行并調(diào)試該項目,生成一個.exe結(jié)尾的可執(zhí)行文件,從而可以視為是一個獨立的應用程序。
第二種是嵌入一個add-in(加載項)程序。SolidWorks提供了相應的SDK(軟件開發(fā)工具包),在開發(fā)之前首先要在操作系統(tǒng)中安裝相應版本的SolidWorksAPISDK。安裝成功SDK之后,再次啟動VisualStudio,在新建的項目中就可以選擇SolidWorksadd-in項目模板SwCSharpAddin,自動預生成一個C#項目,該項目的可執(zhí)行文件是以DLL形式嵌入建模軟件內(nèi)部的,在此基礎上編寫相關(guān)建模代碼和交互方式。
本文的設計是基于原型模型的參數(shù)化建模,所謂原型模型是指拓撲結(jié)構(gòu)完全定義,尺寸參數(shù)由尺寸變量定義的一種CAD模型。為了實現(xiàn)高效的尺寸參數(shù)重新賦值和模型重建,采用add-in程序作為二次開發(fā)的手段[9]。其開發(fā)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)開發(fā)結(jié)構(gòu)
圖2 鉆具穩(wěn)定器及包裝架實物圖
本文所舉例的三維模型是一個包裝架,它是一個由型材焊接而成的焊件。其實物如圖2所示,圖中包裝架內(nèi)部就是所承載的鉆具穩(wěn)定器。鉆具穩(wěn)定器作為石油開采工具,國家能源局標準SY/T5051-2009對此產(chǎn)品做了規(guī)范性指導,由于該產(chǎn)品尺寸規(guī)格相差很多,其包裝架規(guī)格也就需要適應這一點。本文以該焊件的參數(shù)化自動建模作為例,其他基于原型的零件自動化建模的過程亦可參考。
2.1 包裝架設計方案
圖3是標準中穩(wěn)定器主要尺寸的示意圖,圖中L2是工作長度,D1是工作直徑,D2是鉆具連接外徑。先以標準中某一個規(guī)格鉆具穩(wěn)定器設計包裝架為例,其包裝架的尺寸就是默認值,為了保證承載這里的樣板焊件,以最大的穩(wěn)定器包裝架進行設計。包裝架全部由70×70×7的等邊角鋼焊接而成。
圖3 穩(wěn)定器主要尺寸的示意圖
其穩(wěn)定器軸向的支撐結(jié)構(gòu)視圖如圖4所示。
圖4 軸向的支撐結(jié)構(gòu)視圖
設計要求支架兩側(cè)留10mm空隙,支架底部留40mm空隙。根據(jù)幾何關(guān)系可得:
W=D1+160
H=D1+45
此外,包裝架的長度取兩倍的穩(wěn)定器工作長度(L2)。
2.2 樣板模型建模分析
建?;静襟E如下:(1)通過草圖和3D草圖以直線的命令繪制等邊角鋼所在位置;(2)利用焊件選項卡下的結(jié)構(gòu)構(gòu)件命令生成等邊角鋼模型;(3)剪裁、延伸兩端使支架成型。
建模完成之后,可以充分利用三維CAD軟件做結(jié)構(gòu)分析,判斷焊件是否達標。本例應用有限元方法做靜力學分析,仿真結(jié)果安全系數(shù)如圖5所示,最小安全系數(shù)為2.7,能夠滿足承載需求。由于樣板穩(wěn)定器焊件模型是按最大的穩(wěn)定器設計的,所以其余尺寸穩(wěn)定器包裝架亦能滿足強度要求。
圖5 有限元仿真靜應力結(jié)果安全系數(shù)分布圖
3.1 基于API建模
為了更加快速地找到API的建模方法,可以借助宏操作。SolidWorks支持基于VSTA(VisualStudioToolsforApplications)C#的宏語句,可以通過宏的記錄操作來找需要的API方法。新建零件,點擊“錄制宏”并對包裝架重新建模,建模完成后點擊“停止宏”,選擇保存為SWVSTAC#Macro項目。通過點擊“編輯”命令打開保存的宏項目文件。此例主要用到的API方法如下:
繪制直線:ModelDoc@::SketchManager.CreateLine
繪制焊件結(jié)構(gòu)件:ModelDoc@::FeatureManager.InsertStructuralWeldment4
剪裁焊件:ModelDoc@::FeatureManager.EditRollback
系統(tǒng)內(nèi)加載SolidWorksAPISDK完畢后,在VisualStudio中就可以選擇新建SolidWorksadd-in項目,選擇該項目后自動生成一個項目模板,根據(jù)項目模板自動生成的類進行編程。在建立樣板模型的時候,根據(jù)默認的穩(wěn)定器參數(shù)值算出對應的包裝架尺寸參數(shù),然后以這個參數(shù)作為包裝架設計依據(jù),調(diào)用繪制直線、繪制焊件結(jié)構(gòu)件、剪裁焊件等API方法,完成整個包裝架默認尺寸的樣板模型的自動建模。
3.2 參數(shù)化建模和尺寸賦值方法
參數(shù)化建模就是采用預定義的方法建立圖形的幾何約束集 ,指定一組尺寸作為參數(shù)與幾何約束集相關(guān)聯(lián),并將所有的關(guān)聯(lián)式融入到應用程序中,然后采用人機交互方式即通過對話框修改參數(shù)尺寸,最終由程序根據(jù)這些參數(shù)順序地執(zhí)行表達式來實現(xiàn)的方法。
從上文中可知,包裝架的尺寸是由其所擺放的穩(wěn)定器的尺寸決定的,因此在參數(shù)化建模時,可以直接用穩(wěn)定器的主要尺寸來驅(qū)動包裝架的尺寸,這樣簡化了設計的步驟,體現(xiàn)了CAD技術(shù)在設計中的功能,同時也提高了設計效率[10]。在C#工程文件中新建基于樣板模型建模的方法,該改方法利用穩(wěn)定器的尺寸驅(qū)動包裝架的尺寸。其代碼段如下:
……
myFeature= ((Feature)(swDoc.FeatureManager.InsertWeldmentFeature()));
……
SketchSegmentskSegment=null;
skSegment= ((SketchSegment)(swDoc.SketchManager.CreateLine(w, 0, 0,w,l, 0)));//6個參數(shù)表明直線首末點的坐標(X1,Y1,Z1,X2,Y2,Z2)
myFeature= ((Feature)(swDoc.FeatureManager.InsertStructuralWeldment4("C:ProgramFilesSOLIDWORKSCorpSOLIDWORKSlangchinese-simplifiedweldmentprof" +"ilesGBLAngle(equal)7X7.sldlfp",1,true,vGroups)));
……
由于包裝架的型材和剪裁方式不會隨規(guī)格尺寸變化而變化,因此改變包裝架規(guī)格尺寸在建模過程中也就是改變等邊角鋼所在的直線的位置和長度。從API建模方法中可知,創(chuàng)建直線過程中,直線的位置是通過直線首末兩點的坐標確定的,因此把包裝架尺寸參數(shù)先映射到等邊角鋼所在直線坐標中,再把包裝架尺寸參數(shù)值由穩(wěn)定器基本尺寸值換算得出。通過定義一些雙精度浮點變量,來代替原本樣板模型中建模命令的一些常量。這樣便構(gòu)建了一個帶有參數(shù)的建模方法。
3.3 屬性管理器設計
完成了樣板模型的建模之后,還要以用戶輸入進行尺寸進行參數(shù)化建模,所有的參數(shù)在輸入時都需要用戶交互界面,用戶交互操作最好描述為控件創(chuàng)建和響應的各種事件。常用的方法就是新建并設計一個窗體在窗體內(nèi)嵌入控件,通過對控件的操作完成參數(shù)的賦值。本次開發(fā)充分發(fā)揮SolidWorks屬性管理器的功能,所謂屬性管理器,就是用來記錄模型、裝配、工程圖中某一個結(jié)構(gòu)的特征參數(shù)的選項卡。在SolidWorksAPI中提供了自定義屬性管理器的開發(fā)接口。其構(gòu)建方法和窗體程序類似,可以把整個屬性管理器視為一個容器,在其中可以添加各種控件完成頁面設計。每一個控件都有一個ID,通過監(jiān)聽各種事件,判斷ID之后可以寫入相應事件的響應。
本例中需要完成的用戶交互操作就是輸入穩(wěn)定器主要尺寸,該尺寸是驅(qū)動包裝架尺寸的,分別是工作長度L2,鉆具直徑D2,工作直徑D1。通過SolidWorksAPI提供的方法自定義屬性管理器,首先是設計屬性管理器的界面,為了使得參數(shù)可視化效果更好,創(chuàng)建了三個組,給每個組都賦給相應的名稱,在每組內(nèi)包含一個數(shù)字欄,這些數(shù)字欄就是對應要修改的L2、D2,D1,默認值是0 。此外還在每一個數(shù)字欄邊上添加尺寸種類枚舉,在長度單位的枚舉項上改為毫米。最后的效果如圖6所示。
圖6 屬性管理器頁面設計
提供了交互界面之后,還需要為控件創(chuàng)建響應,因為在屬性管理器中有自帶的確定按鈕(√),不必再創(chuàng)建按鈕控件,通過點擊“確定”按鈕觸發(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)試工作并生成相應的.dll文件之后,打開SolidWorks軟件,點擊工具欄下拉菜單,在如圖7所示的界面中,就能建立樣板模型或者重新建立參數(shù)化的自定義模型。
圖7 add-in菜單欄
按圖6輸入所要求的參數(shù)后點擊確定按鈕(√),SolidWorks執(zhí)行重新建模方法,完成了基于參數(shù)化的自動建模,其結(jié)果如圖8所示。通過實例展示,本文利用屬性管理器實現(xiàn)了產(chǎn)品的參數(shù)化自動建模,從而避免了建模工作中的重復工作,整個建模過程更加快速直觀。
圖8 參數(shù)化建模模型(渲染后)
[1] 馮興路. 現(xiàn)代機械制造技術(shù)及其發(fā)展趨勢探討[J]. 山東工業(yè)技術(shù), 2016(1):233.
[2] 孫志洋, 仲梁維, 魯康東,等. 基于SolidWorks二次開發(fā)的立罐快速設計系統(tǒng)研究[J]. 通信電源技術(shù), 2015,32(6):64-66.
[3] 羅煜峰, 陳旭, 李元山.SolidWorks的三維CAD文件快速發(fā)布模塊的設計[J]. 圖學學報, 2012, 33(5):94-98.
[4] 彭波, 楊岳, 蘇春模. 采用SolidWorksAPI的離心式葉輪參數(shù)化建模[J]. 圖學學報, 2009, 30(5):1-7.
[5] 關(guān)永軍.SolidWorks的二次開發(fā)及應用[J]. 科技創(chuàng)新導報, 2012(14):28.
[6]PengYuqing,JingXie,WangXiaoyan.Researchandrealizationonarchitectural3Dmodelofarchitecturalprocesssimulationsystem[C].InternationalWorkshoponComputerScienceandEngineering,IEEE, 2009,1:543-547.
[7] 陳雨, 毛恩榮, 呂黃珍,等. 基于推理的大型收獲機械變速箱參數(shù)化設計[J]. 農(nóng)業(yè)機械學報, 2013, 44(S2):278-282.
[8]NAGELC,EVJENB,GLYNNJ,等.C#高級編程(第7版)[M].李銘,譯.北京:清華大學出版社, 2010.
[9] 敖行, 江昊, 張迅. 一種CAD圖紙中WLAN器件連接關(guān)系的獲取方法[J]. 計算機應用與軟件, 2016,33(1):90-93.
[10] 彭澤軍. 基于UG/OPEN、C#的箱蓋模具快速設計系統(tǒng)研究[J]. 制造業(yè)自動化, 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ù)化自動建模研究[J].微型機與應用,2016,35(22):84-87,91.
2016-07-19)
朱英翔(1989-),男,碩士,助教,主要研究方向:工程機械、遠程控制。
陳燕(1980-),女,碩士,講師,主要研究方向:CAD/CAM。
余啟志(1979-)男,碩士,講師,主要研究方向:機械結(jié)構(gòu)及焊接強度分析。