ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/07/2014

Разница между командой _.explode и vla-explode

Попробую расписать варианты разбивания примитивов AutoCAD'a командными и ActiveX-методами. Не рассматривается вопрос разбивания набора примитивов: для такого вопроса сначала надо будет выбирать способ разбивания исходного элемента. Также можно посмотреть тему на dwg.ru - там предостаточно информации :)
Фактически на моей практике возможны использования двух вариантов: либо команда _.explode, либо vla-explode.

В принципе, их поведение очень и очень похоже: оба варианта способны "расколошматить" и полинию, и блок; для обоих вариантов критично состояние слоя для примитива. Но вот, например, твердые тела и штриховки (спасибо Евгению Елпанову) vla-explode обработать не сможет (проверял на AutoCAD 2014, 2015). При обработке блоков оба метода подчиняются правилам, задаваемым системной переменной EXPLMODE (за подробностями добро пожаловать в справку). Оба варианта не обработают блок с разными масштабами по разным осям (т.н. NUS - nonuniformly scaled - блоки), если внутри него есть твердые тела.

Понятно, что _.explode сработает только в текущем пространстве, а vla-explode можно "натравить" и на вложенные блоки и примитивы. Но это не единственное отличие этих методов...

Во-первых, _.explode после успешного выполнения уничтожает исходный объект, а vla-explode оставляет его на месте. Т.е. после применения vla-explode потребуется либо vla-erase, либо entdel, либо _.erase - ну или что там больше понравится :)

Во-вторых, в случае невозможности разбития объекта команда _.explode просто выдаст сообщение в командную строку о невозможности разбития объекта, а вот vla-explode сгенерирует ошибку.

Если все сказанное свести воедино, то получим табличку примерно такого вида:
  Команда _.explode vla-explode
Разбивание полилиний Да Да
Разбивание блоков в соответствии с EXPLMODE Да Да
Разбивание твердых тел Да Нет
Разбивание штриховок Да Нет
Разбивание NUS-блоков с твердыми телами в составе блока Нет Нет
Требует дополнительных действий по удалению исходного объекта Нет Да
Требуется дополнительная обработка ошибок Нет Да

Автор: Алексей Кулик.

Обсуждение: http://adn-cis.org/forum/index.php?topic=880

Опубликовано 30.07.2014
Отредактировано 04.08.2014 в 22:52:44