|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
13.12.2006, 14:52 | #1 | |
Управление видимостью слоев
проектировсчик
Москва
Регистрация: 06.01.2006
Сообщений: 1,982
|
||
Просмотров: 20628
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Ох, на крыса сегодня надежды почти нет - пьяный сидит за моником. Пальцами по клаве не попадает.
ИМХО сделать такое возможно, но уж больно гиморно. По идее надо всем слоям, кроме слоев выбранных примитивов, цвет поменять. Например, с 10 на 11; 11 на 12, с 23 на 24 и так далее. То есть добавить по 1. Если это возможно. А потом вернуть обратно. На написание кода меня чичас не хватат Либо второй вариант - использовать временное скрытие объектов (есть на сайте у Alaspher'a и на autocad.ru).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
проектировсчик Регистрация: 06.01.2006
Москва
Сообщений: 1,982
|
Сдается, что индексированными цветами тут не обойтиль, придется переходить на True Color... И LUMINANCE уменьшать раза в три...Да еще лочить слои. То есть брать за основу Layiso и вместо примитивного выключения слоев запускать эту бодягу. Но. Никакого layiso.lsp или чего-то похожего я не нашел, да и кишка тонка менять с лету. А струмент хороший может получиться. И назовем его - уже знаю как - СУПЕРКРЫС! (типа это я подлизываюсь...). SuperLayKpblcIso.lsp! Как вы яхту назовете, так она и поплывет!
|
|||
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
(В каестве идеи)
Мне кажется подобное, в принципе, можно оганизовать объединив объекты слоя во временный блок с точкой вставки в нуле и програмно запустив _refedit, по окончании которой переводить объекты обратно в модель и удалять блок. Однако все это выглядит весьма не надежно и надумано, много подводных камней, да и в случае сложного чертежа наверняка тормоза будут. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
> AY : я думаю, что такой вариант, например, при редактировании блока или внешней ссылки может кончиться плачевно (если только не анализировать на ходу cmdnames и вываливать предупреждения соответствующие)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
>крыс
Я, ведь не наставиваю, а предлагаю как идею :) Впрочем я не предвижу оговоренных тобой трудностей поскольку думаю поступить проще, а именно: - имеем две кнопки. - при нажатии 1-ой, каким-либо образом выбирается слой, создается блок, зписывается в надежном месте информация что за блок и запускается _refedit. - по окончании редактирования нажимаем 2-ую кнопку. Программа анализирует систуацию, а именно находимся ли мы в состоянии _refedit и какого именно блока сравнивает с данными записанными 1-ой кнопкой и соответствующим образом обрабатывает ситуацию. Если юзер самостоятельно вышел из _refedit то проверяется записи и если временный блок цел крушим его. Вобщем в таком духе. Оговорюсь, что мне впринципе подобные махинации не нравятся. Для таких серьезный приемов работы надо требовать штатные средства. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Есть еще один вопрос - все же выбираются примитивы определенного слоя (слоев) или выбранные примитивы? А как быть с примитивами, имеющими такой же цвет, но лежащие на других слоях?
В общем, спробуйте (я не стал делать блоки): Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Есть соображения по поводу "побледнения" слоев.
1. Цвет переводим из ACI в RGB 2. RGB -> HSL 3. LUMINANCE (L) уменьшаем в N раз 4. HSL -> RGB 5.RGB-> ACI Теперь по пунктам 1,5. ACI->RGB решается просто Код:
4. Реализовать алгоритм http://www.easyrgb.com/math.php?MATH=M19#text19 Или найти что-нудь еще Пункт 2 я попробывал. S и L считается нормально, а вот H что-то не совпадает. Посмотрю, может допуслил где ошибку |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Только что специально провеил - нормально работает. С ком.строки вызов (chla).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Вроде реализовал алгоритм "побледнения" примитивов
Код:
Реализован следующий алгоритм: Берем RGB примитива, преобразуем в HSL. L -Luminance (яркость) уменьшаем в 2 раза, получам новые значения RGB с уменьшенной яркостью, задаем цвет примитиву. Если яркость близка к темной (здесь 20% и меньше) смещаем оттенок. |
||||
|
||||
Вот вариан доработанной команды kpblc
Код:
Работает по принципу выключателя: понизили яркость -> восстановили состояние. Команда CHLA |
||||
|
||||
проектировсчик Регистрация: 06.01.2006
Москва
Сообщений: 1,982
|
VVA: -Прикольно. Правда, невыбранные слои не залочиваются пока. И вот бледнеет совершенно недостаточно, и подвирает с цветами... Не работает, если цвет задан примитиву явно. В режиме редактирования блока in place это как то хитрее организовано, там бледнеют -и сильно!- все не входящие в блок элементы. Идея организовать из выбранных примитивов блок, редактировать его находу... хороша, но функция редактирования блока - тормознутая, ногти изгрызешь, пока сработает, да и добавлять в набор примитивы ни к чему.. Layiso быстрее! В принципе, если добавть строки залочивания - и разлочивания! -невыбранных слоев- классная штука получается!
Kpblc: Заработало. Дописал букувку в начале ...defun c:chla (/... , только как то неустойчиво (и висит как-то неуверенно...). Но- не бледнеют, гады! Просто цвет меняют... И явно заданные цвета игнорируют. Сам я только "по слою" работаю, да в конторе я не один с кривыми ручками. 20% времени правкой занимаюсь... |
|||