当前位置:首页 >> 机械/仪表 >>

基于Solidworks的零件参数化设计


基于 Solidworks 的零件参数化设计
摘要:论述了利用 Visual C++ 6.0 对 Solidworks 进行二次开发 的基本原理和一些关键技术,开发了可以与 Solidworks 无缝集成的 动态链接库 DLL,并且介绍了一个简单的应用实例的实现。

0 引言
Solidworks 是一款非常优秀的三维机械软件,其易学易用、全 中文界面等特点深受广大工程技术人员喜欢。随着学习和使用 Solidwork 的人员越来越多, 企业为了提高效率和市场竞争力,必然 有快速开发新产品、形成自身产品特色的需求,而且对于一些存在 着许多重复性的劳动的产品设计需要缩短产品的开发周期。因此有 必要对 SolidWorks 进行二次开发,使其能够在输入少量变化参数的 情况下迅速生成所有产品模型并装配,最终生成工程图。 SolidWorks 二次开发分两种,一种是基于 OLE Automation 的 IDispatch 技术,一般常用于 Visual Basic、Delphi 编程语言的接口, 通过 IDispatch 接口暴露对象的属性和方法, 以便在客户程序中使用 这些属性并调用它所支持的方法,此种技术只能开发 EXE 形式的 程序,所开发的软 件 不 能 直 接 加 挂 在 SolidWorks 系 统 下,无 法 实 现 与 SolidWorks 的集成;另一种开发方式是基于 COM 的,这种技术可以使用最多的 SolidWorks API(Application Programming Interface, 应用程序接口) 函数。 实际上 SolidWorks 本 身就是用 Visual C++编写的, 所以使用 Visual C++通过 COM 接口

开发,可以实现对 SolidWorks 底层的开发并且代码的执行效率高。 因为本文开发的是 SolidWorks DLL(Dynamic Link Library,动态链 接库) 插件,故采用基于 COM 的开发方式。

1 SolidWorks 二次开发原理
1.1 SolidWorks API 中的术语
COM ( Component Object Model , 组 件 对 象 模 型 ) 技 术 是 SolidWorks API 的基础,COM 对象是一种包含接口、属性和事件以 对象形式封装的实体, 它以接口的方式提供服务, 这种接口是 COM 对象与使用 COM 对象的客户程序进行通信的唯一通道。 OLE (Object Linking and Embedding,对象的链接和嵌入)可以 使应用程序之间能够通过数据嵌入或链接的方式共享数据。它是 SolidWorks API 构造的基础,是深入理解 SolidWorks API 的关键。 SolidWorks API 是 SolidWorks 作为 OLE 自动化服务器提供的属性和 方法,我们开发的插件就是使用这些接口的 OLE 客户。

1.2 开发工具 Visual C++ 6.0
SolidWorks API 是基于 COM 组件技术构造的, SolidWorks 通过 COM 技术为开发人员提供了强大的二次开发接口, 因此 Visual C++ 6.0 作为当今最流行的软件开发工具之一,是程序员的首选编程利 器。它提供了强大的集成开发环境,用以方便、有效地管理、编写、 编译、跟踪 C++程序,大大加速了程序员的工作,提高了程序代码

的效率。 使用 Visual C++ 6.0 进行 SolidWorks 二次开发的优势如下: 可以使用 GDI 对象和设备环境类所提供的绘图函数, 可以轻易 的实现绘图功能而且无需考虑具体设备情况; Visual C++ 6.0 开发环 境十分友好,其高度的可视化开发方式和强大的向导工具能够帮助 用户轻松的开发出多种类型的应用程序; Visual C++ 6.0 有着强大的 调试功能, 能够帮助开发人员寻找错误和提高程序效率; Visual C++ 6.0 和 SolidWorks 有极好的连接性,能够直接调用许多资源,方便 的在 SolidWorks 上添加命令和各种控件。 因此,可以说它是 SolidWorks 的最佳开发工具,适用于大型系 统的开发,而在使用 Visual C++ 6.0 进行二次开发时的不足之处在 于对开发人员的要求比较高。

1.3 SolidWorks API 对象模型
SldWorks 对象是 SolidWorks API 对象模型中的最高层对象,它 能够直接或间接地访问 SolidWorks API 中的所有其他对象。利用 SldWorks 对象可以实现应用程序的最基本操作, 如生成、打开、关 闭、结束文件、重排图标和窗口、设置当前的激活文件、生成属性 定义, 也可以对 SolidWorks 的系统变量进行设置。

图 1. SolidWorks API 接口对象

2 SolidWorks 二次开发的关键技术
SolidWorks 软件的 COM 接口支持使用 Visual C++编程语言开 发 DLL(Dynamic Link Library,动态链接库)程序。DLL 是一种用户 模块,由用户自己开发的、可以加入到最终用户 (包括用户本人和其 他使用该模块的人)应用程序中提供某一特定功能的函数和类的集 合。如 SolidWorks 系统自带的插件 PhotoWorks、Animator 等都是 SolidWorks 的动态链接程序库(. dll)。 通过 Visual C++编写基于 COM 的 DLL 程序,能直接在 SolidWorks 的界面下添加菜单、工具条等, 在 注 册 表 中 注 册 成 功 即 可 成 为 SolidWorks 的 插 件 , 实 现 了 与

SolidWorks 的无缝集成。

2.1 DLL 的创建
首先需要安装 SolidWorks 公司提供的 SolidWorks API SDK, 可 以从 SolidWorks 公司官方网站上下载与 SolidWorks 软件版本相对应 的 api_sdk.zip 文件, 安装好 API SDK 后才可以使用 SolidWorks API 接口的全部功能函数。 然后启动 Visual C++ 6.0,新建 ATL COM AppWizard 工程, 在 类 视 图 中 新 建 一 个 ATL SolidWorks 对 象 这 样 一 个 SwAddIn(SolidWork 插 件 ) 对 象 就 被 插 进 工 程 中 , 并 且 取 得 了 SolidWorks API 的最高级对象 SldWorks 的控制指针。

2.2 DLL 中添加资源的方法
在动态链接库中, 当用户需要添加自己的资源( 如对话框) 时, 应明确指出在什么时候使用自己的资源,否则 SolidWorks 分不清楚 哪些是由系统控制的资源, 哪些是由用户控制的资源, 会发生冲突, 导致程序运行错误。避免资源冲突的方法是在使用自己的资源之前 调 用 AfxGetResourceHandle 函 数 保 存 当 前 的 资 源 , 然 后 调 用 AfxSetResourceHandle 函数把当前资源设置成新的资源,当使用完 自己的资源后, 再调用 AfxSetResourceHandle 函数恢复先前已保存 的资源。创建本程序的运行界面时, 首先用对话框编辑器创建对话 框模板资源 , 加入所需控件 , 再用 Class Wizard 为对话框生成

CMainDlg( 基类为 CDialog),并加入所需的成员变量。

2.3 DLL 与 SolidWorks 的集成
用户可以通过 DLL 程序定制 SolidWorks 的菜单、工具栏资源 等,从而实现二次开发的软件与 SolidWorks 的无缝集成,以下为部 分代码: //在 SolidWorks 主窗口添加菜单 type = swDocNONE; position = 3; menu.LoadString(IDS_MYADDIN_VC_MENU); m_iSldWorks->AddMenu(type, menu, position, &retval); //添加次级菜单 position = -1; menu.LoadString(IDS_MENU_INSERTSKH_ITEM); method.LoadString(IDS_MENU_INSERTSKH_METHOD); hint.LoadString(IDS_MENU_INSERTSKH_HINT); m_iSldWorks->AddMenuItem2(type, m_swCookie, menu, position, method, update, hint, &ok);

3 二次开发实例
本实例使用 SolidWorks API 实现了直齿圆柱齿轮的参数化设 计。

使用方法:首先将生成的 DLL 插件装载到 SolidWorks 中,然 后新建一个零件文件,选择【配置】|【齿轮】命令如图 2 所示,

图 2.选择【齿轮】命令

弹出齿轮参数对话框,在其中输入齿轮参数,如图 3 所示

图 3.输入齿轮参数

生成的齿轮模型如图 4 所示。

图 4 生成的齿轮

4 结束语
本文介绍了在 VisualC++6.0 的集成开发环境下通过动态链接库 DLL 对 SolidWorks 进行二次开发实现机械零件参数化设计的方法。 通过实例说明基于 SolidWorks 二次开发可以很好地实现零件参数化 设计,同时利用动态链接库实现与系统的无缝集成,操作简单,能 满足用户开发三维 CAD 系统的需要。


相关文章:
基于SOLIDWORKS的齿轮参数化实体模型设计
基于SOLIDWORKS的齿轮参数化实体模型设计_理学_高等教育_教育专区。本科毕业论文(设计...参数驱动的标准机械零件, 在SOLIDWORKS中由于没有机械零件 的标准库, 齿轮的...
基于Solidworks机械零件参数化设计方法
基于Solidworks 的机械零件参数化设计方法 【摘要】 三维设计软件是机械设计中常用的技术软件,为机械 零部件的结构设计提供了十分方便直观的软件开发平台。 solidworks ...
SolidWorks零件设计表运用参数化设计
SolidWorks零件设计表运用参数化设计_机械/仪表_工程科技_专业资料。SolidWorks零件...基于VC_的Solidworks机械... 3页 免费 基于VC++的SolidWorks机... 4页 免费...
基于solidworks参数化的建模思路及方法
参数化设计主要基于三维软件 的二次开发利用,本文以 Solidworks 标准件库的开发...体)两部分组成的一类 紧固件,需与螺母配合,用于紧固连接两个带有通孔的零件。...
基于SolidWorks的曲轴零件的参数化设计
基于SolidWorks的曲轴零件的参数化设计_机械/仪表_工程科技_专业资料 暂无评价|0人阅读|0次下载基于SolidWorks的曲轴零件的参数化设计_机械/仪表_工程科技_专业资料。...
基于SolidWorks的曲轴的参数化设计
基于 SolidWorks 实现了汽车发动机曲轴的参数化设计,从而加强了 SolidWorks 软件...在进行模型库中零件或装配体的 造型时,并不使用宏录制整个造型过程,而在模型库...
基于SolidWorks的液压缸参数化设计
基于SOLIDWORKS的齿轮参... 31页 1下载券 基于SolidWorks的参数化... 3页 免费...概念设计以及 并行设计思想,工程设计人员设计开始阶段可快速草拟产品的零件图,通过...
SolidWorks参数化设计简介
SolidWorks参数化设计简介_计算机软件及应用_IT/计算机_专业资料。SolidWorks参数化...基于SolidWorks的参数化... 4页 免费 喜欢此文档的还喜欢 基于SolidWorks斜齿轮...
SOLIDWORKS装配体中使用方程式进行参数化设计
SOLIDWORKS装配体中使用方程式进行参数化设计_计算机软件及应用_IT/计算机_专业资料。SOLIDWORKS装配体中使用方程式进行各个零件之间关系参数化设计 ...
SolidWorks参数化设计
就是要实现特定零部件的参数化设计,并在 SolidWorks 中建立专用设计环境.编程实现零部件参数化的方式有尺寸驱动法 和程序驱动法两种, 在基于 SolidWorks 的二次开发...
更多相关标签: