Можно ли вставить параметр поиска в определения нескольких блоков, используя Autolisp - PullRequest
1 голос
/ 14 мая 2019

Я приведу гипотетический пример, чтобы продемонстрировать мою проблему. Представьте, что у меня есть параметр поиска «Цвет» в определении динамического блока для стула, и я дал ему возможные значения «Красный», «Синий» и «Зеленый». Теперь мне нужно перенести этот параметр поиска в тонны и тонны других определений динамических блоков для других типов стульев. Я не хочу заходить в пользовательский интерфейс и редактор блоков для каждого определения и добавлять этот параметр поиска. Вместо этого я хотел бы автоматизировать это, написав процедуру Autolisp и передавая различные блоки.

Возможно ли это с помощью Autolisp? Возможно ли использовать какой-либо другой API AutoCAD?

Примечание ниже:

  1. Я хочу редактировать другой блок определения , а не ссылки.
  2. Я не хочу использовать таблицу свойств блока, потому что я уже использую ее для других целей.

1 Ответ

2 голосов
/ 15 мая 2019

Короче говоря: нет, эта функциональность никогда не предоставлялась LISP API.

Хотя вы можете получать и изменять значения существующих параметров динамического блока (используя метод getdynamicblockpropertiesэталонного объекта блока), вы не можете создавать или изменять параметры динамического блока в блоке определение , и такие объекты не будут видны через Visual LISP API.

Любопытно, что параметры видимы при запросе данных DXF определения блока через Vanilla AutoLISP, проверяя словарь ACAD_ENHANCEDBLOCK, найденный в Словаре расширений объекта BLOCK_RECORD:

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

Однако этообласть данных DXF полностью не документирована и может привести к непредвиденным и нестабильным результатам при непосредственном изменении, учитывая, что она официально не поддерживается API.

...