- UID
- 36203
- 积分
- 807
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-3-16
- 最后登录
- 1970-1-1
|
发表于 2005-4-13 21:13:50
|
显示全部楼层
看看下面的帮助可能会解决问题!
多次单独为每个子图元调用 entmake 可以创建一个复杂图元(老式多段线或块)。当 entmake 第一次接收一个复杂图元的初始部件时,它将创建一个临时文件,用于收集定义数据,如果有扩展数据,则也包括在内。(请参见扩展数据 -- xdata)。其后的每次 entmake
调用中,函数都检查临时文件是否存在。如果存在,则向文件中增加新的子图元。当复杂图元的定义结束时(即 entmake 接收到正确的 seqend 或 endblk 子图元),将检查图元的一致性。如果合法,则将图元增加到图形中。当复杂图元创建完毕或创建被取消时,该文件会被删除。
复杂图元在其定义完成之前,不会有任何部分显示在图形中。直到最终的 seqend 和 endblk 子图元被传入 entmake,图元才会出现在图形数据库中。entlast 函数不能为未完成的复杂图元获取最新创建的子图元。您可以输入不带参数的 entmake 来取消创建复杂图元。这将清除临时文件并返回 nil。
上述内容意味着 entmake 一次仅能构造一个复杂图元。在创建一个复杂图元时,如果 entmake 接收到无效的数据或接收到的图元不是一个正确的子图元,则该无效图元和整个复杂图元都会被拒绝。通过调用不带参数的 entmake 可以显式地取消创建复杂图元。
下例包含五个 entmake 函数,它创建的一个复杂图元是一条老式多段线。多段线的线型是 DASHED,颜色是蓝色,三个顶点坐标分别是 (1,1,0)、(4,6,0) 和 (3,2,0)。所有其他可选的定义数据都被假定为缺省值(为使本例正确运行,必须先加载 DASHED 线型)。
(entmake '((0 . "POLYLINE") ; 对象类型
(62 . 5) ; 颜色
(6 . "dashed") ; 线型
(66 . 1) ; 后面顶点
) )
(entmake '((0 . "VERTEX") ; 对象类型
(10 1.0 1.0 0.0) ; 起点
) )
(entmake '((0 . "VERTEX") ; 对象类型
(10 4.0 6.0 0.0) ; 第二点
) )
(entmake '((0 . "VERTEX") ; 对象类型
(10 3.0 2.0 0.0) ; 第三点
) )
(entmake '((0 . "SEQEND"))) ; 序列结束
当定义点对时,如上例所示,在圆点的两边都必须要有空格。否则,会出现点对错误信息。
块定义从一个块图元开始,到一个 endblk 子图元结束。最新创建的块被自动输入到引用它们的符号表中。块定义不能被嵌套,也不能引用自身。块定义可以包含其他块定义的引用。
注意 在用 entmake 创建块之前,应用 tblsearch 确保新块名称是唯一的。entmake 函数不检查块定义表中的名称冲突,所以它可以重新定义现有的块。关于使用 tblsearch 的详细信息,请参见访问符号表和词典。
块参照可以包括属性跟随标记(组码 66)。如果有该标记并且等于 1,则一系列预期属性 (attrib) 图元将跟随插入对象。属性序列由 seqend 子图元中止。
老式多段线图元总是包括顶点跟随标记(也是组码 66)。该标记的值必须是 1,标记后必须紧跟顶点图元的序列,最后由 seqend 子图元中止。
应用可以通过多面网格中的任意大数目的边表示多边形。然而,AutoCAD 图元结构对给定面图元的顶点数加以限制。通过将图元分割为三角楔形,可以表示更复杂的多边形。AutoCAD 将三角楔形表示为四顶点面,相邻的两个顶点的值相同。它们的边不可见,以便使细化部分不绘制出来。 PFACE 命令自动执行这一步,但是当应用程序直接生成多面网格时,应用程序必须自己执行这一步。
在这步处理中,每个面上的顶点数是关键参数。PFACEVMAX 系统变量提供一个应用程序和每个面图元上的顶点数目。这个值是只读的,设置为 4。
复杂图元既可以存在于模型空间,也可以存在于图纸空间,但不能同时存在于这两个空间中。如果在构造一个复杂图元时,调用 MSPACE 或 PSPACE(使用 command)改变了当前空间,则其后的 entmake 调用会取消该复杂图元。如果组码为 67 的子图元的值与图元表头的组码 67 不匹配,也会出现这种情况。 |
|