Очистка параметрических зависимостей в dwg

Была у меня тут задача - пройтись по всем примитивам чертежа и снести там параметрику.

Работало медленно, поскольку я решал задачу "в лоб", проходя по всем примитивам чертежа. Но работало.

Сегодня А.Ривилиса в теме на форуме Autodeskпоказал значительно более простое и изящное решение:

1
2
3
(if (dictsearch (namedobjdict) "acad_assocnetwork")
  (entdel (cdr (assoc -1 (dictsearch (namedobjdict) "acad_assocnetwork"))))
)

Это работает в текущем документе. Если надо обработать неактивный документ (как он открыт - вопрос десятый), то используем нечто типа

1
(vla-delete (vla-item (vla-get-dictionaries doc) "acad_assocnetwork"))

Причем, как выяснилось (по крайней мере в текущем документе) на состояние слоев эта конструкция не реагирует, корректно удаляя все элементы.

Красота! :)



Комментарии

Есть 2 коммент. к “Очистка параметрических зависимостей в dwg”
  1. Кулик Алексей aka kpblc пишет:

    К сожалению, радость была весьма качественно омрачена: удаление словаря гарантированно убивает динамические массивы. По крайней мере в ACAD2016

  2. comings пишет:

    Большое спасибо. Пришлось помучиться, т.к. с лиспами я только на "Вы", но тем не менее, все получилось

Поделитесь своим мнением


Я не робот.