Re: Перевод всех блоков в слой "0"

> kpblc
Программа работает отлично, я был неправ. У меня на комп. надо просто
делать regen all после. А так  - великолепно. Ставит цвет примитивов в блоках
(в том числе и во вложенных) "по слою" не изменяя ни слой блока ни слой примитива.
То что я давно искал.
kpblc- СПАСИБО!!!

Re: Перевод всех блоков в слой "0"

> Vova
Там ветка прервалась на:
<<Smirnoff:
Понял, надо сделать вариант выбора при котором, цвет примитивов в блоке ByLayer. Будет... >>
К сожелению это так и не появилась тогда.
Программы fixblock.lsp, btz.lsp обладали с моей точки зрения существенным недостатком:
если архитектор ошибочно положил эти блоки на слой "0" (очень частая ситуация)
то и блоки после обработки получаются на слое "0" с примитивами на слое "0".
И заморозить их уже проблема. То есть с ними возиться было нужно.

Re: Перевод всех блоков в слой "0"

Подниму по новой тему.

> pavel
Проблему с regenall решить не вопрос - в самом конце, перед (vla-endundomark *kpblc-activedoc*) надо дать строку

(vla-regen *kpblc-activedoc*);Для регенерации только текущего вида.
(vla-regen *kpblc-activedoc* acAllViewports);Для регенерации всего файла.

> pavel
Так а куда их раскидывать? Если это известно, то написать лисп, засовывающий блоки, лежащие на слое 0, и входящие в выбранные объекты, в определенный слой (описание слоя надо), не так уж и долго.

Re: Перевод всех блоков в слой "0"

> kpblc
Можно никуда и не раскидывать. Я же говорю - хорошая Ваша программа.
Если надо заморозить блок - замораживаешь слои примитивов.
Если надо блок перекрасить - перекрашиваешь слои примитивов. То что блок на слое 0 в данном случае не помеха.
В более глобальном случае надо эти блоки починить- перевести со слоя 0 на другои слой.
Ну я например щелкаю по х-рефу (по архитектурной подоснове) , замораживаю ненужные слои (мебель например). Если попал на блок который на слое 0, он не замораживается, а замораживается мой слой 0. Ситуация опасная. У меня и в своем чертеже кто то мог напортачить,
и посадить что то на слой 0. Это все заморозится, а я могу и не заметить если чертеж большой.
Теперь, мои уровень знания лисп примитивен , между "болваном" и "балбесом".
Только могу сказать что блок надо перевести со слоя 0 на слой одного из его примитивов. На какой не важно, на первый по списку. Будет все равно лучше чем ему сидеть на 0.
Если мы говорим о починке блоков вобще это было бы здорово. То есть надо как то список блоков на слое 0 получить,
потом список слоев примитивов по первому блоку, ну и присвоить блоку первый слой из списка если он не 0
(если он 0, то на второй слой из списка, если все слои в блоке на 0 не знаю что делать, но это очень редкий был бы случай, что бы и сам блок и все слои были бы 0-такой белый блок резал бы глаза любому чертежнику)
, и так циклом по всем блокам. Не знаю, правда если блоков много, будет ли работать.
Может у кого то другие идеи есть.

Re: Перевод всех блоков в слой "0"

Да работать будет, куда оно денется :)
У меня предложение было на самом деле немного иное - к примеру, проверяются все блоки, если они лежат на слое "0", то они переносятся на слой "АР-Блоки-Ошибки". Новый слой создается по аналогии со слоем "0" - оттуда берется цвет, тип линии и вес линии.
Или вариант: изменить слой всех блоков / входящих в выбор на "по образцу".
Но вот вариант "править блоки в xref-е" что-то я даже не рассматривал, если честно.

Re: Перевод всех блоков в слой "0"

Нет, я не предлагал "чинить" блоки в х-реф.
У меня эта  тема выросла из необдходимости привести в божеский вид архитектурную подоснову которая используется как x-ref. Я только показал одну из проблем какие может вызвать блок
расположенный ошибочно на слое 0. А в общем случае, пришли новые чертежи от архитектора, открыл, почистил, сделал все by-layer,обработал блоки Вашей программой. Потом уже открыл свои чертеж, внес туда арх. подоснову как x-ref и там пощелкал на обьекты которые надо заморозить и поменял цвета x-ref слоям.
Подозреваю что  Vova делает то же самое.(да вообще широко распостраненный путь)
По поводу слоя "АР-Блоки-Ошибки" - можно и так, может даже лучше чем я предложил(наверное проще и быстрее). Лишь бы не на слое 0.
<Или вариант: изменить слой всех блоков / входящих в выбор на "по образцу">- это я не совсем понял, тут практический пример нужен , для чего это можно было бы применить.

Re: Перевод всех блоков в слой "0"

Ок. Как вариант:

Выберите примитив, с которого брать настройки слоя <Сделать слой АР-Блоки-Ошибки>:
[b]Выбирается любой примитив - отрезок, полилния, блок и т.п., слой у которого не "0"[/b]
Выберите блоки, слой вставки которых надо поменять с "0" на указанный <Все> :
[b]Выбираются блоки, у которых слой "0"[/b]

после второго выбора либо весь файл, либо выбранные объекты обрабатываются и переносятся на указанный слой. Чутка попозже дам код - это отдельная функция, не связанная с первой получится.