关于在不使用命令函数的情况下创建复杂实体 (AutoLISP)
可以通过对 进行多次调用来创建复杂实体(旧式折线或块),对每个子实体使用单独的调用。entmake 当第一次收到复杂实体的初始组件时,它会创建一个临时文件,用于收集定义数据和扩展数据(如果存在)。对于每个后续调用,该函数都会检查临时文件是否存在。如果是这样,则将新的子实体追加到文件中。当复杂实体的定义完成时(即,当收到适当的 Seqend 或 Endblk 子实体时),将检查实体的一致性;如果有效,则将其添加到图形中。当复杂实体完成或取消其创建时,将删除该文件。您可以通过输入不带参数的输入来取消复杂实体的创建。这将清除临时文件并返回 。entmakeentmakeentmakeentmakenil 在复杂图元的定义完成之前,其任何部分都不会显示在图形中;直到最终的 Seqend 或 Endblk 子实体被传递给 .该函数无法为尚未完成的复杂实体检索最近创建的子实体。entmakeentlast 正如前面的段落所暗示的,一次只能构造一个复杂的实体。如果正在创建复杂实体并接收无效数据或不适当的实体,则无效实体和整个复杂实体都将被拒绝。entmakeentmakesubentity 复杂实体可以存在于模型空间或图纸空间中,但不能同时存在于两者中。如果在构造复杂图元时通过调用 AutoCAD MSPACE 或 PSPACE 命令(带命令)更改了当前空间,则对 entmake 的后续调用将取消复杂图元。如果子实体具有 67 dxf 组代码,其值与实体标头的 67 dxf 组代码不匹配,也会发生这种情况。 使用折线下面的示例包含对函数的五次调用,该函数创建一个复杂实体,即旧式折线。折线有三个折点,分别位于坐标 (1,1,0)、(4,6,0) 和 (3,2,0),线型为虚线,颜色为蓝色。所有其他可选定义数据都采用默认值。entmake (entmake '((0 . "POLYLINE") ; Object type (62 . 5) ; Color (6 . "dashed") ; Linetype (66 . 1) ; Vertices follow )) (entmake '((0 . "VERTEX") ; Object type (10 1.0 1.0 0.0) ; Start point )) (entmake '((0 . "VERTEX") ; Object type (10 4.0 6.0 0.0) ; Second point )) (entmake '((0 . "VERTEX") ; Object type (10 3.0 2.0 0.0) ; Third point )) (entmake '((0 . "SEQEND"))) ; Sequence end 注意:要使前面的示例代码正确执行,必须加载行型 DASHED。
定义虚线对时,如上例所示,点的两边必须有一个空格。否则,您将收到无效的虚线对错误消息。如果要使用存储在变量中的值来创建虚线对,则必须使用 list 和 functions,而不是使用 ( ' ) 函数。consquote 例如,以下代码使用变量将折线对象的颜色和线型从值设置为红色和虚线: (setq clr 5 ltype "dashed") (entmake (list (cons 0 "POLYLINE") ; Object type (cons 62 clr) ; Color (cons 6 ltype) ; Linetype (cons 66 1) ; Vertices follow )) 旧式折线图元始终包含顶点跟随标志(也是 dxf 组代码 66)。此标志的值必须为 1,并且该标志后面必须跟一系列顶点实体,以 Seqend 子实体结尾。 应用程序可以在多面网格中表示具有任意多边数的多边形。但是,AutoCAD 图元结构对给定面图元可以指定的顶点数施加了限制。您可以通过将更复杂的多边形划分为三角形楔形来表示它们。AutoCAD 将三角形楔块表示为四顶点面,其中两个相邻折点具有相同的值。它们的边缘应该是不可见的,以防止绘制这个细分的可见伪影。AutoCAD PFACE 命令会自动执行此细分,但当应用程序直接生成多边形网格时,应用程序必须自行执行此操作。 每个面的顶点数是此细分过程中的关键参数。AutoCAD PFACEVMAX 系统变量为应用程序提供每个面图元的顶点数。此值是只读的,设置为 4。 使用块块定义以块实体开始,以 Endblk 子实体结束。新创建的块会自动输入到符号表中,供参考。块定义不能嵌套,也不能引用自身。块定义可以包含对其他块定义的引用。 注意:在用于创建块之前,应使用以确保新块的名称是唯一的。该函数不会检查块定义表中的名称冲突,因此您可能会无意中重新定义现有块。entmaketblsearchentmake
块引用可以包含属性跟踪标志(dxf 组代码 66)。如果存在且等于 1,则 Insert 对象后面应有一系列属性 (Attrib) 实体。属性序列由 Seqend 子实体终止。 相关概念父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 13:09
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.