Разница между _.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-блоки с твердыми телами в составе блока Нет Нет
Требует дополнительных действий по удалению исходного объекта Нет Да
Требуется дополнительная обработка ошибок Нет Да


Комментарии

Есть 7 коммент. к “Разница между _.explode и vla-explode”
  1. ElpanovEvgeniy пишет:

    Осталось добавить в список примитивов штриховки. Они также не разбиваются объектными методами...

  2. Кулик Алексей aka kpblc пишет:

    Спасибо, добавляю :)

  3. ElpanovEvgeniy пишет:

    Провел небольшое расследование - тестировал на примере AutoCAD 2015:

    примитив | command | vla-explode
    многострочный текст | однострочный текст | -
    ассоциативный массив | исходные объекты | блоки с исходными объектами
    размер | линии, тексты… | -
    таблица | линии, тексты… | -
    мультилиния | линии | -
    спираль | сплайн | -

  4. Кулик Алексей aka kpblc пишет:

    Добавляю в общую таблицу :)

  5. Евгения пишет:

    Добрый вечер. Хотелось бы уточнить один вопрос. Если я правильно поняла, при использовании команды _.explode нельзя программно разбить блок в блоке (т.е. если я выбираю блок, затем прохожу весь чертеж, там в другом блоке вложен выбранный блок, команда не разобьет его)? И, в таком случае, разобьет ли блок в блоке команда vla-explode?

  6. Кулик Алексей aka kpblc пишет:

    На моей практике - разбивал. Но исходное вхождение надо было всё равно принудительно удалять через vla-erase

  7. Евгения пишет:

    Спасибо! Буду пробовать! :)

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


Я не робот.