Блоки, _.draworder и …
...и некоторые известные, но не очень очевидные моменты.
Иногда очень хочется, чтобы порядок следования примитивов внутри блока был строго определенным. Самый живой пример - применение маскировки.
При этом иногда вроде бы все сделано "как надо", в библиотечном файле все работает как надо, а вот в любом другом файле, куда был импортирован такой блок - творится черт-те что.
На самом деле все очень просто. Нередко при создании блока маскировка создается "в последних рядах", и потом с помощью команды _.draworder помещается "за всеми объектами". Так вот, при работе в текущем файле этот метод прокатывает на ура, но при импорте блока в новый файл этот порядок "слетает".
Конечно, можно зайти в редактор блоков и все подправить руками, но рано или поздно это будет не сделано.
Выход только один: в результирующем блоке примитивы должны следовать один за другим. В этом же порядке они и будут обрабатываться в новых файлах, куда этот блок будет вставляться.
Допустим, мы создаем блок (для упрощения ситуации рассматриваю вариант с обычным, нединамическим блоком) с маскировкой, которая частично перекрывает пару примитивов (круг и дугу). Поверх маскировки показывается атрибут, отрезок и полилиния.
История создания блока такова, что маскировка создана в последнюю очередь. Что надо сделать?
Выбираем объекты, которые должны лежать "над" маскировкой и копируем (обратите внимание - именно копируем!) куда-нибудь в сторону. Я обычно включаю режим ORTHO (F8) и указываю направление, например, вверх, расстояние - по ситуации. Исходные объекты - удаляем. Копии перемещаем обратно. Сохраняем блок, сохраняем файл.
Все, блок приведен в "божеский" вид
P.S. Все описанное многократно проверено на блоках и только на них. Внешние ссылки, хотя и являются с точки зрения AutoCAD "почти блоками", ведут себя по-другому: там порядок отображения примитивов не слетает и обрабатывается вполне корректно (по крайней мере у меня было именно так).
Алексей, приветствую!
Недавно столкнулся с вышеописанной проблемой, да больно так :(((
Сделал библиотеку блоков (штук 200) все с маскировкой, все динамические, у большинства два параметра видимости.
Ну и конечно, при использовании на стороне все поплыло... Маскировка поверх всего. Попробовал исправить один блок как ты советуешь - все получается. НО. По сути блоки нужно создавать заново. При замене примитивов вся динамика слетает к чертям.
Вопрос такой - а нельзя ли процесс лечения немного автоматизировать? Облиспить так сказать?
Мысля есть, но у меня завал - и по работе, и подготовка к AUR2014 да и игрался с этим я достаточно давно... Попробую повоевать, но результата не обещаю.
Ок. Спасибо заранее. Желаю успехов!