曾经纬
【摘 要】在铁路设计中,对于设计标签及其它类似表格的处理,基本上都采用插入图块后定位写文本的方式。这样在移交时因软件版本或字体库原因,很可能导致图块中文字变更或异常,仍需要做大量、繁琐的人工抄录及检索工作。而对于信号专业而言,无论是信号机设备还是继电器元件,都是以块的形式统一输出。在一张复杂的设计图中,往往包含着许多形状相似但参数不同的各类标准件,这使得设计中不可避免的要进行大量的标准件绘制工作,从而导致绘图效率降低,并容易出错。将相关的数据作为属性附着到块上以标签或标记,可以较好的解决上述问题。通过对属性块的二次开发来节约设计者绘图的时间,提高设计效率,这是本文所探讨的命题。
【关键词】铁路设计 二次开发 属性块 ATTDEF
铁路设计单位通常用属性块来定义图框中的标题栏和会签栏等,大家采用相同的图框,但可以根据图纸不同编辑图名、比例等属性。在定义块的时候将图形和属性一起选中,就成了属性块。
在一张区间平面图中,通常需要几十个信号机模块共同组合而成,每一个信号机模块大体相同。但是信号机名称,区段名称又各不相同。因此将信号机名称和区段名称作为信号机模块的属性统一插入平面图中,而不是独立以文字形式存在,这样做既能够保持图纸的完整性,又方便随时修改调整,这就是属性块的作用。下面就属性的特点以及如何定义属性,进行详细的讨论。
1 属性定义方式
属性是随着块插入的附属文本信息。对于一组普通块而言,其实是一组实体的集合,这组实体被关联起来组成了一个对象。在图形中可以插入、缩放、旋转、分解和修改块。在进行这些操作之后,所有对象的块参照都会自动更新。属性包含用户生成技术报告所需的信息,它可以是常量或变量、可视或不可视,当用户将一个块及属性插入到图形中时,属性按块的缩放、比例和转动来显示。[1]
每个图形文件都具有一个称作块定义表的不可见数据区域。块定义表中存储着全部的块定义,包括块的全部关联信息。在图形中插入块时,所参照的就是这些块定义。
图1是三个图形文件的概念性表示。每个矩形表示一个单独的图形文件,并分为两个部分:较小的部分表示块定义表,较大的部分表示图形中的对象。
插入块时即插入了块参照。不仅仅是将信息从块定义复制到绘图区域。而是在块参照与块定义之间建立了链接。因此,如果修改块定义,所有的块参照也将自动更新。
除此之外,AutoCAD还提供了许多库函数用于属性块的设计实现,例如AddAttribute、AcadBlockReference、AttBlock等,这些功能型的函数是为了开发人员能够更为方便的设计符合本领域需求的属性块。下面本文就以“复式信号机”为例阐述属性块的设计实现。[2]
2 属性块的设计实现
在AutoCAD中,BLOCK命令用于由一个或多个对象创建一个新的对象,并按指定的名称保存,以后可将它插入到图形中。当块参照被插入到图形中时,它们可以被整体地放大或缩小,也可以分别沿X轴方向和Y轴方向放大或缩小。而属性块是一个从其它图形到当前图形的外部链接,因为外部参照块代表的是一个图形的链接,而不是几何图形本身,因此外部参照块会随着原始图形的修改而更新。
2.1 属性块设计流程
属性块具体的设计实现流程如下图2所示。
属性块的设计实现流程主要有以下几个步骤:
(1)声明一个即将创建的属性块AttBlock;
(2)如果该块已存在,则删除该块;
(3)通过设置点、线、圆等几何图形创建如复式信号机在内的各类模型;
(4)通过AddAttribute等内置函数设置块属性;
(5)运行程序,拾取图中插入点,插入属性块。
对于嵌套的图块,EXPLODE命令一次只能分解一层。带有属性的块被分解后,将丢失属性值,而以属性标记的形式显示。使用MINSERT命令插入的块不得使用EXPLODE命令进行分解。[3]
2.2 属性块设计的编码实现
下面是通过编程插入“复式信号机”模块的设计实现过程。
(1)创建复式信号机属性块。
在插入属性块时可以对其属性进行修改,同时我们也可以在模型空间中修改其参照,来修改属性。在CAD定义图块属性的时候,可以看到三个输入框,分别是标记、提示、默认值,如图3所示。
3 结语
本文围绕着属性块的设置做了详尽的分析,并结合实际工程中经常采用的信号机模块,利用AutoCAD中自带的多个函数,进行了设计实验,实现了属性块的编程开发,达到了预期目标和效果。由于本文是从单个信号机模块角度设计实验,实际情况下的属性块运用要更为复杂,例如批量修改属性、属性块与图层的关系等等。都是论文进一步研究的方向。
参考文献:
[1]李小青.CAD软件二次开发方法及應用[J].机械研究与应用,2004,17(2):64-65.
[2]二代龙震工作室.函数库查询辞典[M].北京:中国铁道出版社,2003:22-25.
[3]张帆,郑立楷,卢择临,王成煌.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006年1月.
[4]邓伟龙.基于VLisp开发车站信号计算机联锁辅助设计程序[J].铁道标准设计,2014(3):127-129.