土木在线论坛 \ 电气工程 \ SolidWorks软件 \ 基于SolidWorks的三维CAD二次开发方法

基于SolidWorks的三维CAD二次开发方法

发布于:2006-03-09 02:39:09 来自:电气工程/SolidWorks软件 1 1454 [复制转发]
CAD的应用目的是提高设计质量,传播和保存设计经验,提高设计效率,降低设计成本,提高设计管理水平等,目前国际和国内知名的CAD商品软件主要有Pro/Engineer,UGⅡ,I-Deas, SolidWorks,AutoCAD以及华正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),点击“下一步”;

2.确定SolidWorks的安装路径,选取其他相应选项,点击“下一步”;

3.输入插件名称以及描述,选取其他相应选项,点击“完成”;

4.在工作区选择MyProresources\Toolbar,修改工具条大小图标;在文件MyPro.h和MyPro.cpp的Toolbarcallbacks部分添加或删除工具条执行函数;

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:\mypro\gs.exe”,则可将原来的菜单命令执行函数voidMenuItemCB(void)

    {
    return;
    }
    修改为
    voidMenuItemCB(void)
    {
    STARTUPINFOsi;
    PROCESSINFORMATIONpi;
    ZeroMemory(&si,sizeof(si));
    si.cb=sizeof(si);
    ZeroMemory(&pi,sizeof(pi));
    //Startthechildprocess.
    CreateProcess(“D:\\mypro\\gs.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.

    2.2.2 建模等驱动程序

    下面以创建一个0.20m×0.10m×0.05m的长方体为例:

    1.启动MicrosoftVisualBasic6.0,在下拉菜单“文件”项选择“新建工程”,选择“标准EXE”,“确定”;

    2.在窗体Form1上添加2个CommandButton,分别命名为“创建长方体”和“退出”;

    3.双击命令按钮“创建长方体”,在函数Com mand1Click()内添加代码如下:

    DimswAppAsObject
    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:\ProgramFiles\SolidWorks\data\Templates\零件.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()内添加代码如下:
    UnloadMe‘卸载窗体

    5.在下拉菜单“文件”项选择“生成工程.exe”,输入文件名“D:\\mypro\\gs.exe”,“确定”[4].(注意:此处路径与文件名必须与函数CreateProcess的第一个参数相同.)
    该部分完成了图1中的d,e关系,实现了程序驱动的自动建模.
    2006-03-09 02:39:09

    回复 举报
    赞同0
评论帖子
评论即可得
+1经验值
+10土木币

请先 登录,再参与讨论!

相关推荐

SolidWorks软件

返回版块

1171 条内容 · 29 人订阅

猜你喜欢

阅读下一篇

SolidWorks 2006 哪里有了下?

??

请选择删除原因

回帖成功

经验值 +10