张培媛
(忠旺(辽阳)铝模板制造有限公司, 辽宁 辽阳111003)
AutoCAD为我们提供了一个很好的绘图平台,但在生产实际中会遇到一些大量的重复工作,需要按生产实际对AutoCAD进行二次开发。例如生产实际中会遇到从大量图中选出部分图,然后将这些图样分配到满足加工条件的生产线上,或者是把已有的图样调整前后顺序等工作。如果一张张图样地查找、排序,效率会比较低,而且长时间的重复工作也易发生一些错误。这就需要我们确定好排图顺序,例如将需要的顺序放在确定格式的Excel表格中,要处理的图样也统一格式,然后通过二次开发,实现高地效完成按序排图,让设计人员有更多的时间来开展优化设计与工艺研究工作。
生产实际中分类情况较多,用到的图样张数也比较多,为了方便演示程序,对实际情况进行了简化。例如共有图1~图10这10张图样,3条生产线,生产线和产品图样的对应关系为:线1 使用图样为TZ-1和TZ-10,线2使用图样为TZ-3、TZ-5。将其列入表格如图1所示。
在CAD中通过GetOpen-FileName打开选择文件界面[1],由操作人员打开指定的Excel文件, 读取排图顺序,并将其放入一个数组中。CAD中的产品图样如图2所示,边框是一个多段线,边框所在图层名称为“图框”。
如图2示例所示,表格中数据在A列与B列。在生产实际中,每批的图样分配情况不同,Excel表格中表格的使用范围也不同,这就需要将获取表格的数据写为动态判断使用区域的行数[2]。打开表格文件并获取数据的关键语句如下:B" & endA)
图1 生产线与产品对应关系
图2 产品图样示例
在图样中先过滤图层为“图框”的多段线,放入SSet选择集[3],遍历每个图框,用GetBoundingBox获取每个图框的左下角坐标和右上角坐标。关键语句如下:
然后将图框的左下角坐标和右上角坐标作为新的选择范围,在此范围内选文字,放入一个新的选择集SSetbh。如果文字中含有“TZ”则表示这个文本为图样编号,符合条件的文字作为该图样的扩展数据[4]。关键语句如下:
逐个取出图样的扩展数据,将其与数组中的图样编号进行对比。如果两者相同,说明找到了符合要求的图样,可以将其放到指定位置;如果不同则继续对比下一张图样的扩展数据,实现按顺序排图。关键语句如下:
'分析数组中的数据,如果生产线和上一个单元格的生产线相同的,那么图样间距可以设置小一些,如果是不相同,图样间距就大一些,方便后期的审阅。
'遍历选择集中的图样,获取图样的扩展数据
'在对应的图样上插入文本,标记生产线号[5]
在本例中列举的图样其边框为多段线,在实际的工作中,图框还有一种常用的格式是属性块。如遇到这种图样,可以对属性块用GetBoundingBox方法获取包围框,然后加一个多段线外边框,这样就符合本文对图样边框的要求,可以直接使用文中的方法。 如果原图不可以修改,那就修改一段文中的程序。将过滤条件由图层为“图框”的多段线,改为属性块。筛选图样编号也由符合图层条件的文本,改为判断属性块中的属性值[6]。改变为适用于属性块边框的判断条件后,需要注意的是,属性块对应的过滤对象类型为“Insert”。可以用GetAttributes方法获得块的属性集合,遍历集合中的属性标记(TagString)找到图样编号标记,再将此标记对应的属性值(TextString)作为扩展数据的文本,为图样添加扩展数据。
AutoCAD为机械行业的从业人员提供了很大的便利。在工作实际中如果有大量的重复工作,可以将软件原有的功能结合二次开发,必要时可以结合Excel表格实现数据的交换。VBA易学易用,且功能强大,熟悉方法和属性后可灵活应用,更高效准确地完成重复的工作,从而有更多的时间和精力投入到创作和设计中。