一种基于ObjectARX的零件清单抽取方法技术

技术编号:34722970 阅读:11 留言:0更新日期:2022-08-31 18:08
本发明专利技术公开了一种基于ObjectARX的零件清单抽取方法,所述包括如下步骤:在AutoCAD中加载主程序,通过APPLOAD命令运行;创建选择集,得到选中的实体对象组合;遍历选择集,判断选择集中对象是否为块参照,是则进行下一步,若否则将此对象从选择集中删除;遍历选择集,查询每一个块参照对象所参考的块定义;对数组计数并删除重复项,根据对象ID获得块定义指针;抽取数组中板材名,并计算板材面积;将所有零件、板材信息汇总存至MFC的列表控件中,并将表格导出为txt文本。本发明专利技术可以帮助节省繁琐的计算时间,从而提高后续工作的效率,防止出现遗漏,对LNG船的设计建造具有重要意义。对LNG船的设计建造具有重要意义。对LNG船的设计建造具有重要意义。

【技术实现步骤摘要】
一种基于ObjectARX的零件清单抽取方法


[0001]本专利技术涉及一种零件清单抽取方法,尤其涉及一种基于ObjectARX的零件清单快速抽取方法。

技术介绍

[0002]LNG船作为一种高附加值的特种船舶,今年来得到了大力的发展,在LNG船的建造过程中,货舱围护系统是其建造的关键。在这类货物围护系统的建造中,必须要使用一种专门的建造安装平台,用于在船舱空间内进行货舱屏壁的安装。
[0003]在围护系统安装平台的设计建造过程中,针对其零件布置图的数据抽取十分重要,在实际工程中,经常需要统计图纸内的零件、板材使用情况,对于图纸内的零件,需要获得使用的零件名以及每种零件的使用数量用以统计零件库存与零件采购,对板材,除了需要统计其板材尺寸与数量外,还需要统计其图纸内所有板材的面积总和,在以往的统计过程中,工程师需要在图纸中对零件名的单行文字进行搜索,并将搜索结果在Excel等软件中进行统计,整个过程耗时耗力,并且要求零件号必须以单行文字的形式插入图纸,且零件统计过于依赖插入的零件名,可能会出现遗漏。

技术实现思路

[0004]专利技术目的:本专利技术的目的是提供一种基于ObjectARX的零件清单快速抽取方法。
[0005]技术方案:本专利技术所述方法包括如下步骤:
[0006](1)在AutoCAD中加载主程序,通过APPLOAD命令运行;
[0007](2)创建选择集,得到选中的实体对象组合;
[0008](3)遍历选择集,判断选择集中对象是否为块参照,是则进行下一步,若否则将此对象从选择集中删除;
[0009](4)遍历选择集,查询每一个块参照对象所参考的块定义,并将块定义ID保存至ObjectIdArray数组中;
[0010](5)对ObiectIdArray数组计数并删除重复项,根据对象ID获得块定义指针,进而获得块定义名称,并保存至NameArray数组中;
[0011](6)抽取NameArray数组中板材名,并计算板材面积;
[0012](7)将所有零件、板材信息汇总存至MFC的列表控件中,并将表格导出为txt文本。
[0013]进一步地,所述步骤(1)中主程序使用MFC类,使程序界面风格与AutoCAD界面保持高度的一致性。
[0014]进一步地,所述步骤(3)中判断选择集中对象类别的具体方法:调用选择集过滤器,遍历选择集对象,并通过isKindOf函数对选择的实体对象所对应的类进行筛选,只留下块参照AcDbBlockReference类创建的实体对象。
[0015]进一步地,所述步骤(4)中ObjectIdArray数组为AcDbObjectIdArray类所创建的对象。
[0016]进一步地,所述步骤(5)中数组计数并删除重复项采用“冒泡排序”算法。
[0017]进一步地,所述步骤(6)中抽取板材名的方法:遍历数组,判断数组内成员是否包含
“×”
字符串,若包含,则字符串为板材名,板材面积计算方法为识别
“×”
号前后字符串,并将字符串转为double格式相乘。
[0018]有益效果:本专利技术与现有技术相比,具有如下显著优点:可以帮助节省繁琐的计算时间,从而提高后续工作的效率,防止出现遗漏,对LNG船的设计建造具有重要意义。
附图说明
[0019]图1为本专利技术的流程图。
具体实施方式
[0020]下面结合附图对本专利技术的技术方案作进一步说明。
[0021]本专利技术利用ObjectARX对AutoCAD进行二次开发,针对零件以图块方式插入并布置的dwg格式图纸文件,能够快速输出图纸的零件、耗材清单,方便进行零件的采购与库存更新。
[0022]如图1所示,本专利技术所述方法包括如下步骤:
[0023](1)在AutoCAD中加载主程序,通过APPLOAD命令运行;界面主程序由MFC创建,并使用ObjectARX中的MFC类,使程序界面风格与AutoCAD界面保持了高度的一致性,同时能适应不同的操作系统界面风格。程序可通过设置AutoCAD安装目录中Support文件中的acad2021.lsp文件,进行.arx程序的自动加载,加载完成之后在命令行键入“清单抽取”即可唤醒主程序界面。
[0024](2)创建选择集,即通过ObjectARX使用acedSSGet函数创建选择集,得到选中的实体对象组合。
[0025](3)遍历选择集,判断选择集中对象是否为块参照,是则进行下一步,若否则将此对象从选择集中删除;调用选择集过滤器,遍历选择集,通过选择集的对象ID获得对象指针并打开实体,进而通过isKindOf函数对选择的实体对象所对应的类进行筛选,只留下块参照AcDbBlockReference类创建的实体对象。
[0026](4)遍历选择集,查询每一个块参照对象所参考的块定义,返回块定义的块名等属性,并将块定义ID保存至ObjectIdArray数组中;ObjectIdArray数组为AcDbObjectIdArray类所创建的对象,数组用于存放块定义这一实体对象的ID。
[0027](5)对ObjectIdArray数组计数并删除重复项,根据对象ID获得块定义指针,进而获得块定义名称(即零件、板材名),并保存至NameArray数组中;ObiectIdArray数组的计数并删除重复项采用了“冒泡排序”算法,具体思路如下:
[0028]第一层循环0到len

1,当i为0时,第二层循环j为i+1即1到len

1,依次判断num[i]和num[j]是否相等,如果相等则进入第三次循环,k为j+1到len

1,将重复点j后面的所有元素都往前移动1,并将数组长度len

1,j

1。
[0029](6)抽取NameArray数组中板材名,并计算板材面积;抽取板材名的方法为遍历数组,判断数组内成员是否包含
“×”
字符串,若包含,则为板材名(板材命名规则为“板材长
×
板材宽”),板材面积计算方法为识别
“×”
号前后字符串,并转为double格式,进行相乘计
算。
[0030](7)将所有零件、板材信息汇总存至MFC的列表控件中,并通过列表控件将表格导出为txt文本。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ObjectARX的零件清单抽取方法,其特征在于:所述方法包括如下步骤:(1)在AutoCAD中加载主程序,通过APPLOAD命令运行;(2)创建选择集,得到选中的实体对象组合;(3)遍历选择集,判断选择集中对象是否为块参照,是则进行步骤(4),若否则将此对象从选择集中删除;(4)遍历选择集,查询每一个块参照对象所参考的块定义,并将块定义ID保存至ObjectIdArray数组中;(5)对ObjectIdArray数组计数并删除重复项,根据对象ID获得块定义指针,进而获得块定义名称,并保存至NameArray数组中;(6)抽取NameArray数组中板材名,并计算板材面积;(7)将所有零件、板材信息汇总存至MFC的列表控件中,并将表格导出为txt文本。2.根据权利要求1所述的基于ObjectARX的零件清单抽取方法,其特征在于:所述步骤(1)中主程序使用MFC类,使程序界面风格与AutoCAD界面保持高度的一致性。3.根据权利要求1所述的基于ObjectARX...

【专利技术属性】
技术研发人员:徐骁周宏王庆丰陈柏东聂凯璐
申请(专利权)人:江苏科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1