0 引言

随着数字信息化进程的快速推进,如今三维CAD技术在越来越多的企业当中得到运用。为了降低在设计生产中的成本,缩短设计周期,增强企业竞争力,三维参数化技术随之应声,它凭借更贴近现代概念的设计以及并行设计的思想得到了越来越多工程设计人员的青睐,设计人员可以在早期的开发阶段运用三维参数化技术快速模拟零件的三维草图,再通过数值输入对其形状及大小进行约束,绘制精确的零件图,并将零件放入零件库中,方便以后的使用及修改工作。从而大大减少了重复性绘图的时间,提高了工作效率。

本文以三维CAD软件SolidWorks为平台对参数化二次开发的方法以及关键技术进行了讨论,通过例举实例来详细介绍其二次开发的整个过程。

1 SolidWorks二次开发基本原理

 1.1 SolidWorks二次开发的两种形式

任何支持OLE(Object Linking and Embedding,对象连接与嵌入)和COM(Component Object Model,组建对象模型)接口的编程语言都可以作为SolidWorks的开发工具。SolidWorks二次开发分为两种:一种是基于自动化技术的,可以开发EXE形式的应用程序。另一种开发形式是基于COM的,这种技术可以使用最多的SolidWorks API(应用程序编程接口)。API可控制SolidWorks会话的方式,生成*.dll格式的文件,也就是SolidWorks的插件。

 1.2 SolidWorks二次开发的对象

从图1中可以看到SolidWorks对象包括ModeIDoc、Environment、Frame、AttributeDef Modeler、SWPropertySheet以及一些其他对象。SldWorks是SolidWorks API中的最高对象,它能够直接或间接地访问SolidWorks API中的所有其他对象。利用SldWorks可以实现程序的最基本的操作,如创建、打开、关闭、结束文件、重排图标和窗口、设置当前的激活文件、生成属性定义,也可以对SolidWorks的系统环境进行设置。SldWorks中所包含的对象分为若干层,每一层又包括若干个对象,每一个对象都有自己的属性、方法和事件。这些OLE对象涵盖了SolidWorks的全部数据模型,通过对SolidWorks的OLE对象属性的设置和对OLE对象方法的调用,就可以在用户自己开发的系统中实现与SolidWorks相同的功能。

图1 SolidWorks API对象梗概图

 1.3 SolidWorks二次开发的工具

SolidWorks的二次开发工具较多,用户可以根据自身的条件及工具的特点,选择一种合适的开发工具。SolidWorks主要的二次开发工具有:Delphi、Visual C++6.0、Visual Basic 6.0、VBA等。相比较而言,Visual Basic编程语言具有不可替代的简单易用性和真正的“所见即所得”特性为广大工程设计人员所接受。

2 SolidWorks二次开发的方法及流程

2.1 SolidWorks二次开发的方法

本文主要介绍基于VB语言的SolidWorks二次开发,以VB语言对其进行二次开发又可以通过两种形式,一种是语言的完全编程开发,另一种是设计变量和编程语言相结合的开发形式。前者需要设计人员通过API接口,对要表述的所有对象进行程序编写,这样可以实现三维图形的程序驱动,并且能精确构造复杂尺寸的三维造型。但是这种开发形式要求设计者精通编程语言,同时,由于所有对象都需要人工表述定义,所以存在设计周期较长,工作量较重,开发效率不高的问题。后者主要是以SolidWorks中提供的宏的录制功能作为工具。在编写程序时,把通过宏操作获得的代码用做工程基础,然后对其进行适当的编辑修改,再添加到应用程序的代码中。这样,通过宏操作和交互式的执行任务,不仅可以提高编程效率,而且更便于工程设计人员所使用。凭借后者在开发过程中所体现出的明显优点,这种开发方式也成为了SolidWorks二次开发的主旋律,以下针对该种方法来详细说明SolidWorks二次开发的整个过程。

2.2 SolidWorks二次开发的流程

应用程序的开发流程如图2所示,其中主要包括建造三维模型图并确定各尺寸关系,Access数据库连接,用户界面设计,编写程序代码,编写窗体事件和调试程序等内容。

图2 SolidWorks二次开发的流程图

3 SolidWorks二次开发的关键技术

下面以经典齿轮为例来详细说明SolidWorks二次开发的整个过程。在这里要强调的是,在对齿轮的标准建模时,尽量用最少的步骤,尽少的参数尺寸来清晰定义齿轮特征。如图3所示,为圆柱齿轮的设计草图。

图3 圆柱齿轮草图

1)确定齿轮的设计关系

齿顶高ha=ha*m=m;

齿根高hf=(ha*+c*)m=1.25m;

全齿高h=ha+hf=(2ha*+c*)m=2.25m;

分度圆直径d=mz;

基圆直径db=dcosa;

齿顶圆直径da=d+2ha=m(z+2ha*);

齿根圆直径df=d-2hf=m(z-2ha*-2c*);

由以上齿轮的标准公式得出,确定齿轮规格的参数主要有五个,它们分别为模数m、齿数z、压力角a、齿顶高系数ha*、顶隙系数c*。

2)在设计关系明确后,确定程序中需要定义的齿轮的变量参数“文件名”、“材质”、“型号”、模数“m”、齿数“z”、压力角“a”、齿顶高系数“ha*”、顶隙系数“c*”、齿宽“b”。

3)运用SolidWorks软件绘制齿轮的三维模型,整个绘图过程用宏功能进行录制。

4)在Visual Basic 6.0中建立一个用户友好界面。如图4所示,在界面中加入图片显示窗口,让用户能够直观认识零件造型及参数变量,同时加入用户输入窗口,让使用者可以通过对照名称标注,人工定义数值来进行条件约束。添加命令按钮来实现绘图及退出程序的功能。

图4 圆柱齿轮的参数化界面

5)数据定义的错误提示

在自定义环境下对齿轮进行数值定义的过程中,齿数不能小于17,圆孔直径不能过大。

为了让使用者直观找到问题,加入msgbox提示,如图5所示。

图5 错误提示

6)优化程序并为参数变量赋值

程序中关键代码如下:

以下代码为建立VB6.0与SolidWorks之间的联系。

7)Access数据库连接

此外还可以根据需要,创建适合于具体用户的本地变量参数组,设计人员将各变量所对应数值在Access数据库中进行记录并与齿轮参数化程序连接,这样使用者只需在界面中选择特定型号即可得到所需齿轮。如图6所示。

图6 Access数据库中建立的参数关系

8)将程序添加为SolidWorks插件

首先创建一个文件夹,用来存放宏文件。如“D:\Sol.dworks2012\宏文件”;

然后建立文件名为“圆柱齿轮.swp”的宏文件,内容如下:

最后从工具中调用新建宏按钮命令。如图7中加红框部分所示 。

图7 建立【圆柱齿轮】按钮

4 结束语

设计人员通过对SolidWorks的二次开发,可以根据本地的具体问题,设计开发出适用于工作需要的应用程序,建立起适合用户需要、专用的SolidWorks功能模块,运用这项技术可以简化设计工作,缩短产品开发周期,提高产品开发效率,而且应用范围广泛,为众多领域的研发设计工作指明了方向。

基于VB语言对SolidWorks参数化设计的二次开发的更多相关文章

  1. 在云平台上基于Go语言+Google图表API提供二维码生成应用

    二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下 ...

  2. 基于EasyNVR摄像机无插件直播方案二次开发实现自己的摄像机IPC-NVR无插件化直播解决方案

    背景介绍 在之前的博客中<基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控>,对EasyNVR所实现的功能我们已经有较多描述,这些也在方案地址:http://ww ...

  3. 使用C#语言,如何实现EPLAN二次开发 Api插件及菜单展示

    上期我们谈谈了谈EPLAN电气制图二次开发,制图软件EPLAN的安装和破解,今天我们来说说使用C#语言,如何实现Api插件及菜单,今天它来了!!! 关于项目环境的搭建请参考:https://blog. ...

  4. SolidWorks二次开发的研究

    三维机械设计软件SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,是由美国SolidWorks公司在总结和继承大型机械CAD软件的基础上,在Windows环境下 ...

  5. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  6. 大华门禁SDK二次开发(一)-技术沟通

    项目中需要能够查询门禁信号和控制门禁设备,因此需要基于大华门禁SDK进行二次开发,开发语言C#.门禁开发中遇到了一些问题,经过与大华技术的邮件沟通也一一解决.做这个开发的时候,发现网上的资料比较少,想 ...

  7. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

    1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...

  8. C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)

    1.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCr ...

  9. C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五)

    C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完 ...

随机推荐

  1. win 10 问题

    1.  windows 10 已联网 ,但 访问应用商店 提示 未连接网络. step1:  打开网络和 internet 设置.. step2: 取消 打圈的 两个选择..!就好.

  2. CF914E Palindromes in a Tree(点分治)

    题面 洛谷 CF 题解 题意:给你一颗 n 个顶点的树(连通无环图).顶点从 1 到 n 编号,并且每个顶点对应一个在'a'到't'的字母. 树上的一条路径是回文是指至少有一个对应字母的排列为回文. ...

  3. 打开页面时就提交,可以做一些自动登陆 还有SICLOGIN的测试代码

      <HTML> <head> <title> Untitled Document</title > (1)自动提交表单: <meta http- ...

  4. 最近做了一个短网址服务 di81.com

    最近做了一个短网址服务:   di81.com 项目中有一处需求,需要把长网址缩为短网址,把结果通过短信.微信等渠道推送给客户.刚开始直接使用网上现成的开放服务,然后在某个周末突然手痒想自己动手实现一 ...

  5. 牌型种数-dfs-蓝桥杯2015

    牌型种数 牌型种数 小明被劫持到 X 赌城,被迫与其他 3 人玩牌. 一副扑克牌(去掉大小王牌,共 52 张),均匀发给 4 个人,每个人 13 张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花 ...

  6. Linux误挂载到根目录出现问题!!!!!!!!!!!!!!!

    一.背景: 因根目录/空间不大,故而想将另一硬盘挂载到根目录下(后发现此想法很是幼稚): 二.过程: 1.成功输入命令挂载后,发现出现/上被挂了两个东西,且/下剩余空间还是原来一样大,才发现大错特错: ...

  7. 设计模式学习总结(七)适配器模式(Adapter)

    适配器模式主要是通过适配器来实现接口的统一,如要实现国内手机在国外充电,则需要在不同的国家采用不同的适配器来进行兼容! 一.示例展示: 以下例子主要通过给笔记本电脑添加类似手机打电话和发短信的功能来详 ...

  8. linux 运维基础之 禁止 ping

    ping命令不要小瞧呀,小伙子!!! 听过死亡之ping不? 语法 ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l ...

  9. ELK 搭建实战

    一, 软件介绍 01,为什么用到ELK? 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大 如何 ...

  10. day07 - Python - 面向对象进阶

    本节内容: 面向对象高级语法部分异常处理异常处理异常处理 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 1 ...