SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 725|回复: 5
打印 上一主题 下一主题

基于3种开发工具的SolidWorks二次开发对比编程实践

[复制链接]

9

主题

221

帖子

24

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
257
QQ
跳转到指定楼层
楼主
发表于 2009-11-26 15:58:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 前言
随着计算机技术与网络技术的迅速发展,越来越多的企业已经加大对于企业数字化信息化的建设,购买了相应的三维设计软件及其相关产品,这无疑对加速企业产品开发进程,缩短产品制造周期,提高产品质量,增强企业市场竞争力与创新能力发挥着重要作用。然而在工程实践中,其专业针对性不强。为此,人们通常通过对CAD软件的二次开发,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,更好地满足企业设计要求,更好地发挥CAD的效能。
SolidWorks软件是一款基于Windows平台开发的著名的全参数化三维实体造型软件,其设计过程全相关性,可以在设计过程的任何阶段修改设计,同时牵动相关部分的改变。同时SolidWorks具有良好的开放性和兼容性。基于这些优点,本文着重对SolidWorks的二次开发进行分析与研究。通过对该软件的二次开发,使其实现专业化、本地化,更大程度上发挥软件的价值,为制造业信息化与快速化服务。
2 SolidWorks二次开发的大体思路与一般方法
SolidWorks通过COM(Component Object Model,组件对象模型)技术为用户提供了强大的二次开发接口(SolidWorks API),凡支持COM编程的开发工具,如Visual Basic, Delphi等均可用于SolidWorks的二次开发。SolidWorks中常用的API对象如图1所示。SldWorks对象为对SolidWorks工作环境进行访问处理提供了接口。通过此对象可以对SolidWorks工作环境添加菜单、删除菜单、添加工具条、打开文件、新建文件、退出SolidWorks系统。SolidWorks的API对象涵盖了全部的SolidWorks的数据模型,通过对这些对象属性的设置和方法的调用,就可以在用户自己开发的DLL中实现与SolidWorks相同的功能。进行二次开发时,调用SolidWorks中的API函数,可以完成零件的造型和修改,零件各特征的建立、修改、删除和压缩等各项控制,零件特征信息的提取,如特征尺寸的设置与提取,特征所在面的信息提取及各种几何和拓扑信息,零件的装配信息,零件工程图纸中的各项信息等[1]。

图1 SolidWorks API对象层次图
SolidWorks开发系统图如图2所示。其基本工作流程为:基于OLE技术的SolidWorks API将SolidWorks的各种功能封装在SolidWorks对象之中供编程调用,开发者使用二次开发编程语言通过调用SolidWorks的对象体系结构,操纵对象的属性和调用对象的方法便可以建立自主的应用程序,实现二次开发[2-3]。

图2 SolidWorks开发系统框图
随着计算机技术与网络技术的迅速发展,越来越多的企业已经加大对于企业数字化信息化的建设,购买了相应的三维设计软件及其相关产品,这无疑对加速企业产品开发进程,缩短产品制造周期,提高产品质量,增强企业市场竞争力与创新能力发挥着重要作用。然而在工程实践中,其专业针对性不强。为此,人们通常通过对CAD软件的二次开发,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,更好地满足企业设计要求,更好地发挥CAD的效能。

3 运用3种开发工具进行SolidWorks二次开发编程对比
为更好地帮助新人快速入门,笔者以一个简单的圆台参数化交互式调用为例,分别使用VBA语言、VB语言及Delphi这三种不同的开发语言对其进行开发实现[4],接下来详细对比分析这几种语言二次开发时的优缺点及需注意的关键问题。文中所使用的软件版本依次为SolidWorks 2007企业版,Visual Basic 6.0企业版及Delphi企业版软件。
3.1 编程准备
在程序编制前,首先是针对具体的开发工具,进行一些相关的应用或是设置工作。
3.1.1 类型库的导入
因为在使用VB语言及Delphi语言这两种开发工具进行SolidWorks二次开发时一般采用的是DLL动态链接库方式,必须导入相关的类型库,接下来才能调用SolidWorks的对象、方法与属性。而对于采用VBA语言,即采用录制实现SolidWorks二次开发的方式,由于是内嵌于SolidWorks的编程语言,不需要导入相关类型库。
对于VB而言,添加引用的步骤是:单击菜单栏中【工程】【引用】命令,选择“SolidWorks exposed Type Libraries For add-in Use”(SolidWorks插件库文件)、“SolidWorks 2007 Type Libray”(SolidWorks库文件)和“SolidWorks Consant Type library”(SolidWorks常数库),如图3所示。
对于Delphi而言,导入类型库的步骤是:单击主窗口中 “Project” “Import Type Library”命令,在弹出的如图4所示的“Import Type Library”对话框中对SolidWorks类型库进行注册,将类型库文件SldWorks.tlb装载到Delphi中。选中“SolidWorks 2007 Type Library(Version f.0)“,单击“Creat Unit”按钮,Delphi将在其Import子目录下生成该类型库的Object Pascal文件Sldworks_TLB.Pas,该文件包括SolidWorks提供的所有API函数。接下来单击主窗口中 “Project” “Add to Project”菜单命令,在弹出的 “Add to Project”对话框中,选择Delphi的Import子目录下SolidWorks类型库单元文件Sldworks_TLB.pas,将其添加入工程中。

图3 VB中引用SolidWorks类型库对话框

图4 Delphi中导入SolidWorks类型库对话框
3.1.2 编辑窗体界面
在编辑窗体一栏,三者的区别不大。其中VB语言与因为基于同一语言,编辑窗体时操作一致,Delphi语言的窗体编辑业余前两者相似,只是组件名的稍微区别(如文本编辑组件在Delphi中使用Edit控件,而在VB中使用TextBox控件)。三种语言下编辑好的窗体界面如图4所示,接下来便是设置相应控件属性。

图4 编辑后窗体界面
3.2 程序编制
3.2.1 接口相关文件编制
在调用SolidWorksAPI函数进行零部件建模之前,首先编写接口相关文件,设置好绘图环境。相关的源代码如下如图5所示:


Delphi 7.0中
图5 接口相关文件编制源代码
从上述源代码中可以分明看出,语句简洁的是语言和VB语言,从定义变量直到获取SolidWorks接口并新建一个零件文件只需要简单的几句语句即可实现,速度最高。而Delphi需要的语句最多,同时对于程序中的变量需要预先定义,其接口相关文件编制较为繁琐。但特别之处的一点就是Delphi语言的自动化程度较高,如添加一个组件的话,在“type”中会自动添加该组件的类型和过程的声明。
3.2.2 零部件建模命令的实现
完成接口相关文件编制及环境设置之后,接下来的任务就是绘制图形。使用三种开发工具绘制圆台的源代码如图6所示:

Delphi 7.0中
图6 绘制圆台的源代码
通过对比上述源代码,可以看出,语言和VB语言中绘制圆台程序一致(仅有变量参数不同)。Delphi与上述二者的差别较大,主要是API函数内参数形式与内容的不同,语句的格式及所使用的API函数相同,参照Delphi语言格式要求可以很方便地对录制的相关源码进行修改与完善,以提高Delphi语言编程速度与效率。
4 结论
本文使用VBA语言、VB语言及Delphi这三种不同的开发语言实现了一个简单的圆台参数化交互式绘制程序,对二次开发过程中的相关问题做了详细的对比分析。通过实际编程过程,对于上述三种开发工具的优缺点有了更加明确的认识:

(1)使用VBA进行二次开发(即通过录制及编辑实现二次开发),优点在于:操作简便;可使得重复的任务自动化;定制和扩展客户应用程序功能;将客户应用程序及数据集成到其他应用程序中;最大的优点在于可以便捷高效地实现工作任务。但其缺点在于使用VBA开发的程序不能脱离他的宿主程序,可移植性不好,必须在“父”环境中才可以得以实现;且录制的代码混乱,必须经过修改与调试才能最终得以实现。
(2)使用VB进行二次开发,优点在于:代码简洁,易于编辑,可读性很强;简单易学,学习过程中很容易上手;功能齐全,程序员可以轻松的使用VB提供的组件进行二次开发,快速建立属于自己的应用程序,在其各项高效强大集成功能的支持下,最终可方便快速地完成二次开发任务,是一个最为理想的二次开发工具。
(3)使用Delphi进行二次开发,优点在于:Delphi同时兼备了VC功能强大和VB简单易学的特点,学习过程中很容易上手,自动化程度很高且集成了强大的数据库功能,也是用于二次开发的一个强大而高效的工具。但其缺点在于接口相关文件编制较为繁琐,且不能较为直接地利用录制这一高效的参考工具,因此开发效率稍逊于与录制同一“语系”的VB语言。
通过对CAD软件的二次开发,开发符合国家标准、适合企业实际应用的功能模块,以极大地提高这一通用系统的附加值,更好地满足企业设计要求,已经成为信息化、数字化时代的客观需要与必然发展趋势。希望本文的论述能够为新人入门及迅速掌握SolidWorks二次开发的思想与技巧提供帮助,共同提升CAD/CAE等通用软件的附加值,为制造业信息化、数字化与快速化服务。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞6964 拍砖拍砖4444
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

7

主题

213

帖子

19

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
252
QQ
沙发
发表于 2009-11-26 16:04:24 | 只看该作者
建议贴到二次开发板块。
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

11

主题

277

帖子

31

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
325
QQ
板凳
发表于 2009-11-26 16:06:13 | 只看该作者
了解,技术创造价值~~!~~
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

212

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
248
QQ
地板
发表于 2009-11-26 16:09:07 | 只看该作者
学习中呀……
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

214

帖子

23

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
247
QQ
5#
发表于 2009-11-26 16:11:22 | 只看该作者

   经典案例图书
文字太多。。。。。。。。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

74

主题

277

帖子

212

金币

堂主

Rank: 4

积分
526
QQ
6#
发表于 2009-11-26 16:19:38 | 只看该作者
是从前言上弄的吗?举个例子最好
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2024-6-6 12:53 , Processed in 0.219337 second(s), 41 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

快速回复 返回顶部 返回列表