转 VisualC++对SolidWorks的二次开发方法 solidworks二次开发vb


VisualC++对SolidWorks的二次开发方法针对目前普遍开发三维 CAD系统的需要 ,讨论了对三维绘图软件 SolidWorks进行二次开发的方法 ,并结合实例重点阐述利用Visual C++6.0 编程语言开发 SolidWorks 动态连接库 DLL 的步骤和编程方法 ,所开发的DLL 实现了于SolidWorks 的无缝集成 ,对相关三维 CAD 软件的开发是一种启示和借鉴。

1前言

为了缩短产品开发周期、提高市场竞争能力 ,各企业在产品设计中大多要对通用 CAD 软件进行二次开发,建立适合自己的专用模块。但目前所开发的 CAD 系统 ,一般是对二维绘图软件如 AutoCAD 进行二次开发,实现机械零件参数化设计。由于二维绘图软件本身无法实现参数化驱动 ,所以对其进行二次开发的周期长、工作量大、不易实现CAX系统的集成。而三维绘图软件如 SolidWorks,采用特征建模、参数化驱动可方便地设计出三维实体模型。利用三维实体模型可以自动生成二维工程图;可以在生产之前动态模拟装配过程、进 行干涉检查;可以对重要零部件进行有限元分析与优化设计(CAE);可以模拟数控加工(CAM) ;可以生成零件的工艺规程(CAPP) ,这样就易于实现CAX系统的集成。所以基于三维绘图软件的二次开发必将成为今后 CAD 技术发展的主流。

本文将讨论在Visual C++6. 0 的集成开发环境下 ,对 SolidWorks 进行二次开发实现机械零件参数化设计的方法,并结合实例说明二次开发的具体实现过程。

1 SolidWorks 二次开发的原理

1. 1SolidWorks 的 API 接口


SolidWorks通过 OLE(Object Linking and Embedding ,对象的链接和嵌入) 技术为用户提供了强大的二次开发接口API(Application Programming Interface ,应用程序界面) ,API 中包含了数百个可以在Visual Basic、VBA(Excel 、Access 等) 、C、C++ 或 SolidWorks宏文件调用的函数。SolidWorks API 接口采用面向对象的方法,所有的函数都是有关对象的方法或属性。用户通过对这些对象属性的设置和方法的调用 ,就可以在用户自己开发的程序中对 SolidWorks进行各种操作控制,完成零件草图的绘制和修改;零件各种特征的建立和修改;零件的特征信息、装配信息及工程图纸信息的提取等。

1. 2SolidWorks 二次开发的方法


SolidWorks的API 接口分为两种:一种是基于 OLE Automation 的 IDispatch 技术 ;另一种开发方式是基于 Windows基础的 COM(Object Model ,组件对象模型) 。

基于 OLEAutomation 的 IDispatch 技术作为快速开发的手段 ,一般常用于 VB、Delphi 编程语言的接口 ,通过IDispatch 接口暴露对象的属性和方法 ,以便在客户程序中使用这些属性并调用它所支持的方法。此种技术只能开发 EXE形式的程序,所开发的 CAD 系统不能直接加挂在 SolidWorks 系统界面下 ,无法实现与 SolidWorks系统的集成。

COM是一种组件开发技术 ,是 Microsoft 公司提出的并被大多数公司支持的一种标准协议 ,它建立了一个软件模块同另一个软件模块的连接,当这种连接建立之后 ,两个模块之间就可以通过接口来进行通讯。COM接口更为简洁高效 ,这种技术可以使用最多的 SolidWorksAPI函数。实际上 SolidWorks 系统本身是用 VC++编写的 ,所以使用 VC++语言通过 COM 接口开发 ,可以实现对SolidWorks 底层的开发并且代码的执行效率高。

通过 VC编写基于COM的动态连接库 DLL(Dynamic Link Library)文件 ,能直接在 SolidWorks的界面下添加菜单、工具条等 ,如图 1 所示。在注册表中注册成功即可成为 SolidWorks 的插件 ,实现了与SolidWorks 的无缝集成 ,是众多二次开发方法中的首选 ,以下结合参数化设计铜合金轴承保持架挤压模垫套的实例 ,介绍 DLL程序的开发方法。

2 DLL 程序的具体实现过程

2. 1 DLL的创建


SolidWorks公司提供了制作 DLL 文件的向导 ,利用向导模板可方便快捷地生成 DLL 文件。具体步骤是:首先从 SolidWorks公司的网站下载制作动态连接库的向导文件"SWizard. awx",将其拷贝至 VC++安装目录下的 Common MSDev98 Template 文件夹 ,这时 VC 新建工程项中会出现"SolidWorks AddInAppWizard"向导。选择此向导输入项目名 3DCAD 后单击 Next ,在 Step 1 of 2 选择SolidWorks 的安装路径 ,除了 Overload WNDPROC of ModelView复选框 ,选中其他所有复选框,然后单击 Next 进入 Step 2 of 2 ,选中 Create Sample Feature Manager 和ViewRegister Add - In at compile time 复选框后单击 Finish 即可完成DLL工程的创建。

2. 2 DLL中添加资源的方法


在动态链接库中,当用户需要添加自己的资源如对话框时 ,应明确指出在什么时候使用自己的资源 ,否则 SolidWorks系统分不清那些是由系统控制的资源 ,那些是由用户控制的资源 ,会发生冲突导致程序运行错误。避免资源冲突的方法是在使用自己资源前调用Afx Get Resource Handle 函数保存当前的资源 ,然后调用 Afx Set Resource Handle函数把当前资源设置成新的资源 ,当使用完自己的资源后 ,再调用Afx Set Resource Handle函数恢复先前已保存的资源。创建本程序的运行界面时 ,首先用对话框编辑器创建对话框模板资源 ,如图 2 所示加入所需控件 ,再用Class wizard 为对话框生成 CTestDlg类(基类为 CDialog) ,并加入所需的成员变量,相关代码如下:

/ /保存当前系统资源
HINSTANCEsaver = AfxGetResourceHandle() ;
/ /把当前资源设置成新的资源
AfxSetResourceHandle(AfxGetResourceHandle() ) ;
CDlg1 dlg; / / 声明一个对话框类
【转】VisualC++对SolidWorks的二次开发方法 solidworks二次开发vb
If (int n =dlg. DoModal () = = IDOK) ; / / 按下绘图按钮后绘图


{
drawdt( ) ;/ / 参数化绘制垫套三维图的自定义函数
}
/ /恢复先前已保存的系统资源的句柄
AfxSetResourceHandle(saver) ;

2.3 DLL 与 SolidWorks 的集成

用户可以通过 DLL程序定制 SolidWorks 的菜单 ,工具栏资源等 ,从而实现二次开发的 CAD 系统与SolidWorks 的无缝集成,以下为其部分代码 :

·定制SolidWorks 的菜单。在 CAPITourApp : : docCreateMenu 函数中添加以下代码:

/ /添加顶层弹出式菜单[3DCAD]
hres =pFrame2 > AddMenu(auT"(3DCAD( &G) "), swMenuPosition , &bres) ;
/ /添加[3DCAD]的下一级菜单[垫套]
hres =pFrame2 > AddMenuItem(auT("3DCAD(&G) ") ,auT"(垫套( &D) . . . ") ,swLastPosition ,
auT"(3DCAD@MyFunction") ,&bres) ;

·定制SolidWorks 的工具栏。在 CAPITourApp : : docCreateMenu 函数中添加以下代码:

SetResources() ; / / 确保使用自己添加的资源
/ /加载工具栏图标资源
mSmallToolbar.LoadMappedBitmap (IDR TOOLBAR SMALL);
HBITMAPhbmSmallImageWell = (HBITMAP) m SmallToolbar. GetSafeHandle();
ResetResources() ; / / 把资源控制权交还给 SolidWorks

2. 4 DLL的编译和注册

在 VC中编译 DLL程序时 ,不同的操作系统应该采用不同的设置:Windows95/ 98 应该采用MBCS设置 , Windows NT/ 2000应该采用Unicode 设置 ,单步调试时应该采用 Pseudo2Debug 设置。编译链接成功后会生成*.dll 格式的文件 ,运行Windows 系统的 Regsvr32 命令注册此 DLL 文件 ,若 DLL 文件注册成功就可成为 SolidWorks系统的插件。

3DCAD. dll注册成功后 ,打开注册表编辑器展开 HKEY LOCALMACHINE SOFTWARE SolidWorks Applications 3DCAD 项 ,会发现一个名字为 CLSID 的字符串值 ,这是 Windows 系统为你的 DLL所分配的唯一标识字符串。展开 HKEY CLASSES ROOT CLSID 项 ,找到与 CLSID 字符串值相同的项,此项有一子项 InprocServer32 和一个默认值 ,InprocServer32 子项用来指明你的 DLL 文件的具体路径,默认值可在 SolidWorks 插件对话框中描述你所编写插件的功能(如图 3 所示) 。


2. 5 DLL程序的运行


如果在 VC++调试环境下运行 DLL 程序 ,系统会提示你输入调用此 DLL 的可执行文件名 ,选择SolidWorks 可执行程序的具体路径后SolidWorks 就会自动运行 ,使用 SolidWorks 的文件/ 打开菜单 ,在文件类型过滤器中选择 Add~Ins ( 3. dll)就可加载自己的 DLL 程序。DLL 注册成为 SolidWorks 系统的插件后 ,还可使用工具/插件菜单打开插件对话框 ,选中需要加载的插件(如图 3 所示) ,以后启动 SolidWorks 就可自动加载该 DLL 程序,无须再进行加载操作 ,十分方便。

SolidWorks加载 DLL 成功后 ,用户可在 SolidWorks 系统中打开 3DCAD/ 垫套菜单或单击工具栏快捷按钮弹出程序运行界面(如图2 所示) ,用户输入垫套的尺寸参数后 ,单击绘图按钮 ,SolidWorks 就会自动绘出垫套的三维实体造型(如图 1 所示)。

3结束语

本文探讨了对三维绘图软件SolidWorks 进行二次开发实现机械零件三维造型参数化设计的方法。设计实例表明 ,采用 Visual C++编程语言建立SolidWorks 的动态连接库文件可以很好实现与 SolidWorks系统的无缝集成 ,能满足用户二次开发 CAD系统的需要。

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/237346.html

更多阅读

吸烟对身体的危害有哪些 吸烟对身体健康的影响

吸烟对身体的危害有哪些——简介现在有很多吸烟的人,大家也都知道吸烟有害身体健康,但是吸烟对身体到底有哪些危害你知道吗?如果你了解到吸烟对身体的危害还会吸烟吗?下面就在经验里面的大家分享一下吸烟对身体的一些危害。吸烟对身体

剖腹产对宝宝的6大危害 剖腹产对孩子的危害

剖腹产对宝宝的6大危害——简介越来越多的孕妈倾向于选择剖腹产这种分娩方式,觉得剖腹产少痛苦,产后身材容易恢复等。有研究指出,剖腹产的孩子与自然分娩的孩子在智力上并无差异,但是因为剖腹产的过程违背了自然分娩的一些必要程序,生出

怎么进行discuz的二次开发 discuz二次开发教程

怎么进行discuz的二次开发——简介discuz 作为目前最受欢迎的开源程序之一,很多人都想要自己二次开发来达到自己想要的效果,那么我们需要了解什么呢?接下来看下吧怎么进行discuz的二次开发——工具/原料 能够理很好理解MVC构架的原理(

父母对孩子的寄语转贴 父母给孩子寄语

父母对孩子的寄语虽然下文是父母对孩子说的话但对我们这些已经工作了的人也同样适用儿童节到了,跟我们的孩子说点什么吧!  一、孩子,你不是世界的中心。妈妈围着你转、爸爸围着你转、爷爷奶奶围着你转、姥姥姥爷围着你转,但不是所有的

转 封建社会对女人的要求 封建社会的特点

—封建社会对女人的要求三从四德 定义、源流“三从四德”是为适应父权制家庭稳定、维护父权—夫权家庭(族)利益需要,根据“内外有别”、“男尊女卑”的原则,由儒家礼教对妇女在一生在道德、行为、修养的进行的规范要求。“三从”一词最

声明:《转 VisualC++对SolidWorks的二次开发方法 solidworks二次开发vb》为网友橘温茶暖分享!如侵犯到您的合法权益请联系我们删除