我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > Solidworks

基于SW的三維CAD系統二次開發方法

時間:2008-07-21 18:51:57 來源:
摘要:以SolidWorks2001為開發平臺,結合VisualC++6.0和VisualBasic6.0這2種高級程序開發語言,提出了一種三維CAD二次開發方法.該方法避開了開發中的難點,減少了工作量,具有一定的參考價值

    關鍵詞: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