Тема: ObjectARX. Расчленение и удаление proxy-объектов
Команда EXPLODEALLPROXY:
Расчленяет все proxy-примитивы (которые можно расчленить, т.е. программист при их создании не указал флаг нерасчленяемости), во всем чертеже.
Команда REMOVEALLPROXY:
Удаляет все proxy-объекты и proxy-примитивы (в том числе и те, которые имеют флаг неудаляемости). Ее удобно выполнять после EXPLODEALLPROXY - тогда она удалит все то, что не удалось расчленить.
=====================================================
Для вызова из VisualLisp:
(ExplodeProxyEntity ent)
ent - имя примитива вида <entity name: 321456465465465>. Расчленяет только этот
примитив, даже если он входит в блок.
Например: (explodeproxyentity (car (nentsel)))
(ExplodeAllProxyInBlock "имя блока")
Этой функции можно передавать не только имя блока, но и имя примитива внутри блока.
Например: (explodeallproxyinblock (car (nentsel)))
расчленит все прокси в блоке, на который указали.
Функции возвращают следующие значения:
0 success - успешное завершение -1 parmerr - ошибка передачи параметра -2 openerr - ошибка открытия proxy-объекта -3 explerr - ошибка разбития proxy -4 appenderr - ошибка добавления "состава" proxy в файл dwg. -5 eraseerr - ошибка удаления исходного объекта.
Во всех случаях, кроме success и appenderr, требуется провести _AUDIT для файла.
Кроме того обязательно (!!!) выполнить команду _AUDIT после вызова RemoveAllProxy
arx-файлы для AutoCAD 2000...2017 находятся здесь: http://www.maestrogroup.com.ua/support/ExplodeProxy.zip
Достаточно однократной загрузки соответствующего arx-файла в AutoCAD (при помощи команд _APPLOAD или _ARX), чтобы при следующих запусках AutoCAD этот arx-файл загружался сам.
В версии AutoCAD 2008 и выше команда RemoveAllProxy позволяет удалить неиспользуемые масштабы (AcDbScale) из списка масштабов.
Добавлено принудительное удаление неиспользуемых классов объектов/примитивов.