APP下载

基于VC++的Solidworks机械零件参数化设计

2010-11-15

湖南科技学院学报 2010年12期
关键词:锥套二次开发插件

刘 媛

(安徽电子信息职业技术学院电子系,安徽 蚌埠 233000)

基于VC++的Solidworks机械零件参数化设计

刘 媛

(安徽电子信息职业技术学院电子系,安徽 蚌埠 233000)

SolidWorks是目前使用十分广泛的三维CAD软件。Solidworks的二次开发可以为现代企业提供本地的专门的CAD/CAE软件。使用SolidWorks提供的 SDK工具调用API函数开发SolidWorks DLL 程序是二次开发的关键技术。

SolidWorks;vc++;二次开发;活动锥套

1. 引言

SolidWorks是Windows环境下的基于三维造型的机械设计CAD软件,目前使用十分广泛。由于采用参数化尺寸驱动和特征造型技术,以及全相关的数据管理,在建立零件的三维模型后 ,可以动态模拟装配过程 ,还可以由三维实体自动生成二维工程图。在某一阶段中对模型进行了修改 ,则相关的数据文件也会相应更改。【1】

虽然 SolidWorks软件易学易用,但仍然不能完全满足特定企业的特殊要求。为了适合特定企业的特殊需求,形成企业自己的特色,使 SolidWorks在我国的企业中有效地发挥作用,并使常用的或重复的任务自动化,提高效率,就必须对其进行本地化和专业化的二次开发工作。

2. SolidWorks二次开发简介

以 SolidWorks的二次开发为例,目前对三维造型软件进行二次开发的一般流程如图1所示。

3. SolidWorks二次开发原理和关键技术

SolidWorks的API(Application Program Interface,应用程序接口)是一个基于 OLE (Object Linking and Embedding,对象的嵌入与链接)Automation或 COM(Component Object Model,组件对象模型)的编程接口,其中包含了数以百计的功能函数,利用这些函数,用户可以开发出所需要的SolidWorks的专用模块。【2】

图1 二次开发的一般流程

由于SolidWorks API接口采用面向对象的方法,所有函数都是相关对象的属性或方法。程序员可以对这些完全面向对象的类派生子类, 进一步生成这些类的对象,就可以设置或修改对象的属性,运行对象的方法,实现对于SolidWorks 的数据库、图形系统和系统界面的访问。通过对 SolidWorks对象的属性的设置和方法的调用,就可以在用户自己开发的 DLL中实现满足用户需求的功能。

在SolidWorks2007二次开发时,使用的是ATL对象向导“SolidWorks API SDK”。SolidWorks API SDK是基于SolidWorks API的二次开发工具。可以从SolidWorks网站下载,下载以后解压安装,在默认地址 C:Program FilesMicrosoft Visual StudioCommonMSDev98Template ATL中生成文件 SwAddin。API中的数百个函数都可以被Visual C + + 调用。

启动vc++,选择ATL COM AppWizard项目类型开发dll类型的文件。使用DLL有很多益处,例如,一旦装入内存,函数就可以被正在运行的程序所调用,不必重复编译和链接。也会使得程序的开发更为灵活。对于 SolidWorks而言,DLL最大的好处就是可以实现对SolidWorks底层的开发,且代码的执行效率高,可以将DLL以插件的形式无缝集成到SolidWorks主菜单中去。

4. 基于VC++的SolidWorks参数化设计实例

下面以液压机辅具的一个活动锥套零件为例详细说明设计方法和过程。

4.1 设计思想

本程序可以根据用户输入的尺寸参数在 SolidWorks系统中自动绘出活动锥套的零件图 ,从而实现活动锥套的三维造型参数化设计。程序是在Visual C++6.0 开发环境下首先建立与 SolidWorks2007软件 COM 接口的通讯 ,定制SolidWorks 系统的菜单,并通过 MFC类库进行主控界面设计,编译后生成 SolidWorks 的动态链接库文件dll .注册成功后就可以加载为 SolidWorks 系统的插件。DLL 文件加载成功后 ,用户就可打开自定义的菜单弹出程序的主控界面 ,通过人机交互操作输入活动锥套的尺寸参数, SolidWorks 自动绘制图形,实现了二次开发的 CAD系统与SolidWorks的无缝集成。

4.2 设计过程

4.2.1 增加菜单和菜单项

首先用VC++建立一个ATL COM AppWizard工程,名为 hdjt, 服务器类型为 DLL。建立工程以后,在 hdjt class右键选择new atl object,进一步选择swaddin。将ATL object Wizard name 改为 swobj,这样就可以生成一个在插件和Solidworks之间进行通讯的接口Iswobj。

建立字符串表后,编辑AddMenus()函数,添加代码,具体可以参阅资料[2].编译、构建以后得到一个名为hdjt的dll文件。一般情况下,该dll文件已经注册为Solidworks的插件。直接用Solidworks打开这个dll文件,就可以实现dll文件的加载。

4.2.2 绘制图形

在Solidworks环境下,绘制活动锥套的图形,并获取基本尺寸的名称,例如“D1@草图1”等。并将文件保存。

4.2.3 建立插件和Solidworks通讯的接口

用VC++建立一个ATL COM AppWizard工程,服务器类型为DLL。建立工程以后,选择new atl object,进一步选择swaddin。如果将ATL object Wizard name 改为swobj。这样就生成了插件和Solidworks之间进行通讯的接口Iswobj.

4.2.4 添加对话框控件

在对话框内添加编辑控件10个,静态文本控件10个,图像控件一个,按钮控件 2个。在 resource file选项卡的bitmap中,将活动锥套的位图引入资源。在图像控件的属性中进行图片设置。编辑控件和静态文本控件名称的对应关系如表1所示。

表1 编辑控件和静态文本控件名称的对应关系表

修改button1按钮控件的标题为:“开始绘制”,进一步添加button1的响应函数。

先在对话框的头文件中定义 CComPtr<ISldWorks> 类型的变量m_iSldWorks_dlg1;然后在button1对应的函数中添加代码.定义了文件名和打开文件方式以后,再定义配置管理器对象并获得当前文件的配置管理器,关键代码如下:

void dlg8306::OnButton1()

{ ………

CComBSTR Name(_T(m_peizhiming));//定义配置名

pConfigurationManager->AddConfiguration(Name,Comm ent,AlternateName,0,ParentConfigName,Description,&pConfig uration);///增加一个配置

BSTR *paramNames=new BSTR[10];///初始化参数名字符串数组

CString a0="D1@草图1";///定义参数名

paramNames[0]=a0.AllocSysString();//将 参 数 名 由CString类型转换为BSTR类型

CString b0=m_d1.GetBuffer(0);///获得用户输入的参数值

paramValues[0]=b0.AllocSysString();///将 参 数 名 由CString类型转换为BSTR类型pConfigurationManager->ISetConfigurationParams ( Name, paramCount, paramNames, paramValues, &retval);///设置配置中的各参数值

………}

按照类似的方法,修改button2按钮控件的标题为:“退出”,添加对应的响应函数。

4.2.5 编译、构建

编译、构建成DLL,加载到Solidworks里以后,当单击用户增加的Solidworks“活动锥套”主菜单下的“零件绘制”菜单项的时候,出现如图2所示对话框:

图2 主控界面

在出现的对话框中输入用户设定的数据,单击“开始绘制”按钮,就可以自动绘制出如图3所示的三维图形:

图3 三维零件图

5 、结语

本文介绍了在 Visual C++ 6.0集成开发环境下开发动态链接库DLL的方法,以实现对SolidWorks进行二次开发,完成机械零件参数化设计。实例表明 ,基于 COM技术的SolidWorks二次开发可以实现SolidWorks系统的功能扩展,操作简单 ,能满足用户本地化三维CAD系统的需要。

[1]王文波,等. SolidWorks二次开发基础与实例[M].北京:清华大学出版社,2009.

[2]江洪,等. SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.

(责任编校:何俊华)

TP399

A

1673-2219(2010)12-0096-03

2010-08-25

刘媛(1971-),女,安徽蚌埠人,合肥工业大学机械学院硕士研究生,安徽电子信息职业技术学院电子系教师,研究方向为CAD/CAE/CAM。

猜你喜欢

锥套二次开发插件
加油锥套对大气数据测量的影响分析
一种农机用锥套式带轮的设计
空中加油最佳对接初始偏差位置
浅谈基于Revit平台的二次开发
基于计算流体力学的空中回收锥套气动特性分析
自编插件完善App Inventor与乐高机器人通信
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用