【问题标题】:Is it possible to push a lookup parameter into multiple block definitions using Autolisp是否可以使用 Autolisp 将查找参数推送到多个块定义中
【发布时间】:2019-05-15 05:18:45
【问题描述】:

我将举一个假设的例子来说明我的问题。想象一下,我在椅子的动态块定义上有一个查找参数“颜色”,并且我已经给了它可能的值“红色”、“蓝色”和“绿色”。现在我需要将此查找参数推送到其他类型椅子的大量其他动态块定义中。我不想为每个定义进入 UI 和块编辑器并添加这个查找参数。相反,我想通过编写 Autolisp 例程并传入不同的块来自动执行此操作。

这可以使用 Autolisp 吗?是否可以使用任何其他 AutoCAD API?

注意事项:

  1. 我想编辑不同的块定义,而不是引用。
  2. 我不想使用块属性表,因为我已经将它用于其他目的。

【问题讨论】:

    标签: autolisp


    【解决方案1】:

    简而言之:不,此功能从未向 LISP API 公开。

    虽然您可以检索和更改现有动态块参数的值(使用块引用对象的getdynamicblockproperties 方法),但您不能在块中创建或修改动态块参数定义,此类对象也不会通过 Visual LISP API 可见。

    奇怪的是,当通过 Vanilla AutoLISP 查询块定义的 DXF 数据时,参数是可见的,方法是检查在 BLOCK_RECORD 实体的扩展字典中找到的 ACAD_ENHANCEDBLOCK 字典: p>

    (dictsearch
        (cdr
            (assoc 360
                (entget
                    (cdr
                        (assoc 330
                            (entget
                                (tblobjname "block" "YourDynamicBlockName")
                            )
                        )
                    )
                )
            )
        )
        "acad_enhancedblock"
    )
    

    但是,这部分 DXF 数据完全没有记录,如果直接修改,可能会产生意外和不稳定的结果,因为它不受 API 官方支持。

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2014-06-27
      • 2012-07-21
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多