CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于在不使用命令函数的情况下创建复杂实体(AutoLISP)

2023-1-8 11:03| 发布者: admin| 查看: 715| 评论: 0|来自: AutoCAD

摘要: 可以通过对 entmake 进行多次调用来创建复杂实体(旧式折线或块),对每个子实体使用单独的调用。

复杂实体(旧式折线或块)可以通过对每个子实体使用单独调用进行多次调用来创建。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) 的三个折点,线型为虚线,颜色为 BLUE。所有其他可选定义数据均采用默认值。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 。

定义点对时,如上例所示,点的两侧必须有一个空格。否则,您将收到无效的点线对错误消息。如果要使用存储在变量中的值来创建虚线对,则必须使用列表和函数,而不是使用 (') 函数。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,则一系列属性 (Attrib) 实体应跟随 Insert 对象。属性序列由 Seqend 子实体终止。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 14:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部