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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

SolidWorks的三维CAD文件快速发布模块的设计

[复制链接]

98

主题

321

帖子

185

金币

堂主

Rank: 4

积分
506
跳转到指定楼层
楼主
发表于 2013-3-31 14:44:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
三维建模软件已在CAD技术中广泛应用,但这些软件也并非十全十美,都存在着某些功能不全,导致用户使用效率低下的问题。设计人员采用三维建模软件设计产品,产生了大量装配体、零件、二维图纸等格式数据文件。然后再将需要的数据文件准确地组织好发给加工单位。但是通常存在的问题是,在设计目录中存在其他大量不需要的数据文件,或者需要的数据文件存在不同的目录中,并且三维数据文件存在相关性,装配体、零件、二维图纸相互关联,缺一不可。因此对于有上百、上千零件的数据文件,要准确地寻出需要的相关零件,具有相当大的工作量。而如果数据文件发送错误,就会导致延误加工周期的后果。

针对以上的问题,基于提高三维CAD技术在应用中的自动化,提高设计效率。我们基于三维建模软件,建立了一个三维CAD文件快速发布模块。该模块采用动态链接库的方式,作为独立的DLL(Dynamic link library)文件存在。程序运行时,将该动态链接库加载到其内部,如同使用自身的功能。

近年来,为提高设计速度及效率,王庆明等讨论了用动态链接库方式实现MFC开发应用程序的关键技术,杨洁等讨论了组件化程序设计的COM技术及其在中的应用,徐格宁研究了用VC++进行的变量化设计,使SolidWorks的技术通过二次开发得到广泛应用。

1 快速发布模块的方案设计

1.1 SolidWorks二次开发接口

由于软件的知识产权及技术机密等问题,对三维CAD软件SolidWorks进行二次开发,不可能通过增加或修改系统源程序来完成。因此,SolidWorks软件提供了支持二次开发的应用编程接口(API),用户通过该接口可以开发出新的功能模块,满足特定的需求。

SolidWorks是基于COM组件技术构造的,凡是支持COM编程的开发工具,如Visual C++、Visual Basic、Delphi等均可用于SolidWorks的二次开发。由于SolidWorks系统本身是用VC++编写的,所以VC++与SolidWorks有极好的连接性,可以实现对SolidWorks底层的开发而且代码的执行效率高。通过VC++编写基于COM的动态链接库DLL文件,可直接在SolidWorks的界面下添加菜单、工具条等。本设计将采用VC++语言来实现三维文件快速发布模块的设计,其基于动态链接库的二次开发运行模式原理图,如图1所示。


图1 DLL动态链接库二次开发运行模式原理图

1.2 维CAD文件快速发布模块的结构设计

三维CAD文件快速发布模块的设计就是为了解决在数据文件传输的过程中,能够将所要传输的数据文件准确地组织好发给加工单位,同时保证所产生的文件保持完整、准确,文件与文件之间的相关性保持完好,没有存在文件缺失的情况。因此在文件快速发布模块的设计中,设计一个可以加载到SolidWorks的DLL插件,该插件可以实现对数据文件的进行遍历,同时将遍历后的数据文件复制到指定的文件夹,从而完成数据文件的快速发布。

三维建模软件文件快速发布的操作流程如图2所示。


图2 三维CAD文件快速发布模块的结构图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞4663 拍砖拍砖3085
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

11

主题

187

帖子

67

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
276
QQ
沙发
发表于 2013-3-31 14:58:00 | 只看该作者
2 快速发布模块的设计

    三维CAD文件快速发布模块包含4个组件:SolidWorks addin插件组件、用户操作界面组件、装配体遍历组件、数据文件发布组件。

    2.1 SolidWorks addin插件组件的实现

    对于SolidWorks addin插件组件的创建,基本方法是利用SolidWorks ATL Object Wizard制作DLL文件,通过编译,完成DLL文件在SolidWorks中的自动注册。同时在SolidWorks中增加一项菜单,此菜单有相应的下拉菜单,对应相应的功能,如图3所示。其基本过程如下:

    1)在VC++中,通过ATL COM AppWizard新建一个支持MFC的DLL工程。

    2)在新建的DLL工程名上右击,选择New ATL Object,在弹出的ATL Object Wizard对话框中选择SwAddln,生成一个SwAddln对象,同时自动生成一个名为Iswobj的接口,用于和SolidWorks通信。

    3)添加自定义方法。在Class View界面中,右击Iswobj类,选择Add Method命令,输入相应命令名,VC向导自动生成相应代码,用户添加实现的相关代码。

    4)在自定义的菜单项下增加相应的菜单命令。通过VC++开发环境中资源管理器的String Table,添加String资源。包括命令项显示的内容、命令项的相应函数(对应步骤3的命令名)、命令项显示的提示信息。

    5)菜单命令的函数实现。在swobj.cpp文件中的void Cswobj::AddMenus()函数中添加相应代码。此函数可以实现在无文档模式、零件文档模式、装配体文档模式、工程图文档模式下分别添加各自的菜单代码。

    6)编译并链接工程,VC++开发环境自动在注册表的HKEY LOCAL_MACHINESOFTWARESolidWorksAddlns下添加一键值,对应DLL工程对应的COM对象的唯一标志CLSID:在注册表的HKEY_CLASSES_ROOTCLSID下添加该工程的键值,在该键值下有5项:InprocServer32、ProgID、Programmable、TypeLib、VersionlndependentProgID。


    图3 三维CAD文件快速发布模块菜单

    2.2 用户操作界面组件的实现

    三维CAD文件快速发布模块的用户界面是通过在SolidWorks主界面中添加设计菜单按钮,并通过菜单按钮的调用来实现的。调用程序后,显示一个快速发布的对话框,如图4所示。

    在对话框中,主要功能有两个按钮,一个为“装配体遍历”,用于对当前的装配体进行遍历,显示其装配及子装配结构:一个为“快速发布”,用于对遍历的文件进行复制,将此装配体及所有下级装配体、零件、工程图复制到指定目录。在保存至文本框旁边有一“浏览”按钮,用于显示通过树状目录浏览得到用户所要复制的指定路径,也可以直接在文本框内输入指定路径。

    在对话框的头文件中,要添加SolidWorks的类型库:sldworks.tlb、swpublished.tlb、swconst.tlb。在对话框类中添加一个函数,用于得到SldWorks对象:void*dlg::getSW(ISldWorks*sw)。


    图4 快速发布对话框
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

13

主题

217

帖子

22

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
260
QQ
板凳
发表于 2013-3-31 15:02:15 | 只看该作者
2.3 装配体遍历组件的实现

    装配体遍历组件是整个模块实现的关键技术。需要通过循环搜寻打开的SolidWorks装配体及其下级的所有子装配体和零件、工程图

    其设计的思路是:首先得到文档列表对象ENUMDOCUMENTS2,然后通过文档列表对象来遍历对象中的文件。从SldWorks对象对其子对象进行遍历,直到找到特定的对象——文档列表对象ENUMDOCUMENTS2,然后通过函数m_iSldWorks_dlg→EnumDocuments2对其进行操作,从而获得当前所有打开的文件列表。由于装配体及其至装配体、零件存在多个文件,需要一个循环操作while来进行操作。最后得到文件的完整路径名,并且显示每个文件的文件名,该项操作可以通过函数m_iModelDoc→GetPathName来完成。应用程序段:


    2.4 数据文件发布组件的实现

    通过装配体遍历,得到了此装配体下的所有子装配体及其零件名称,通过命令:CopyFile(LPCSTR) SourcePath,(LPCSTR) DisPath,cover),将此装配体下所含的装配体、零件及工程图均快速发布到用户指定的目录中。这样在三维CAD文件的传输中,既可以保证不发布不必要的文件,又保证了发布的文件的准确性,提高工作效率。应用程序段如下:

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

231

帖子

25

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
272
QQ
地板
发表于 2013-3-31 15:04:22 | 只看该作者
3 运行实例

    利用上述组件,我们开发了三维CAD文件快速发布模块。在SolidWorks中打开需要发布的装配体,在菜单项中选择:FastGenerate——遍历装配体,打开快速发布窗口,选择遍历装配体按钮,显示一个对话框,内部显示了遍历后的子装配体及零件的名称,如图5所示。通过在保存至指示的文本框内输入目录名,可以将此装配体的所有相关工程文档发送到指定目录。


    图5 模块运行实例

4 结束语

    本文利用SolidWorks提供的二次开发接口,在VC++编译环境下,开发了三维CAD文件的快速发布模块,并将其通过动态链接库技术集成到SolidWorks环境中。可以实现将需要外发加工的三维CAD文件快速地发布到指定目录,保证了三维CAD的装配体、零件、工程图的全相关性,大大提高了设计效率。其中设计思路对于Pro/E、NX等三维CAD文件的二次开发也同样具有指导意义。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-21 21:57 , Processed in 0.200667 second(s), 41 queries .

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

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

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