基于VBA与Sol i dWor ks的非标机械设计效率提升措施探讨
2022-10-15吴迁伟
吴迁伟
(江西爱通科技有限公司,江西赣州 341410)
0 引言
SolidWorks软件是世界上第一个基于Windows开发的三维CAD系统,其操作非常符合Windows用户的习惯,因此新手入门上手比较容易。使用该软件可以大大缩短设计时间,将产品快速投向市场,目前市面上做非标设计的工程师大多用的都是该软件。同时,为实现数据共享,SolidWorks提供了VBA、VB.NET、C#等OLE的开发语言接口,极大地方便了软件使用。
在企业日常使用过程中,模板制作、文档属性和标准件管理都是企业标准化和信息化的重要环节。SolidWorks文档的属性作为模型的附属信息,是后续信息化的基础信息。属性可用于链接到工程图以及输出BOM等。同时,SolidWorks也提供了属性标签编制的工具程序,可利用它来生成模型的自定义属性界面,在界面中能方便地进行模型的属性修改等操作。
文献[1]阐述了一种进行SolidWorks文档属性及BOM定制的方法,可以提高日常工作效率与防出错。但属性编辑一般是手动填写,BOM输出也需手动处理或借助第三方插件完成,很多工作都是重复和烦琐的。如果借助于VBA脚本按特定的规则进行文件属性的填写,同时通过遍历模型特征树及读取属性信息,快速生成BOM文件,就可避免很多设计过程中的重复性工作。
1 文件属性填写VBA的实现
为了使VBA脚本能按特定的规则进行文件属性的自动填写,需要规范信息的输入与输出。本文的属性名称列表包括:项目、组件、名称、规格、版本、外形尺寸、材料、单重、表面处理、类别、单机数量、设计、备注。
文献[2]阐述了如何用软件自带的属性标签编制程序来生成SolidWorks文件的自定义属性界面,属性标签界面的内容与文件的属性内容是一致的。材料和单重属性可以是固定文字表达式,其他属性则通过VBA填写,同时也可以在执行脚本后在自定义属性界面手动修改。
考虑到在一个项目的设计过程中,一些如项目名称、设计者等的属性基本不变,可将信息存于xml文件中,在整个项目期间仅进行一次写入,其间直接读取这些内容即可。对于一些特定材质的零件的表面处理,也可以设置默认的处理方式。属性填写的界面如图1所示,xml文件格式内容如图2所示。
图1 属性填写界面
图2 xml文件格式内容
xml文件读取与写入的部分脚本如下:
Set xmldoc = CreateObject("Microsoft.XMLDOM")'创建xmldoc对象
xmldoc.Load(PathName) '加载xml文件
ProjectName=xmldoc.getElementsByTagName ("项目名称").Item(0).Text '读取xml节点
xmldoc.getElementsByTagName ("项目名称").Item(0).Text=ProjectName '设置xml节点
在电子文档存档的同时,模型文件名字也可以作为输入信息来源,零件名称、规格图号及种类等可以根据文件名字来进行判断。SolidWorks电子文件存档要求如下:所有3D模型文件分三类——自制件(包含零件和装配件)、外购件(需要外购的电机、气缸等及非标定制件等)和标准件(主要为紧固件,如螺钉、平垫、弹垫等)。
自制件命名:图号+空格(半角)+名称。
外购件命名:型号+空格+名称+(品牌),空格和括号均为半角符号,如“R32X80S 双轴气缸(亚德客)”;没有品牌的,名称后面可空缺。
标准件命名:从迈迪或toolbox等其他3D库导入且以GB开头的件,名字保持不变;非GB开头的件,按外购件处理。
文献[3]介绍了如何利用VBA宏来自动分离零件文件名中的代号与名称。本文通过读取模型文件名字,并以半角符号的空格作为标志提取,可以得到零件名称和规格图号,实现功能的部分脚本如下:
'PartTitle=图号+空格+名称
SpacePos=InStr (PartTitle," ") '获取分隔标识符(空格)的位置
PartNumber=Left(PartTitle,SpacePos-1) '获取图号/规格
PartName = Mid (PartTitle, 1 + SpacePos, Len(PartTitle)-SpacePos-7) '获取名称
由于自制件的图号是以公司项目代号开头,与外购件这些型号可以区分开来,而标准件则是以GB开头,因此可以凭此区分类别。
文献[4]提出了通过VBA脚本批量处理原有的SolidWorks模型属性的思路和方法。
在装配体下执行脚本,可以对特征树里面的每个部件和零件进行遍历设置属性,一次完成所有填写,通过递归调用部件属性设置函数,实现的部分脚本如下:
属性脚本执行前的情况如图3所示,属性脚本执行后的情况如图4所示,所有属性信息按预先设置自动填写完成,如需修改,可在属性标签页直接修改相应内容。
图3 脚本执行前的属性标签页
图4 脚本执行后的属性标签页
文献[5]讲述了如何使用SolidWorks软件创建模型与工程图链接,来实现工程图标题栏中相关内容的自动生成。因此,模型属性可以自动链接到工程图图框中,如图5所示,避免人为出错。
图5 工程图图框内容
2 BOM清单输出VBA的实现
纵观整个BOM清单,除了零部件层次,其余信息可以直接从文件属性中读取,实现的部分脚本如下:
Private Sub GetFileProperty (swModelDoc2,configname) '获取文件属性
Set cusPropMgr = swModelDoc2.GetConfiguration ByName(configname).
CustomPropertyManager
lRetVal = cusPropMgr.Get2 (BOM (3), ValOut,ResolvedValOut(3)) '名称
lRetVal = cusPropMgr.Get2 (BOM (4), ValOut,ResolvedValOut(4)) '规格/图号
零部件层次信息则从最顶层装配体开始,遍历特征树即可获取相关信息,实现的部分脚本如下:
3 结语
图6 BOM清单
本文结合SolidWorks模板的建立、定制属性标签界面、规范模型的命名、默认设置的xml储存以及VBA宏程序等技术,实现了SolidWorks模型文件属性的一键快速填写和BOM文件的快速生成,避免了设计过程中的重复性工作,大大提高了设计文件的编制效率,同时为企业的标准化和信息化夯实了基础。