關鍵詞:SolidWorks;CAD;二次開發
CAD的應用目的是提高設計質量,傳播和保存設計經驗,提高設計效率,降低設計成本,提高設計管理水平等,目前國際和國內知名的CAD商品軟件主要有Pro/Engineer,UGⅡ,I-Deas,SolidWorks,Au toCAD以及華正CAXA、高華CAD系統等.這些商品化的通用設計平臺基本上覆蓋了整個制造行業,但專業針對性差,不能滿足各種各樣具體領域的設計需求,在工程設計中難以達到CAD真正的應用目的.因此CAD的二次開發成為CAD技術推廣應用過程中面臨的主要問題之一.
CAD的二次開發是使商品化、通用化的CAD系統用戶化、本土化的過程[1].商品化CAD系統一般都提供二次開發工具、開發語言等.但怎樣才能達到使用方便、記憶量少、靈活的提示信息、良好的交互方式、良好的出錯處理,對選擇合理的二次開發方法是至關重要的.
1 二次開發的軟硬件環境
1.1 硬件環境
微型計算機(微機)和工作站是應用最廣泛的2種硬件平臺,雖然工作站具有速度快、工作效率高、支持分布式計算和多任務進程等優點,但其操作復雜、價格昂貴.隨著CPU速度的不斷提高,圖形處理能力的不斷增強,微機平臺已經能夠滿足CAD系統對硬件的要求[2].且由于其價格相對較低,及出現的一批基于微機的三維CAD軟件,如Pro/Engineer,I-Deas,SolidWorks等,使微機得到了迅速的普及.故選擇普通微機作為二次開發的硬件平臺.
1.2 軟件環境
1.Windows98,Windows2000或WindowsXP操作系統.
2.SolidWorks2001或更高版本的CAD軟件系統.SolidWorks是基于Windows的CAD/CAE/CAM/PDM桌面集成系統,其核心技術是在Windows環境下開發而成,具有強大的實體建模功能和用戶熟悉的Windows圖形界面,開放性好,提供的應用編程接口API是基于OLEAutomation的編程接口,包含了大量的功能函數,可以被VisualBasic,VBA(Excel,Access,etc.),C,VisualC++,SolidWorksmacro或任何支持MicrosoftOLE(ObjectLinkingandEmbedding)技術的編程語言調用[1].
3.VisualC++6.0和VisualBasic6.0高級編程語言平臺.
4.SolidWorks-API-SDK.
SolidWorks-API-SDK包含SolidWorksAPI例子、一個用于在VisualC++編程平臺上建立Solid Works插件(Add-In-DLL)的動態鏈接庫模板和ATL工程模板.
2 思路與實現方法
2.1 思路
SolidWorks提供了多種二次開發方法,每種方法都各有所長,如果能將他們的優點集中起來,必將達到良好的效果.故考慮用VisualC++開發SolidWorks插件和菜單,用VisualBasic開發建模、裝配等驅動程序和人機交互界面,之間的邏輯關系如圖1所示.
2.2 實現方法
2.2.1 插件
利用SolidWorks-API-SDK的DLL工程模板,開發SolidWorks的插件.具體方法如下:
1.啟動MicrosoftVisualC++6.0,在文件下拉菜單選擇“新建工程”,選取SolidWorksAdd-InApp Wizard,輸入工程名(如MyPro)及位置(如e:mypro),點擊“下一步”;#p#分頁標題#e#
2.確定SolidWorks的安裝路徑,選取其他相應選項,點擊“下一步”;
3.輸入插件名稱以及描述,選取其他相應選項,點擊“完成”;
4.在工作區選擇MyProresourcesToolbar,修改工具條大小圖標;在文件MyPro.h和MyPro.cpp的Toolbarcallbacks部分添加或刪除工具條執行函數;#p#分頁標題#e#
5.在文件ExampleApp.cpp的函數voidCMyproApp::docCreateMenu(longDocumentType)中修改相應的菜單和子菜單命令,例如把
//addmenu
hres=pFrame->AddMenu(auT(“MyPro&App”),swMenuPosition,&bres);
//addmenuitem
修改為
//addmenu
hres=pFrame->AddMenu(auT(“齒輪設計(&G)”),swMenuPosition,&bres);
//addmenuitem
hres=pFrame->AddMenuItem(auT(“齒輪設計(&G)”),auT(“開始運行程序(&B)...”),swLastPo sition,auT(“mypro@MenuItemCBGuanli,齒輪設計程序運行”),&bres).
上面程序中,addmenu項為主菜單,即“齒輪設計(&G)”;addmenuitem項為子菜單,即“開始運行程序(&B)...”;“齒輪設計程序運行”是提示信息.
6.在文件MyPro.cpp的documentcallbacks部分修改菜單命令的執行函數;例如若建模等驅動程序為“D:myprogs.exe”,則可將原來的菜單命令執行函數voidMenuItemCB(void)
{
return;
}
修改為
voidMenuItemCB(void)
{
STARTUPINFOsi;
PROCESSINFORMATIONpi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
//Startthechildprocess.
CreateProcess(“D:myprogs.exe”,
””, //Commandline.
NULL,//Processhandlenotinheritable.
NULL,//Threadhandlenotinheritable.
FALSE,//SethandleinheritancetoFALSE.
0,//Nocreationflags.
NULL,//Useparent’senvironmentblock.
NULL,//Useparent’sstartingdirectory.
&si,//PointertoSTARTUPINFOstruc ture.
&pi);//PointertoPROCESSINFORMA TIONstructure.
return;
}
7.編譯工程并注冊生成動態鏈接庫[3].
插件部分完成了圖1中的a,b,c關系.尤其是函數CreateProcess的應用,實現了從菜單或工具條到建模驅動程序之間的連接,即圖1中的關系c.#p#分頁標題#e#
2.2.2 建模等驅動程序
下面以創建一個0.20m×0.10m×0.05m的長方體為例:
1.啟動MicrosoftVisualBasic6.0,在下拉菜單“文件”項選擇“新建工程”,選擇“標準EXE”,“確定”;
2.在窗體Form1上添加2個CommandButton,分別命名為“創建長方體”和“退出”;
3.雙擊命令按鈕“創建長方體”,在函數Com mand1Click()內添加代碼如下:
DimswAppAsObject#p#分頁標題#e#
DimPartAsObject
DimboolstatusAsBoolean
DimlongstatusAsLong
DimAnnotationAsObject
DimGtolAsObject
DimDatumTagAsObject
DimFeatureDataAsObject
DimFeatureAsObject
DimComponentAsObject
DimchangAsLong,kuanAsLong,gaoAsLong‘定義長、寬、高
chang=0.20 ‘為長賦值0.20m
kuan=0.10 ‘為寬賦值0.10m
gao=0.05 ‘為高賦值0.05m
SetswApp=CreateObject(“SldWorks.Applica tion”)
swApp.ActiveDoc.ActiveView.FrameLeft=0
swApp.ActiveDoc.ActiveView.FrameTop=0
swApp.ActiveDoc.ActiveView.FrameState=1
swApp.ActiveDoc.ActiveView.FrameState=1
SetPart=swApp.NewDocument(“C:ProgramFilesSolidWorksdataTemplates零件.prtdot”,0,0#,0#)
SetPart=swApp.ActivateDoc(“Part2”)
swApp.ActiveDoc.ActiveView.FrameState=1
Part.InsertSketch
Part.SketchRectangle-(chang/2),(gao/2),0,(chang/2),(gao/2),0,1
Part.FeatureExtrusion1,0,0,0,0,kuan,0,0,0,0,0,0,0,0,0
Part.ShowNamedView2“ 等軸測”,7
Part.ViewZoomtofit2
Part.SaveAs2“D:mypro長方體.SLDPRT”,0,False,False
Part.ClearSelection
SetPart=Nothing
swApp.CloseDoc“長方體”
這部分程序的開發,可用SolidWorks的宏功能,錄制1個創建長方體的宏文件.由于宏錄制的文件是VBA代碼,所以,對其稍加修改就可移植到VisualBasic的程序代碼中.這樣明顯降低了開發難度,加快了開發進程.
4.雙擊命令按鈕“退出”,在函數Command2Click()內添加代碼如下:#p#分頁標題#e#
UnloadMe‘卸載窗體
5.在下拉菜單“文件”項選擇“生成工程.exe”,輸入文件名“D:myprogs.exe”,“確定”[4].(注意:此處路徑與文件名必須與函數CreateProcess的第一個參數相同.)
該部分完成了圖1中的d,e關系,實現了程序驅動的自動建模.
3 結語
所提出的二次開發方法避開了開發過程中的難點,減少了工作量,達到了開發目的.
1.直接利用MicrosoftVisualC++6.0中Solid Works插件模板,不需過多考慮動態鏈接庫等編程方法,降低了開發難度.
2.用VisualC++的函數CreateProcess搭建了菜單與建模程序之間的關系.
3.開發建模程序時,參考SolidWorks的宏文件,明顯減少了工作量.
參考文獻
[1]王青,鄔義志,夏冠華.三維CAD/CAM系統二次開發技術[J].江蘇機械制造與自動化,2001,(4):183-185.#p#分頁標題#e#
[2]張淑珍.CAD系統二次開發方法的研究[J].西北紡織工學院學報,2000,14(2):173-175.
[3]DavidJ.Kruglinski,ScotWingo,GeorgeShepherd,等.Visu alC++6.0技術內幕(第五版)[M].北京:北京希望電子出版社,1999.
[4]EvangelosPetroutsos.VisualBasic6從入門到精通[M].北京:電子工業出版社,1999
相關文章
- 2021-09-08全國專業技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎培訓教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎培訓教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術設計案例教程中文版AutoCAD 建筑設計案例
- 2021-08-29環境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF
- 2021-08-29機械制圖與AutoCAD [李志明 主編] 2014年PDF下載
- 2021-08-29機械制圖與AutoCAD [陶素連,周欽河 主編] 2013年PDF下