注册
登录
会员
领取红包
FTP服务中心
功能插件
统计
帮助
中国模具论坛
»
『 SolidWorks 』
» SolidWorks API二次开发的应用
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
SolidWorks API二次开发的应用
lovezcs
模具初级
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
个人空间
发短消息
加为好友
当前离线
楼主
大
中
小
发表于 2003-3-2 18:08
只看该作者
SolidWorks API二次开发的应用
SolidWorks API二次开发的应用
——模型文件的自定义属性设置
作者:邢启恩
SolidWorks API是SolidWorks的OLE应用程序开发接口,用户可以利用它和支持OLE编程的开发工具,如VB、VBA(Excel,Access)、C、VC++等对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks 功能模块。本文通过介绍“自定义属性”这个程序的开发和使用过程,来简单地说明SolidWorks API的应用,希望起到抛砖引玉的作用。
一、问题的提出大多数工程图纸的标题栏中应该包括一些基本的设计信息,如零件名称、零件代号、材料以及设计人员和设计日期等,其中,零件的名称、代号、材料、数量、重量及一些重要的后处理要求等信息还应该出现在装配图的材料明细表(BOM)中。这些内容如果在工程图中一一进行编写和修改,其工作量是很大的,并且这种处理方法也不利于保证设计信息的一致性,对模型文件(零件或装配体文件)和图纸文件的管理来讲是脱节的。SolidWorks是一个全相关的三维机械设计软件,模型文件中的设计数据,如尺寸、注释、文件属性等内容与工程图相关,因此,我们在处理上述工程图标题栏和材料明细表中的设计数据时,应该将这些内容保存在模型文件中,并且自动显示在工程图相应的位置上。当需要对工程图中的内容进行修改时,直接修改模型文件中的相应数据即可实现。这样的处理方法不仅保证了设计信息的一致性,而且可以大大提高设计效率。根据这个设想,笔者将这些设计信息进行了归纳,并将它们作为模型文件的自定义属性保存在模型文件指定配置的属性(在SolidWorks中,选择菜单“文件→属性”,单击“指定配置”标签,如图1所示)中,针对模型文件指定配置的这些属性可以自动带入到工程图的标题栏和材料明细表。图1中自定义属性的含义和解释如表1所示。图1 指定模型当前配置的属性表1 对图1的解释采用这样的处理方法以后,需要在工程图格式文件的相应位置建立包含这些变量的注释文本即可。同时,对于材料明细表模板进行修改或建立新的明细表模板就可以在装配图中的材料明细表中显示所需要的设计信息(工程图格式文件的定义和材料明细表模板的定义,请参阅《SolidWorks2001中文版实用技术精粹》一书)。因此,无论何时需要修改设计信息,只需在SolidWorks中打开相应的模型文件,修改指定配置属性即可。然而,即使采用这样的处理方法,在修改文件当前配置属性时仍然显得有些繁琐,能否为SolidWorks建立一个工作界面,可以更加方便地添加和修改这些信息就成了问题的关键。
二、自定义属性Cpbom 为了更大程度地提高工作效率,我们利用VB6.0通过SolidWorks API建立了自定义属性设置程序——Cpbom,这个程序通过一个对话界面直接对当前模型文件的当前配置进行添加或修改,其基本功能如下:
☆ 针对配置添加模型文件的自定义属性;
☆ 设置的项目包括:零件代号、材料名称、后处理、设计者姓名、设计日期;
☆ 确定自定义属性后,自动保存文件;如当前文件还没有保存,提示文件保存路径和文件名称;
☆ 针对装配文件,可以选择是否删除“材料”和“后处理”两个属性。本程序利用VB进行编译生成可执行文件。自定义属性界面 “自定义属性”程序就是通过SolidWorks API对当前模型文件中当前配置的自定义属性的名称和值进行“读”和“写”的操作,程序非常简单,这里介绍一下该程序中用到的一些SolidWorks API的对象和方法。
1.SolidWorks对象这里指的是SolidWorks API的最高级别的对象。通过该对象可以控制SolidWorks软件的执行或退出,以及SolidWorks文件的建立、打开、关闭等操作。在VB中利用Create Object方法来获得SolidWorks对象,利用该对象的activedoc方法可以获得当前SolidWorks文件对象,文件对象为空时,表示SolidWorks 没有打开任何文件。
Dim swApp As ObjectDim
activeDocument As ObjectSet swApp=CreateObject("SldWorks.Application")
Set activeDocument = swApp.activedocIf (activeDocument Is Nothing) Then Dim Msg, Style, title Style = vbExclamation
title = "模型自定义属性"
Msg = "请首先打开一个Solidworks模型文件"
Call MsgBox(Msg, Style, title) ' Display error message
End
End If
2.获取当前文件信息自定义属性程序是对模型文件设置自定义属性,与工程图文件无关,因此需要利用GetType方法获得当前文件的类型,并利用Gettitle()方法和Getpathname()方法获得当前文件的名称和存盘路径。
Dim docType As LongDim
docName As StringDim
filename As StringDim
FilePath as StringdocType = activeDocument.
GetTypeIf (docType = swDocPART)
Then docName = "零件"With CPbomfrm .deldescription.Enabled = False .delmaterial.Enabled = FalseEnd With Picture5.Picture = Picture3.Picture
ElseIf (docType = swDocASSEMBLY) Then docName = "装配" Picture5.Picture = Picture2.Picture
ElseIf (docType = swDocDRAWING) Then Style = vbExclamation Msg = "当前文件是工程图文件,请打开零件或装配文件"
Call MsgBox(Msg, Style, title) ' Display error message
End
End
If filename = activeDocument.GETTITLE()
FilePath = activeDocument.getpathname()
3.获取文件配置名称SolidWorks API提供了按照配置名称访问自定义属性的方法——CustomInfo2(读取自定义属性的值)、deletecustominfo2(删除指定的自定义属性)、ADDcustominfo3(添加自定义属性的名称和参数值),这些方法都要求指定文件的配置名称。因此,为了对当前模型文件和当前配置设定自定义属性,必须首先要获得当前配置的名称,利用GetActiveConfiguration()方法可以获得当前模型文件配置的对象,并利用Name方法获得当前配置的名称。
Dim ConfName As StringSet
CurCFG = activeDocument.GetActiveConfiguration()
ConfName = CurCFG.Name
4.按照配置访问自定义属性在本程序中,笔者对于指定配置的属性设置按照如下的步骤:
(1)按照配置名称读取文件中的自定义属性值,并赋值于相应的文本框;
(2)判定当前文件和当前配置是否已经改变,如其中之一发生变化,则提示错误信息;
(3)根据配置名称删除指定的自定义属性;
(4)将相应文本框中的内容按照配置名称添加到模型文件自定义属性名称和参数值。下面对上述控制配置自定义属性的三种方法加以介绍。
☆ CustomInfo2:获取或设置当前文档指定配置的自定义属性的值。
value = ModelDoc.CustomInfo2 (configuration, fieldName)
其中,configuration为配置名称;
fieldName为自定义属性的名称。
☆ deletecustominfo2:删除当前文档指定配置的自定义属性的值
retval = ModelDoc.DeleteCustomInfo2(configuration, FieldName )
☆ ADDcustominfo3:向当前文档中指定的配置添加自定义属性以及值
retval = ModelDoc.AddCustomInfo3 ( configuration, FieldName, FieldType, FieldValue )
其中,FieldType为自定义属性的类型;FieldValue为自定义属性的值。
下面这段代码是单击“确定”的子程序,为了简单,只给出了其中一个自定义属性的处理过程。
Private Sub cmd_OK_Click()On Error GoTo ERR_91
Dim swApp2 As ObjectDim
activeDocument2 As ObjectDim
curcfg2 As ObjectDim
cfgname2 As StringDim
retval As BooleanSet
swApp2 = CreateObject("SldWorks.Application")
Set activeDocument2 = swApp2.activedoc
Set curcfg2 = activeDocument2.GetActiveConfiguration()
cfgname2 = curcfg2.Name' 判断文件或配置是否改变,如改变,则提示错误。
If cfgname2 = ConfName And FilePath = activeDocument2.getpathname() Then ' 删除属性设置
retval = activeDocument2.deletecustominfo2(ConfName, "
artID")' 添加属性
retval = activeDocument2.ADDcustominfo3(ConfName, "
artID", swCustomInfoText, frmPartID) ' 保存文件
retval = activeDocument2.Save()
Else Style = vbExclamation
title = "模型自定义属性"
Msg = "错误:打开的文件或配置已经改变!" & Chr(10) & "请重新执行本程序"
Call MsgBox(Msg, Style, title)
End
End
IfERR_91: Style = vbExclamation title = "模型自定义属性"
Msg = "程序运行错误,文件可能已经关闭" & Chr(10) & "自定义属性无法添加,单击确定退出!"
Call MsgBox(Msg, Style, title)
End
End Sub
三、在SolidWorks界面中执行应用程序对于使用VB编译的EXE、DLL文件,目前SolidWorks还不能直接支持这些文件作为插件使用,如果要在SolidWorks 中直接调用通过VB编译的可执行程序,可以使用SolidWorks“宏”操作来进行。利用“宏”在SolidWorks界面中添加指定的应用程序后,就好像SolidWorks调用了自身的功能一样,利用类似的方法,可以在SolidWorks添加任何可执行的文件。下面利用“自定义属性”程序来说明一下步骤。1.建立“宏”文件在SolidWorks中,我们利用录制并修改“宏”的方法来建立所需要的“宏”文件。主要步骤如下:
(1)选择菜单“工具→宏操作→录制”。
(2)停止录制,并保存宏文件。给定文件名称,如:Cpbom.swp。
(3)选择菜单“工具→宏操作→编辑”,把Cpbom.swp “宏”文件录制的内容全部删除,并输入下面的内容。
Sub main()MyAppID = Shell("C:\Program Files\CPbom\CPbom.exe", 1) AppActivate MyAppID
End Sub
(4)保存并退出宏编辑,返回到SolidWorks环境。
2.指定“宏”操作在SolidWorks中可以指定宏命令的文件位置,并定制工具栏,将所执行的宏操作按钮添加到指定的位置上。
(1)选择菜单“工具→自定义→宏”,在“自定义”对话框中单击“宏”标签。
(2)参考图4的内容添加宏,单击“应用”完成。
(3)在“自定义”对话框中单击“命令”标签,从“类别”列表框中选择“宏”,将所定义的宏(第1个)的图标按钮拖到相应的工具栏中,如图5所示。
(4)单击“确定”按钮,完成宏定义和工具栏定义。
3.执行应用程序定义“宏”以后,单击相应的图标就可以在SolidWorks 中直接执行应用程序。 在SolidWorks中执行应用程序四、总结笔者利用这个“自定义属性”程序,明显提高了工作效率。需要说明的是,SolidWorks API的对象和方法十分丰富,涵盖了所有SolidWorks数据模型,这里介绍的只冰山之一角。另外,程序中提及的自定义属性与企业的要求有关,大家可以通过Email(cadtools@yeah.net)来索要源程序,并根据自己的需要开发适合需要的自定义属性设置程序。(编辑注:该程序收录在《CAD工具集XP》中)
附件:
您所在的用户组无法下载或查看附件
UID
12841
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
性别
男
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
查看详细资料
TOP
刘罗锅
模具高级
潇洒走一回
帖子
4782
精华
19
积分
1212
经验
1212 点
威望
16 点
金钱
2160 ¥
阅读权限
40
在线时间
24 小时
注册时间
2004-3-24
最后登录
2008-12-2
个人空间
发短消息
加为好友
当前离线
沙发
大
中
小
发表于 2003-3-2 18:11
只看该作者
这是一篇经典的文章,为什么我超做不了啊!!!
附件:
您所在的用户组无法下载或查看附件
UID
57583
帖子
4782
精华
19
积分
1212
经验
1212 点
威望
16 点
金钱
2160 ¥
阅读权限
40
性别
男
在线时间
24 小时
注册时间
2004-3-24
最后登录
2008-12-2
查看详细资料
TOP
lovezcs
模具初级
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
个人空间
发短消息
加为好友
当前离线
板凳
大
中
小
发表于 2003-3-2 19:10
只看该作者
你可以的漫漫来
你用VB 我用VC的可以交换一些资料
附件:
您所在的用户组无法下载或查看附件
UID
12841
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
性别
男
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
查看详细资料
TOP
lovezcs
模具初级
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
个人空间
发短消息
加为好友
当前离线
地板
大
中
小
发表于 2003-3-3 09:04
只看该作者
没有人帮忙吗
附件:
您所在的用户组无法下载或查看附件
UID
12841
帖子
59
精华
0
积分
62
经验
62 点
威望
0 点
金钱
62 ¥
阅读权限
20
性别
男
在线时间
0 小时
注册时间
2003-3-2
最后登录
2003-3-9
查看详细资料
TOP
briankuo
模具初级
帖子
214
精华
0
积分
230
经验
230 点
威望
0 点
金钱
0 ¥
阅读权限
20
在线时间
0 小时
注册时间
2003-3-3
最后登录
2008-10-1
个人空间
发短消息
加为好友
当前离线
5楼
大
中
小
发表于 2003-3-3 11:51
只看该作者
很难的
UID
12880
帖子
214
精华
0
积分
230
经验
230 点
威望
0 点
金钱
0 ¥
阅读权限
20
性别
男
在线时间
0 小时
注册时间
2003-3-3
最后登录
2008-10-1
查看详细资料
TOP
zl3r
模具高级
美女掌门人
帖子
1102
精华
6
积分
1094
经验
1094 点
威望
23 点
金钱
5837 ¥
阅读权限
40
在线时间
1 小时
注册时间
2003-4-16
最后登录
2007-11-30
个人空间
发短消息
加为好友
当前离线
6楼
大
中
小
发表于 2003-6-27 21:32
只看该作者
看不太懂。
UID
17189
帖子
1102
精华
6
积分
1094
经验
1094 点
威望
23 点
金钱
5837 ¥
阅读权限
40
性别
女
在线时间
1 小时
注册时间
2003-4-16
最后登录
2007-11-30
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
新手区
论坛帮助
模具技术中心
『 塑胶模具 』
『 结构欣赏 』
『 塑胶模具资料区 』
『 冲压模具 』
『 冲压模具资料区 』
『 汽车覆盖件模具 』
『 铸造模具 』
『 压铸模具 』
『 压铸资料区 』
『 压铸模压铸模浇口设计与CAE模拟分析 』
『 挤出模具 』
『 其他模具 』
机械技术中心
『 机械原理与机械设计 』
『 模具加工与加工工艺 』
『 成型工艺与成型设备 』
『 工业设计与产品开发 』
『 CNC编程与操作应用 』
『 逆向工程与快速原型 』
『 模具材料与热处理 』
软件学习中心
『 Pro/Engineer 』
『 Pro/E资料区 』
『 EMX & PDX 』
『 工程图专区 』
『 Unigraphics NX 』
『 Mold Wizard 专区 』
『 Mastercam 』
『 SolidWorks 』
『 Cimatron 』
『 CATIA 』
『 AutoCAD & MDT & Inventor 』
『 浮雕技术与浮雕软件 』
『 软件二次开发与应用 』
『 其他CAD-CAE-CAM软件 』
『 Solid Edge 』
『 Rhino(犀牛) 』
『 PowerMILL 』
『 MoldFlow 』
『 ANSYS 』
『TOPSOLID』
『 CAXA 』
软硬件交流中心
『 电脑应用技术交流 』
『 软件发布链接交流 』
休闲娱乐
『 灌水乐园 』
『影音美图』
『 英语角 』
『 英语资料区 』
『 原创天地 』
『 股票频道 』
『 人才市场 』
『 工作园地 』
『 供求交易 』
『 活动大本营 』
站务管理
『 论坛事务 』
『 申请专区』
控制面板首页
编辑个人资料
积分记录
公众用户组
个人空间管理
勋章中心
FTP服务中心
社区银行
论坛问卷
基本概况
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计
钢中模具
"模具入门"进这里
钢中模具
钢中模具
钢中模具