是否可以使用 Autolisp 将查找参数推送到多个块定义中
Is it possible to push a lookup parameter into multiple block definitions using Autolisp
我将举一个假设的例子来说明我的问题。想象一下,我在椅子的动态块定义上有一个查找参数 "Color",并且我已经为它指定了 "Red"、"Blue" 和 "Green" 的可能值。现在我需要将此查找参数推送到大量其他类型椅子的其他动态块定义中。我不想为每个定义进入 UI 和块编辑器并添加此查找参数。相反,我想通过编写 Autolisp 例程并传入不同的块来自动执行此操作。
这可以使用 Autolisp 吗?是否可以使用任何其他 AutoCAD API?
注意以下:
- 我想编辑不同的块定义,而不是引用。
- 我不想使用块属性 table 因为我已经将其用于其他目的。
简而言之:不,此功能从未公开给 LISP API。
虽然您可以检索和更改现有动态块参数的值(使用块引用对象的 getdynamicblockproperties
方法),但您不能在块内创建或修改动态块参数 definition,也不会通过 Visual LISP API.
看到这些对象
奇怪的是,当通过 Vanilla AutoLISP 查询块定义的 DXF 数据时,参数 是 可见的,方法是检查在BLOCK_RECORD
实体:
(dictsearch
(cdr
(assoc 360
(entget
(cdr
(assoc 330
(entget
(tblobjname "block" "YourDynamicBlockName")
)
)
)
)
)
)
"acad_enhancedblock"
)
但是,DXF 数据的这个区域完全没有记录,如果直接修改可能会产生意外和不稳定的结果,因为它没有得到 API 的正式支持。
我将举一个假设的例子来说明我的问题。想象一下,我在椅子的动态块定义上有一个查找参数 "Color",并且我已经为它指定了 "Red"、"Blue" 和 "Green" 的可能值。现在我需要将此查找参数推送到大量其他类型椅子的其他动态块定义中。我不想为每个定义进入 UI 和块编辑器并添加此查找参数。相反,我想通过编写 Autolisp 例程并传入不同的块来自动执行此操作。
这可以使用 Autolisp 吗?是否可以使用任何其他 AutoCAD API?
注意以下:
- 我想编辑不同的块定义,而不是引用。
- 我不想使用块属性 table 因为我已经将其用于其他目的。
简而言之:不,此功能从未公开给 LISP API。
虽然您可以检索和更改现有动态块参数的值(使用块引用对象的 getdynamicblockproperties
方法),但您不能在块内创建或修改动态块参数 definition,也不会通过 Visual LISP API.
奇怪的是,当通过 Vanilla AutoLISP 查询块定义的 DXF 数据时,参数 是 可见的,方法是检查在BLOCK_RECORD
实体:
(dictsearch
(cdr
(assoc 360
(entget
(cdr
(assoc 330
(entget
(tblobjname "block" "YourDynamicBlockName")
)
)
)
)
)
)
"acad_enhancedblock"
)
但是,DXF 数据的这个区域完全没有记录,如果直接修改可能会产生意外和不稳定的结果,因为它没有得到 API 的正式支持。