Inventor图纸编号和名称批量自动更改方法研究与应用
来源:用户上传
作者:
摘 要:在Inventor图纸设计中,图纸内外部的编号和名称的批量更改目前只能靠人工逐个更改,效率低下。文章利用Inventor VBA进行二次开发,实现了三维、二维图纸的编号和名称的批量自动更改。文章主要介绍了开发的基本思路、零部件特性结构体及动态数组的建立、由上而下的零部件的特性集遍历、映射关系改变三大关键技术,并展示了软件开发最终成果。
关键词:Inventor VBA;特性集遍历;映射关系改变
中图分类号:TP391.7 文献标志码:A 文章编号:2095-2945(2020)04-0167-03
Abstract: In the Inventor design, the batch changes of the drawing numbers and names inside and outside the drawings can only be done manually one by one, which is inefficient. This article uses Inventor VBA for secondary development, and realizes the batch automatic change of the numbers and names of 3D and 2D drawings. The article mainly introduces the basic ideas of software development, and three key technologies, including the establishment of dynamic structures arrays of the component property sets, components property sets traversal and the mapping changes methoed. At the end, this artical shows the final results of software development.
Keywords: Inventor VBA; Components Property Sets Traversal; Mapping Changes
1 概述
在现代设计制造业中,实现设备全生命周期的平台化管理是一项十分重要工作。对所有设备及零部件统一编号是实现数字化管理的关键一步[1]。对于初次采用新编号规则的企业,所有三维和二维图纸重新编号是一项很大的挑战。对于全新模型图纸,设计之初需对每个零部件内外部进行编号,分散设计精力;对于原有模型图纸,需要逐个修改零部件内外部编号,然后逐个替换映射关系,对于动辄上百、上千个零件的设备,工作量大,易出错且效率低下。
为解决此难题,本文利用Inventor VBA进行二次开发,实现Inventor三维、二维图纸的编号的批量一键自动更改,包括三維、二维图纸内部编号及其映射关系自动更改和外部编号的自动更改,同时还可以对没有按编号规则设计的三维图纸进行标准化图纸生成,方便图纸的数字化平台化管理,减少设计人员的重复性劳动,提高工作效率。
2 开发内容
Inventor图纸编号批量自动更改,主要包含两种形式的编号批量更改:“由内到外”和“由外到内”。
(1)“由内到外”主要用于三维图纸零部件内部的“库存编号”和“零件代号”[2]为基础(如图1所示),自动生成三维、二维图纸文件的外部文件名(文件名为:“库存编号+零件代号”,如图2所示),并完成新编号文件间的映射关联。一般用于全新设计的模型。
(2)“由外到内”方式主要用于以外部文件名为基础,批量更改外部文件名,然后以更改后的外部文件名统一修改模型的内部的“库存编号”和“零件代号”属性,并完成新编号文件间的映射关联。一般用于更改设计的模型和图纸。
两种方式的实现方式基本一致,本文以“由内到外”方式展开。软件实现的具体功能如下:(1)新编号三维图纸文件的自动生成;(2)新编号三维图纸部件和零件文件的映射关系的关联;(3)Inventor二维图纸与新编号三维图纸的映射关联;(4)旧编号三维、二维图纸的自动删除。
3 开发思路及关键技术
3.1 基本思路
首先,装配体三维图中需要编号的零部件iproperty中的“库存编号”和“零件代号”全部填写完毕。后续处理整体思路如图3所示,软件在总装配体三维模型中逐个遍历包含的每一个零部件,提取零部件的新旧文件名称、路径、库存编号和零件代号等信息一并存入全局的结构体中,同时生成以“库存编号”和“零件代号”命名的新文件。在装配体总图中再逐个遍历所包含的每一个零部件,用新编号零部件逐个替换对应的旧编号零部件。如果有Inventor二维图纸,逐个遍历每张二维图纸,用新编号零部件逐个替换旧编号零部件,完成三维和二维图纸重新关联映射后,删除旧编号文件,自此,所有的三维和二维图纸完成外部文件编号的自动更改和内部映射重新关联。
3.2 关键技术
(1)模型相关参数的结构体及其动态数组的建立
Inventor图纸编号批量自动更改中会涉及到每个三维零部件的库存编号、零件代号、文件名、文件路径等参数,为了便于管理,本文通过一个结构体PartPropTable来管理单个零部件的这些参数,结构体如下所示:
(2)由上而下的零部件的特性集遍历
在Inventor中,每种文档有一个特性集(PropertySets),通过PropertySets可遍历和访问所有特性集和其中的特性[3]。
如图4所示,每个零部件的特性集中包含很多表单,每个表单中包含很多特性值,本文用到的零部件的“库存编号”和“零件代号”参数包含在表单“项目”中,其中对应的特性集中的PropertySets.item(3),“库存编号”和“零件代号”参数分别对应着表单“项目”中的myPropSet.Item(3).Item(37).Value和myPropSet.Item(3).Item(2).Value。 在Inventor的三维总装配体中包含多个子部件和零件,这些子部件和零件都包含在总装配体的ComponentOcc
urrence的子项SubOccurrences中,其中部件的文件类型属性为kAssemblyDocumentObject,零件文件类型属性为kPartDocumentObject,每个子部件又包含各自的子部件和零件,以此類推。如果要遍历总装配体中包含的每一个零件,则需要采用递归算法[4],如图5所示。
(3)映射关系改变
映射关系改变分为三维零部件中的零部件映射关系改变和二维图纸中映射关系改变。
三维零部件中的零部件映射关系改变:
在三维零部件中映射关系更改中,需特别注意,在完成原编号部件的新编号部件替换后,需要逐个完成新编号部件中的零件映射关系替换,否则会出现部件完成新编号文件替换,而其部件中的子部件和零件等仍然为旧编号文件的问题。文件替换用ComponentOccurrence的Replace(filepath, Ture)函数实现,其中filepath参数为新编号文件的路径,具体流程如图6所示。
二维图纸对应三维模型映射关系改变:
在二维图纸零部件中映射关系改变中,需要遍历二维图纸文件夹,逐个打开二维图纸文件,通过ReferencedFileDescriptor的PutLogicalFileNameUsingFull(newpath)函数和FileCopy(curpath, newfilepath)函数完成图纸内部新编号文件的替换和文件外部编号替换后的新编号文件的保存。
4 实现方法
(1)程序界面
程序界面如图7所示,主要分为模式选择和新旧编号设置及开始按钮。
(2)实现效果
图8为程序处理前文件的编号和名称状态,文件名称无图号,较为杂乱,不利于多个文档的平台化管理。图9为经过程序处理后的文件编号和名称状态,每个零部件名称由编号和名称两部分组成,文件名称唯一,便于多文档平台化管理。
5 结束语
Inventor图纸编号和名称的批量自动更改软件的开发,极大地提升了图纸编号和名称更改的效率,降低出错概率,提升了图纸编号和名称的自动化管理水平,对图纸的数字化、平台化管理提供了便利。
参考文献:
[1]黄曙荣,等.产品数据管理PDM原理与应用[M].江苏大学出版社版,2014.
[2]胡仁喜,康士廷.Autodesk Inventor Professional2010中文版入门到精通[M].机械工程出版社,2009.
[3]陈伯雄,张朝阳.Inventor R6 VB(A)程序设计[M].机械工程出版社,2004.
[4]王晓东.算法设计与分析[M].清华大学出版社,2003.
转载注明来源:https://www.xzbu.com/1/view-15118612.htm