Управление видимостью слоев
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Управление видимостью слоев

Управление видимостью слоев

Ответ
Поиск в этой теме
Непрочитано 13.12.2006, 14:52 #1
Управление видимостью слоев
Аshаs-ка
 
проектировсчик
 
Москва
Регистрация: 06.01.2006
Сообщений: 1,986

А вопрос созрел такой: возможно ли программно управлять интенсивностью цветов слоев на экране? Поясняю, для чего. Вот как приятно, например, в определенных ситуациях было бы нажать кнопочку с командой, подобной LAYISO, но чтоб слои не тушились до конца, а становились блееедненькими... залоооченными... и чтоб потом назад командой, подобной LAYUNISO можно было бы вернуться. Вот удобнее, если слои чуть видны... Вот чую я, что производительности такая кнопка прибавит существенно... Вот в архикаде есть показ предыдущего этажа - удобственно! И в автокаде должно быть такое! Только лучше! Есть мысли?
Просмотров: 21034
 
Непрочитано 13.12.2006, 15:10
#2
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,760
Отправить сообщение для Огурец с помощью Skype™


Отличная мысль!
Огурец вне форума  
 
Непрочитано 13.12.2006, 15:48
#3
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


я тоже об такой мечтаю, чтоб было похоже на edit block in place
Dym вне форума  
 
Автор темы   Непрочитано 13.12.2006, 15:55
#4
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Вот бы Kpblc прочитал... одна на него надежда!
Аshаs-ка вне форума  
 
Непрочитано 13.12.2006, 16:20
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Ох, на крыса сегодня надежды почти нет - пьяный сидит за моником. Пальцами по клаве не попадает.
ИМХО сделать такое возможно, но уж больно гиморно. По идее надо всем слоям, кроме слоев выбранных примитивов, цвет поменять. Например, с 10 на 11; 11 на 12, с 23 на 24 и так далее. То есть добавить по 1. Если это возможно. А потом вернуть обратно. На написание кода меня чичас не хватат
Либо второй вариант - использовать временное скрытие объектов (есть на сайте у Alaspher'a и на autocad.ru).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.12.2006, 16:33
#6
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Сдается, что индексированными цветами тут не обойтиль, придется переходить на True Color... И LUMINANCE уменьшать раза в три...Да еще лочить слои. То есть брать за основу Layiso и вместо примитивного выключения слоев запускать эту бодягу. Но. Никакого layiso.lsp или чего-то похожего я не нашел, да и кишка тонка менять с лету. А струмент хороший может получиться. И назовем его - уже знаю как - СУПЕРКРЫС! (типа это я подлизываюсь...). SuperLayKpblcIso.lsp! Как вы яхту назовете, так она и поплывет!
Аshаs-ка вне форума  
 
Непрочитано 13.12.2006, 16:45
#7
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


(В каестве идеи)
Мне кажется подобное, в принципе, можно оганизовать объединив объекты слоя во временный блок с точкой вставки в нуле и програмно запустив _refedit, по окончании которой переводить объекты обратно в модель и удалять блок.

Однако все это выглядит весьма не надежно и надумано, много подводных камней, да и в случае сложного чертежа наверняка тормоза будут.
AY вне форума  
 
Непрочитано 13.12.2006, 16:50
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


> AY : я думаю, что такой вариант, например, при редактировании блока или внешней ссылки может кончиться плачевно (если только не анализировать на ходу cmdnames и вываливать предупреждения соответствующие)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.12.2006, 17:04
#9
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


А что есть CMDNAMES? А что быстрее работать будет? Слоев обычно под 30 бывает и примитивов немеряно...
Аshаs-ка вне форума  
 
Непрочитано 13.12.2006, 17:08
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


LAYISO живет в acetlayr.lsp
VVA вне форума  
 
Непрочитано 13.12.2006, 17:14
#11
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


>крыс
Я, ведь не наставиваю, а предлагаю как идею :)

Впрочем я не предвижу оговоренных тобой трудностей поскольку думаю поступить проще, а именно:

- имеем две кнопки.

- при нажатии 1-ой, каким-либо образом выбирается слой, создается блок, зписывается в надежном месте информация что за блок и запускается _refedit.

- по окончании редактирования нажимаем 2-ую кнопку. Программа анализирует систуацию, а именно находимся ли мы в состоянии _refedit и какого именно блока сравнивает с данными записанными 1-ой кнопкой и соответствующим образом обрабатывает ситуацию. Если юзер самостоятельно вышел из _refedit то проверяется записи и если временный блок цел крушим его.
Вобщем в таком духе.

Оговорюсь, что мне впринципе подобные махинации не нравятся. Для таких серьезный приемов работы надо требовать штатные средства.
AY вне форума  
 
Автор темы   Непрочитано 13.12.2006, 17:23
#12
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


А у AV идея хороша тем, что слои как раз уже бледнеют... и темнеют... :P
Аshаs-ка вне форума  
 
Непрочитано 14.12.2006, 11:38
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Есть еще один вопрос - все же выбираются примитивы определенного слоя (слоев) или выбранные примитивы? А как быть с примитивами, имеющими такой же цвет, но лежащие на других слоях?
В общем, спробуйте (я не стал делать блоки):
Код:
[Выделить все]
;|
(chla) - и без параметров.
|;
(defun chla (/ adoc selset lst_layer_selected)
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (if (not *kpblc-layer-list-hide*)
    (if (setq selset (ssget))
      ;; Для начала слои выбранных примитивов:
      (progn
        (setq lst_layer_selected
                                      (mapcar
                                        '(lambda (x)
                                           (strcase (cdr (assoc 8 (entget x))))
                                           ) ;_ end of lambda
                                        (vl-remove-if
                                          'listp
                                          (mapcar 'cadr (ssnamex selset))
                                          ) ;_ end of vl-remove-if
                                        ) ;_ end of mapcar
              ;; Теперь слои "не попавшие в выбор"
              *kpblc-layer-list-hide* (append
                                        *kpblc-layer-list-hide*
                                        ((lambda (/ res)
                                           (vlax-for lay (vla-get-layers adoc)
                                             (if
                                               (not
                                                 (member (strcase (vla-get-name lay))
                                                         lst_layer_selected
                                                         ) ;_ end of MEMBER
                                                 ) ;_ end of not
                                                (setq res
                                                       (append
                                                         res
                                                         (list (cons (vla-get-name lay)
                                                                     (vla-get-color lay)
                                                                     ) ;_ end of cons
                                                               ) ;_ end of list
                                                         ) ;_ end of append
                                                      ) ;_ end of setq
                                                ) ;_ end of if
                                             res
                                             ) ;_ end of vlax-for
                                           ) ;_ end of lambda
                                         )
                                        ) ;_ end of append
              ) ;_ end of setq
        (foreach item *kpblc-layer-list-hide*
          ;; Меняем цвет. Если четный - то на "6" в конце. Для нечетных - "7"
          (vl-catch-all-apply
            (function
              (lambda ()
                (vla-put-color
                  (vla-item (vla-get-layers adoc) (car item))
                  (atoi (strcat
                          (substr (itoa (cdr item))
                                  1
                                  (1- (strlen (itoa (cdr item))))
                                  ) ;_ end of substr
                          (if (= (rem (cdr item) 2) 0)
                            "6"
                            (if (= (cdr item) 7)
                              "251"
                              "7"
                              ) ;_ end of if
                            ) ;_ end of if
                          ) ;_ end of strcat
                        ) ;_ end of atoi
                  ) ;_ end of vla-put-color
                ) ;_ end of lambda
              ) ;_ end of function
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of foreach
        ) ;_ end of progn
      ) ;_ end of if
    (progn
      (foreach item *kpblc-layer-list-hide*
        (vl-catch-all-apply
          (function (lambda ()
                      (vla-put-color
                        (vla-item (vla-get-layers adoc) (car item))
                        (cdr item)
                        ) ;_ end of vla-put-color
                      ) ;_ end of lambda
                    ) ;_ end of function
          ) ;_ end of vl-catch-all-apply
        ) ;_ end of foreach
      (setq *kpblc-layer-list-hide* nil)
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Обнаружил глюк: иногда не обрабатываются слои, не содержащие примитивов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.12.2006, 12:27
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Есть соображения по поводу "побледнения" слоев.
1. Цвет переводим из ACI в RGB
2. RGB -> HSL
3. LUMINANCE (L) уменьшаем в N раз
4. HSL -> RGB
5.RGB-> ACI
Теперь по пунктам
1,5. ACI->RGB решается просто
Код:
[Выделить все]
(SETQ OBJ (vlax-ename->vla-object (CAR(ENTSEL))))
(setq ACI_col (vla-get-Color obj))
(setq RGB (list (vla-get-red (vla-get-truecolor obj))(vla-get-Green (vla-get-truecolor obj))(vla-get-Blue (vla-get-truecolor obj))))
2. Реализовать алгоритм http://www.easyrgb.com/math.php?MATH=M18#text18
4. Реализовать алгоритм http://www.easyrgb.com/math.php?MATH=M19#text19
Или найти что-нудь еще
Пункт 2 я попробывал. S и L считается нормально, а вот H что-то не совпадает. Посмотрю, может допуслил где ошибку
VVA вне форума  
 
Автор темы   Непрочитано 15.12.2006, 13:56
#15
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Kpblc!!!! Хелп ми! Грузицца и ни работаит! Анноун комнд грит :cry: :cry: :cry: Цвета меняет и все.... Я понимаю, что это только направлениедля поиска, а не законченный программный продукт. но. кишка тонка.
Аshаs-ка вне форума  
 
Непрочитано 15.12.2006, 14:11
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Только что специально провеил - нормально работает. С ком.строки вызов (chla).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.12.2006, 15:17
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вроде реализовал алгоритм "побледнения" примитивов
Код:
[Выделить все]
;|=========== RGB2HSL ================
* Ф-ция переводит значения цветовой модели RGB в HSL
* Алгоритм взят http://www.easyrgb.com/math.html
* Параметры вызова :
   Значения цветов R G B в диапазоне 0 - 255
   Where RGB values = 0 ? 255
* Возвращает список цветовой модели H S L
* в долях единицы (HSL results = 0 ? 1)
* Соответствие
     H  - Hue (оттенок )
     S  - Saturation (насыщенность)
     L  - Luminance (яркость)
* Для перевода в целые значения Автокада использовать
* преобразование
  R = 56 G = 184 B = 188
  (setq HSL (RGB2HSL 56 184 188)) ;_(0.505051 0.540984 0.478431)
  (princ (strcat "\nЦвета HSL:" "\nH="
            (rtos (* (car HSL) 360) 2 0) "\nS="
            (rtos (* (cadr HSL) 100) 2 0) "\nL="
            (rtos (* (caddr HSL) 100) 2 0)))
|;
(defun RGB2HSL ( R G B / var_R var_G var_B var_Min var_Max del_Max H S L del_R del_G del_B )
(setq var_R  (/ R 255.))
(setq var_G  (/ G 255.))
(setq var_B  (/ B 255.))
(setq var_Min (min var_R var_G var_B ));    //Min. value of RGB
(setq var_Max (max var_R var_G var_B ));    //Max. value of RGB
(setq del_Max (- var_Max var_Min))     ;    //Delta RGB value
(setq L (/ (+ var_Max var_Min ) 2.0))
(if (= del_Max 0 ) ; //This is a gray, no chroma...
(setq H 0 S 0)
(progn  
  (if (< L 0.5)(setq S (/ del_Max (+ var_Max var_Min)))
               (setq S (/ del_Max (- 2 var_Max var_Min))))
(setq del_R (/ (+(/ (- var_Max var_R) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_G (/ (+(/ (- var_Max var_G) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_B (/ (+(/ (- var_Max var_B) 6.0)(/ del_Max 2.0)) del_Max))
(cond
  ((equal var_R var_Max 1e-6)(setq H (- del_B del_G)))
  ((equal var_G var_Max 1e-6)(setq H (- (+ (/ 1.0 3) del_R) del_B)))
  ((equal var_B var_Max 1e-6)(setq H (- (+ (/ 2.0 3) del_G) del_R)))
  (t (setq H 0)))
  (if (< H 0)(setq H (1+ H)))
  (if (> H 1)(setq H (1- H)))
  );progn
  );_if
(list H S L))

;|=========== HSL2RGB ================
* Ф-ция переводит значения цветовой модели HSL в RGB
* Алгоритм взят http://www.easyrgb.com/math.html
* http://130.113.54.154/~monger/hsl-rgb.html
* Параметры вызова:
  Значения цветовой модели H S L
  в долях единицы (HSL results = 0 ? 1)
* Возврат:
    Список значения цветов R G B в диапазоне 0 - 255
|;
(defun HSL2RGB (H S L / R G B temp1 temp2 temp3)
(defun hh ( temp1 temp2 temp3)
(if (< temp3 0)(setq temp3 (+ temp3 1)))
(if (> temp3 1)(setq temp3 (- temp3 1)))
(if (< (* 6 temp3) 1)(setq color (+ (* (- temp2 temp1) 6.0 temp3) temp1))
  (if (< (* 2.0 temp3) 1)(setq color temp2)
    (if (< (* 3.0 temp3) 2)(setq color (+ temp1 (* (- (/ 2.0 3.0) temp3) 6 (- temp2 temp1))))
      (setq color temp1)
      )
    )
  )
  color
  )
(if (= S 0)(setq R L G L B L)
  (progn
    (if (< L 0.5)(setq temp2 (* L (+ 1.0 S)))
      (setq temp2 (- (+ L S)(* L S))))
    (setq temp1 (- (* 2.0 L) temp2))
    (setq R (hh temp1 temp2 (+ H (/ 1.0 3.0))))
    (setq G (hh temp1 temp2 H ))
    (setq B (hh temp1 temp2 (- H (/ 1.0 3.0))))
    )
  )
  (mapcar '(lambda(x)(fix(* 255 x)))(list R G B))
)



(defun c:TEST ( / obj ACI_col TrueColor RGB HSL H S L HSL_new RGB_new *error* )
(defun *error* (msg)(princ msg)(if OBJ (vla-put-Color obj ACI_col))(princ))
(SETQ OBJ (vlax-ename->vla-object (CAR(ENTSEL "\nВыберите объект для побледнения: "))))
(setq ACI_col (vla-get-Color obj))
(cond ((= ACI_col 256) ;_По слою
       (vla-put-Color obj (vla-get-color (vla-item (vla-get-layers(vla-get-ActiveDocument(vlax-get-acad-object)))(vla-get-layer obj))))
       )
      ((= ACI_col 0)(vla-put-Color obj 7))
      (t nil)
      )
  
(setq TrueColor (vla-get-TrueColor obj))
(setq RGB (list (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor)))
(setq HSL (apply 'RGB2HSL RGB))
(setq H (car HSL) S (cadr HSL) L  (caddr HSL))
(if (< L 0.2) ;:_Яркость меньше 20
  ;Смещаем оттенок на 45 градусов
  (progn
    (setq H (+ H 0.125))
    (if (> H 1)(setq H (1- H)))
    ))
  (setq L (* 0.5 L))

(setq HSL_new (list H S L))
(setq RGB_new (apply 'HSL2RGB hsl_new))
(vla-setRGB TrueColor (nth 0 RGB_new)(nth 1 RGB_new)(nth 2 RGB_new))
(vla-put-TrueColor obj TrueColor)
(getstring "\nДля восстановления цвета нажмите любую клавишу...")
(vla-put-Color obj ACI_col)  
  )
В командной строке набрать TEST
Реализован следующий алгоритм:
Берем RGB примитива, преобразуем в HSL. L -Luminance (яркость) уменьшаем в 2 раза, получам новые значения RGB с уменьшенной яркостью, задаем цвет примитиву. Если яркость близка к темной (здесь 20% и меньше) смещаем оттенок.
VVA вне форума  
 
Непрочитано 15.12.2006, 17:01
#18
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вот вариан доработанной команды kpblc
Код:
[Выделить все]
;|=========== RGB2HSL ================
* Ф-ция переводит значения цветовой модели RGB в HSL
* Алгоритм взят http://www.easyrgb.com/math.html
* Параметры вызова :
   Значения цветов R G B в диапазоне 0 - 255
   Where RGB values = 0 ? 255
* Возвращает список цветовой модели H S L
* в долях единицы (HSL results = 0 ? 1)
* Соответствие
     H  - Hue (оттенок )
     S  - Saturation (насыщенность)
     L  - Luminance (яркость)
* Для перевода в целые значения Автокада использовать
* преобразование
  R = 56 G = 184 B = 188
  (setq HSL (RGB2HSL 56 184 188)) ;_(0.505051 0.540984 0.478431)
  (princ (strcat "\nЦвета HSL:" "\nH="
            (rtos (* (car HSL) 360) 2 0) "\nS="
            (rtos (* (cadr HSL) 100) 2 0) "\nL="
            (rtos (* (caddr HSL) 100) 2 0)))
|;
(defun RGB2HSL ( R G B / var_R var_G var_B var_Min var_Max del_Max H S L del_R del_G del_B )
(setq var_R  (/ R 255.))
(setq var_G  (/ G 255.))
(setq var_B  (/ B 255.))
(setq var_Min (min var_R var_G var_B ));    //Min. value of RGB
(setq var_Max (max var_R var_G var_B ));    //Max. value of RGB
(setq del_Max (- var_Max var_Min))     ;    //Delta RGB value
(setq L (/ (+ var_Max var_Min ) 2.0))
(if (= del_Max 0 )(setq H 0 S 0) ; //This is a gray, no chroma...
(progn  
  (if (< L 0.5)(setq S (/ del_Max (+ var_Max var_Min)))
               (setq S (/ del_Max (- 2 var_Max var_Min))))
(setq del_R (/ (+(/ (- var_Max var_R) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_G (/ (+(/ (- var_Max var_G) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_B (/ (+(/ (- var_Max var_B) 6.0)(/ del_Max 2.0)) del_Max))
(cond
  ((equal var_R var_Max 1e-6)(setq H (- del_B del_G)))
  ((equal var_G var_Max 1e-6)(setq H (- (+ (/ 1.0 3) del_R) del_B)))
  ((equal var_B var_Max 1e-6)(setq H (- (+ (/ 2.0 3) del_G) del_R)))
  (t (setq H 0)))
  (if (< H 0)(setq H (1+ H)))(if (> H 1)(setq H (1- H)))));_if
(list H S L))

;|=========== HSL2RGB ================
* Ф-ция переводит значения цветовой модели HSL в RGB
* Алгоритм взят http://www.easyrgb.com/math.html
* http://130.113.54.154/~monger/hsl-rgb.html
* Параметры вызова:
  Значения цветовой модели H S L
  в долях единицы (HSL results = 0 ? 1)
* Возврат:
    Список значения цветов R G B в диапазоне 0 - 255
|;
(defun HSL2RGB (H S L / R G B temp1 temp2 temp3)
(defun hh ( temp1 temp2 temp3)
(if (< temp3 0)(setq temp3 (+ temp3 1)))
(if (> temp3 1)(setq temp3 (- temp3 1)))
(if (< (* 6 temp3) 1)(setq color (+ (* (- temp2 temp1) 6.0 temp3) temp1))
  (if (< (* 2.0 temp3) 1)(setq color temp2)
    (if (< (* 3.0 temp3) 2)(setq color (+ temp1 (* (- (/ 2.0 3.0) temp3) 6 (- temp2 temp1))))
      (setq color temp1)))) color)
(if (= S 0)(setq R L G L B L)(progn
    (if (< L 0.5)(setq temp2 (* L (+ 1.0 S)))
      (setq temp2 (- (+ L S)(* L S))))
    (setq temp1 (- (* 2.0 L) temp2))
    (setq R (hh temp1 temp2 (+ H (/ 1.0 3.0))))
    (setq G (hh temp1 temp2 H ))
    (setq B (hh temp1 temp2 (- H (/ 1.0 3.0))))))
  (mapcar '(lambda(x)(fix(* 255 x)))(list R G B)))

(defun C:CHLA (/ adoc selset lst_layer_selected) 
  (vl-load-com) 
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not *kpblc-layer-list-hide*) 
    (if (setq selset (ssget))(progn (setq
;; Для начала слои выбранных примитивов:   
  lst_layer_selected (mapcar '(lambda (x)(strcase (cdr (assoc 8 (entget x))))) ;_ end of lambda
                       (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))) ;_ end of mapcar 
;; Теперь слои "не попавшие в выбор" 
 *kpblc-layer-list-hide* (append *kpblc-layer-list-hide* 
      ((lambda (/ res)(vlax-for lay (vla-get-layers adoc) 
           (if (not(member (strcase (vla-get-name lay)) lst_layer_selected))
              (setq res (append res (list (cons (vla-get-name lay)(vla-get-color lay)))))))
	 res)))) ;_ end of setq 
  (foreach item *kpblc-layer-list-hide* 
     ;; Меняем цвет. Если четный - то на "6" в конце. Для нечетных - "7" 
   (vl-catch-all-apply (function (lambda ( / obj TrueColor RGB HSL H S L )
     (setq obj (vla-item (vla-get-layers adoc) (car item)))
     (setq TrueColor (vla-get-TrueColor obj))
     (setq RGB (list (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor)))
     (setq HSL (apply 'RGB2HSL RGB))(setq H (car HSL) S (cadr HSL) L  (caddr HSL))
     (if (< L 0.2) ;:_Яркость меньше 20 Смещаем оттенок на 45 градусов
      (progn (setq H (+ H 0.125))(if (> H 1)(setq H (1- H)))))
     (setq L (* 0.5 L))(setq RGB (apply 'HSL2RGB (list H S L)))
     (vla-setRGB TrueColor (nth 0 RGB)(nth 1 RGB)(nth 2 RGB))
     (vla-put-TrueColor obj TrueColor)))) ;_ end of vl-catch-all-apply 
          ) ;_ end of foreach 
        ) ;_ end of progn 
      ) ;_ end of if 
    (progn
      (princ "\nВосстанавливаю состояние слоев...")
      (foreach item *kpblc-layer-list-hide* 
        (vl-catch-all-apply (function (lambda () 
          (vla-put-color (vla-item (vla-get-layers adoc) (car item))(cdr item)))))) ;_ end of foreach
      (princ " ok")(setq *kpblc-layer-list-hide* nil) 
      ) ;_ end of progn 
    ) ;_ end of if 
  (vla-endundomark adoc)(princ)) ;_ end of defun
(princ "\nНаберите в командной строке CHLA")
Состояние сохраняется в глобальной переменной (действительно в пределах сеанса работы). Можно рассмотреть вариант с записью в словарь.
Работает по принципу выключателя: понизили яркость -> восстановили состояние. Команда CHLA
VVA вне форума  
 
Автор темы   Непрочитано 16.12.2006, 00:31
#19
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


VVA: -Прикольно. Правда, невыбранные слои не залочиваются пока. И вот бледнеет совершенно недостаточно, и подвирает с цветами... Не работает, если цвет задан примитиву явно. В режиме редактирования блока in place это как то хитрее организовано, там бледнеют -и сильно!- все не входящие в блок элементы. Идея организовать из выбранных примитивов блок, редактировать его находу... хороша, но функция редактирования блока - тормознутая, ногти изгрызешь, пока сработает, да и добавлять в набор примитивы ни к чему.. Layiso быстрее! В принципе, если добавть строки залочивания - и разлочивания! -невыбранных слоев- классная штука получается!
Kpblc: Заработало. Дописал букувку в начале ...defun c:chla (/... , только как то неустойчиво (и висит как-то неуверенно...). Но- не бледнеют, гады! Просто цвет меняют... И явно заданные цвета игнорируют. Сам я только "по слою" работаю, да в конторе я не один с кривыми ручками. 20% времени правкой занимаюсь...
Аshаs-ка вне форума  
 
Автор темы   Непрочитано 16.12.2006, 00:39
#20
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


VVA: Еще глюк. Даю слоям трушные цвета, CHLA туда, обратно - и все цвета слоев стали индексированные. Существенно. У Kpblc-а аналогично. То есть в исходное состояние слои не восстанавливаются [sm1402]
Аshаs-ка вне форума  
 
Непрочитано 16.12.2006, 08:00
#21
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,750
Отправить сообщение для T-Yoke с помощью Skype™


Идея с полупрозрачными слоями действитительно интересная, можно будет наконец в автокаде в сборках внутренности показывать без полного отключения наружных деталей.
T-Yoke вне форума  
 
Автор темы   Непрочитано 16.12.2006, 12:17
#22
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Вот! Еще одно применение! Мне, например. часто на генпланах съемку векторную приглушать надо! Еще какие мысли по поводу применения есть?
Аshаs-ка вне форума  
 
Непрочитано 17.12.2006, 11:04
#23
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


(ИМХО) идея предложенная AY по данному вопросу лично мне кажется более правильной и простой в воплощении, по сравнению с изменением цвета у объектов на определенном слое.
Была у меня мысль сделать таблицу соответствия - (ЦВЕТ . ТУСКЛЫЙ_ЦВЕТ), однако дальше семи основных цветов(1 . 16) (1 . 56) (3 . 96) (4 . 136) (5 . 176) (6 . 216) ничего хорошего не получилось (можете попрововать например подобрать бледный_цвет для цвета 11?). А если на слое есть куча блоков, каждый примитив и атрибут которого надо заставить "побледнеть"... :roll:
Вот вариант идеи AY, правда в ACAD'е 2002 не работает, т.к. не смог разобраться с опциями команды ".-refedit" (работает только в таком виде
Код:
[Выделить все]
(vl-cmdf ".-refedit" sel_point "_Ok" '(245.236 46.626 0.0) '(199.61 159.446 0.0) '(129.011 72.0706 0.0) "" "Y")
и больше никак (список характерных точек примитивов не берет :cry: )
Код:
[Выделить все]
(defun start_view ( / doc ent_obj OBJ layer-obj obj_Current_layer)
  (vl-load-com)
  (setvar "cmdecho" 0)
  (setq	doc (vla-get-activedocument
	      (vlax-get-acad-object)
	    ) ;_ end of vla-get-activedocument
  ) ;_ end of setq
  (setq ent_obj (ENTSEL))
  (setq obl_vla (vlax-ename->vla-object (CAR ent_obj))
  ) ;_ end of setq
  (setq layer-obj (vla-get-layer obl_vla))
  (setq	obj_Current_layer
	 (ssget "X" (list (cons 8 layer-obj))
	 ) ;_ end of ssget
  ) ;_ end of setq
  (vl-cmdf ".-block" "temp" '(0 0) obj_Current_layer "")
  (vl-cmdf "_insert" "temp" '(0 0) "" "" "")
  (vl-cmdf ".-refedit" (cadr ent_obj) "_Ok" "All" "Y")
  (princ)
) ;_ end of defun


(defun end_view (/ doc obj_temp)
  (setvar "cmdecho" 0)
  (setq	doc (vla-get-activedocument
	      (vlax-get-acad-object)
	    ) ;_ end of vla-get-activedocument
  ) ;_ end of setq
  (vl-cmdf "_refclose" "_D")
  (setq
    obj_temp (ssget "X" (list (cons 2 "temp")))
  ) ;_ end of setq
  (vl-cmdf "_explode" obj_temp)
  (vla-delete
    (vla-item (vla-get-Blocks doc) "temp")
  ) ;_ end of vla-delete
  (princ)
) ;_ end of defun
Правда и здесь надо разобраться с командой ".-block" - в диалоговом режиме есть опция Convert to block, как сделать чтобы в командном режиме создаваемый блок не удалялся - не знаю, поэтому в коде дополнительная команда "_insert"...
Естественно можно сделать наоборот - чтобы "бледнели" примитивы выбираемого слоя...
CB вне форума  
 
Непрочитано 18.12.2006, 12:24
#24
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вариант с блокировкой слоев, запоминанием/восстановлением RGB, ACI-color
Код:
[Выделить все]
;|=========== RGB2HSL ================
* Ф-ция переводит значения цветовой модели RGB в HSL
* Алгоритм взят http://www.easyrgb.com/math.html
* Параметры вызова :
   Значения цветов R G B в диапазоне 0 - 255
   Where RGB values = 0 ? 255
* Возвращает список цветовой модели H S L
* в долях единицы (HSL results = 0 ? 1)
* Соответствие
     H  - Hue (оттенок )
     S  - Saturation (насыщенность)
     L  - Luminance (яркость)
* Для перевода в целые значения Автокада использовать
* преобразование
  R = 56 G = 184 B = 188
  (setq HSL (RGB2HSL 56 184 188)) ;_(0.505051 0.540984 0.478431)
  (princ (strcat "\nЦвета HSL:" "\nH="
            (rtos (* (car HSL) 360) 2 0) "\nS="
            (rtos (* (cadr HSL) 100) 2 0) "\nL="
            (rtos (* (caddr HSL) 100) 2 0)))
|;
(defun RGB2HSL ( R G B / var_R var_G var_B var_Min var_Max del_Max H S L del_R del_G del_B )
(setq var_R  (/ R 255.))
(setq var_G  (/ G 255.))
(setq var_B  (/ B 255.))
(setq var_Min (min var_R var_G var_B ));    //Min. value of RGB
(setq var_Max (max var_R var_G var_B ));    //Max. value of RGB
(setq del_Max (- var_Max var_Min))     ;    //Delta RGB value
(setq L (/ (+ var_Max var_Min ) 2.0))
(if (= del_Max 0 )(setq H 0 S 0) ; //This is a gray, no chroma...
(progn  
  (if (< L 0.5)(setq S (/ del_Max (+ var_Max var_Min)))
               (setq S (/ del_Max (- 2 var_Max var_Min))))
(setq del_R (/ (+(/ (- var_Max var_R) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_G (/ (+(/ (- var_Max var_G) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_B (/ (+(/ (- var_Max var_B) 6.0)(/ del_Max 2.0)) del_Max))
(cond
  ((equal var_R var_Max 1e-6)(setq H (- del_B del_G)))
  ((equal var_G var_Max 1e-6)(setq H (- (+ (/ 1.0 3) del_R) del_B)))
  ((equal var_B var_Max 1e-6)(setq H (- (+ (/ 2.0 3) del_G) del_R)))
  (t (setq H 0)))
  (if (< H 0)(setq H (1+ H)))(if (> H 1)(setq H (1- H)))));_if
(list H S L))

;|=========== HSL2RGB ================
* Ф-ция переводит значения цветовой модели HSL в RGB
* Алгоритм взят http://www.easyrgb.com/math.html
* http://130.113.54.154/~monger/hsl-rgb.html
* Параметры вызова:
  Значения цветовой модели H S L
  в долях единицы (HSL results = 0 ? 1)
* Возврат:
    Список значения цветов R G B в диапазоне 0 - 255
|;
(defun HSL2RGB (H S L / R G B temp1 temp2 temp3)
(defun hh ( temp1 temp2 temp3)
(if (< temp3 0)(setq temp3 (+ temp3 1)))
(if (> temp3 1)(setq temp3 (- temp3 1)))
(if (< (* 6 temp3) 1)(setq color (+ (* (- temp2 temp1) 6.0 temp3) temp1))
  (if (< (* 2.0 temp3) 1)(setq color temp2)
    (if (< (* 3.0 temp3) 2)(setq color (+ temp1 (* (- (/ 2.0 3.0) temp3) 6 (- temp2 temp1))))
      (setq color temp1)))) color)
(if (= S 0)(setq R L G L B L)(progn
    (if (< L 0.5)(setq temp2 (* L (+ 1.0 S)))
      (setq temp2 (- (+ L S)(* L S))))
    (setq temp1 (- (* 2.0 L) temp2))
    (setq R (hh temp1 temp2 (+ H (/ 1.0 3.0))))
    (setq G (hh temp1 temp2 H ))
    (setq B (hh temp1 temp2 (- H (/ 1.0 3.0))))))
  (mapcar '(lambda(x)(fix(* 255 x)))(list R G B)))

(defun C:CHLA (/ adoc selset lst_layer_selected) 
  (vl-load-com) 
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not *kpblc-layer-list-hide*) 
    (if (setq selset (ssget))(progn (setq
lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
;; Для начала слои выбранных примитивов:   
  lst_layer_selected (mapcar '(lambda (x)(strcase (cdr (assoc 8 (entget x))))) lst) ;_mapcar 
;; Теперь слои "не попавшие в выбор" 
 *kpblc-layer-list-hide* (append *kpblc-layer-list-hide* 
      ((lambda (/ res)(vlax-for lay (vla-get-layers adoc) 
         (if (not(member (strcase (vla-get-name lay)) lst_layer_selected))
           (setq res (append res (list (list (vla-get-handle lay)
	(if (= (vla-get-ColorMethod(setq TrueColor(vla-get-TrueColor lay))) acColorMethodByRGB)
	(list  (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor))
	(vla-get-color lay))(vla-get-lock lay))))))) res)))) ;_ end of setq 
  (foreach item *kpblc-layer-list-hide* 
   (vl-catch-all-apply
     (function
       (lambda (/ obj TrueColor RGB HSL H S L)
	 (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
	 (setq TrueColor (vla-get-TrueColor obj))
	 (setq RGB (list (vla-get-red TrueColor)
			 (vla-get-Green TrueColor)
			 (vla-get-Blue TrueColor)))
	 (setq HSL (apply 'RGB2HSL RGB))
	 (setq H (car HSL) S (cadr HSL) L (caddr HSL))
	 (if (< L 0.2)(progn				  ;:_Яркость меньше 20 Смещаем оттенок на 45 градусов
	  (setq H (+ H 0.125))
	  (if (> H 1)(setq H (1- H)))))
	 (setq L (* 0.4 L)) ;_Уменьшаем яркость
	 (setq RGB (apply 'HSL2RGB (list H S L)))
	 (vla-setRGB TrueColor (nth 0 RGB) (nth 1 RGB) (nth 2 RGB))
	 (vla-put-TrueColor obj TrueColor)
 	 (if (= (vla-get-ObjectName obj) "AcDbLayerTableRecord")(vla-put-lock obj :vlax-true))
       )
     )
   ) ;_ end of vl-catch-all-apply
  ) ;_ end of foreach 
 ) ;_ end of progn 
 ) ;_ end of if 
 (progn
   (princ "\nВосстанавливаю состояние слоев...")
   (foreach item *kpblc-layer-list-hide* 
     (vl-catch-all-apply (function (lambda ( / obj xx)
     (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
     (setq TrueColor (vla-get-TrueColor obj))
     (setq xx (nth 1 item))
     (if (listp xx)(progn
       (vla-setRGB TrueColor (nth 0 xx) (nth 1 xx) (nth 2 xx))
       (vla-put-TrueColor obj TrueColor))
       (vla-put-color obj xx))
     (if (setq xx (nth 2 item))(vla-put-Lock obj xx)))))
   ) ;_ end of foreach
   (princ " ok")(setq *kpblc-layer-list-hide* nil) 
  ) ;_ end of progn 
 ) ;_ end of if 
(vla-endundomark adoc)(princ)) ;_ end of defun
(princ "\nНаберите в командной строке CHLA")
Измененена структура списка *kpblc-layer-list-hide*
Список имеет вид (("42" 7 :vlax-true) ("45" (223 118 83) :vlax-false))
1-й элемент - метка (поле 5) примитива
2-й - число - ACI-color, список - коды R G B для true-color
3-й элемент - если слой, то его состояние блокировки
За "потемнение" отвечает эта строка в коде
Код:
[Выделить все]
(setq L (* 0.4 L)) ;_Уменьшаем яркость
можно поиграться с коэффициетном.
Пока что не решен вопрос (надо ли?) с примитивами с явным заданием цвета и с явным заданием цвета примитивов в определении блока.
VVA вне форума  
 
Непрочитано 18.12.2006, 15:16
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Уменьшение яркости справедливо, если рисовать белым по черному. Если наоборот, то, наверное, надо увеличивать. У кого какие мысли?
VVA вне форума  
 
Непрочитано 18.12.2006, 15:20
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Может, попробовать получить цвет активного пространства (в котором выполняется рисование) и сдвигать цвета в сторону этого цвета?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2006, 16:13
#27
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


> kpblc
Допустим есть цвет активного пространства в RGB. Как сдвигать цвета в сторону этого цвета?
VVA вне форума  
 
Автор темы   Непрочитано 18.12.2006, 16:47
#28
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Дас ист фантастишь! Сбылась мечта идиота!!! Жаль, что идиот чертит на белом Маленький недочет - не меняет явно заданные примитивам цвета. ТАК ИМ И НАДО!!! А вообще - огромный респектище!!! Это точно будет мой любимый струмент. Лэйисо- на свалку истории! Здорово то как!
Аshаs-ка вне форума  
 
Непрочитано 18.12.2006, 16:57
#29
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


> VVA : Ну это ж была идея, не больше. Если честно, ответа на твой вопрос у меня нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2006, 17:02
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вот последний( :?: ) вариант с блокировкой слоев, запоминанием/восстановлением RGB, ACI-color + примитивы с явным заданием цвета. Примитивы, входящие в блоки с явным задание цвета, не рассматриваются. Блоки должны быть "правильные".
В области потемнения/осветления делается так: Вычисляем цвет фона, если черный (0), то делаем затемнение, иначе- осветление.
Затемнение: Если яркость меньше 20%, сдвигаем оттенок на 45 градусов. Яркость уменьшаем на треть.
Осветление: к яркости добавляем 25%. Если яркость > 100% сдвигаем оттенок на 45 градусов, яркость устанавливаем на уровне 90%.
Код:
[Выделить все]
;http://forum.dwg.ru/showthread.php?p=108497#post108497
;|=========== RGB2HSL ================
* Ф-ция переводит значения цветовой модели RGB в HSL
* Алгоритм взят http://www.easyrgb.com/math.html
* Параметры вызова :
   Значения цветов R G B в диапазоне 0 - 255
   Where RGB values = 0 ? 255
* Возвращает список цветовой модели H S L
* в долях единицы (HSL results = 0 ? 1)
* Соответствие
     H  - Hue (оттенок )
     S  - Saturation (насыщенность)
     L  - Luminance (яркость)
* Для перевода в целые значения Автокада использовать
* преобразование
  R = 56 G = 184 B = 188
  (setq HSL (RGB2HSL 56 184 188)) ;_(0.505051 0.540984 0.478431)
  (princ (strcat "\nЦвета HSL:" "\nH="
            (rtos (* (car HSL) 360) 2 0) "\nS="
            (rtos (* (cadr HSL) 100) 2 0) "\nL="
            (rtos (* (caddr HSL) 100) 2 0)))
|;
(defun RGB2HSL ( R G B / var_R var_G var_B var_Min var_Max del_Max H S L del_R del_G del_B )
(setq var_R  (/ R 255.))
(setq var_G  (/ G 255.))
(setq var_B  (/ B 255.))
(setq var_Min (min var_R var_G var_B ));    //Min. value of RGB
(setq var_Max (max var_R var_G var_B ));    //Max. value of RGB
(setq del_Max (- var_Max var_Min))     ;    //Delta RGB value
(setq L (/ (+ var_Max var_Min ) 2.0))
(if (= del_Max 0 )(setq H 0 S 0) ; //This is a gray, no chroma...
(progn  
  (if (< L 0.5)(setq S (/ del_Max (+ var_Max var_Min)))
               (setq S (/ del_Max (- 2 var_Max var_Min))))
(setq del_R (/ (+(/ (- var_Max var_R) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_G (/ (+(/ (- var_Max var_G) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_B (/ (+(/ (- var_Max var_B) 6.0)(/ del_Max 2.0)) del_Max))
(cond
  ((equal var_R var_Max 1e-6)(setq H (- del_B del_G)))
  ((equal var_G var_Max 1e-6)(setq H (- (+ (/ 1.0 3) del_R) del_B)))
  ((equal var_B var_Max 1e-6)(setq H (- (+ (/ 2.0 3) del_G) del_R)))
  (t (setq H 0)))
  (if (< H 0)(setq H (1+ H)))(if (> H 1)(setq H (1- H)))));_if
(list H S L))

;|=========== HSL2RGB ================
* Ф-ция переводит значения цветовой модели HSL в RGB
* Алгоритм взят http://www.easyrgb.com/math.html
* http://130.113.54.154/~monger/hsl-rgb.html
* Параметры вызова:
  Значения цветовой модели H S L
  в долях единицы (HSL results = 0 ? 1)
* Возврат:
    Список значения цветов R G B в диапазоне 0 - 255
|;
(defun HSL2RGB (H S L / R G B temp1 temp2 temp3)
(defun hh ( temp1 temp2 temp3)
(if (< temp3 0)(setq temp3 (+ temp3 1)))
(if (> temp3 1)(setq temp3 (- temp3 1)))
(if (< (* 6 temp3) 1)(setq color (+ (* (- temp2 temp1) 6.0 temp3) temp1))
  (if (< (* 2.0 temp3) 1)(setq color temp2)
    (if (< (* 3.0 temp3) 2)(setq color (+ temp1 (* (- (/ 2.0 3.0) temp3) 6 (- temp2 temp1))))
      (setq color temp1)))) color)
(if (= S 0)(setq R L G L B L)(progn
    (if (< L 0.5)(setq temp2 (* L (+ 1.0 S)))
      (setq temp2 (- (+ L S)(* L S))))
    (setq temp1 (- (* 2.0 L) temp2))
    (setq R (hh temp1 temp2 (+ H (/ 1.0 3.0))))
    (setq G (hh temp1 temp2 H ))
    (setq B (hh temp1 temp2 (- H (/ 1.0 3.0))))))
  (mapcar '(lambda(x)(fix(* 255 x)))(list R G B)))

(defun C:CHLA (/ adoc selset lst_layer_selected lst lst-hide mc) 
  (vl-load-com) 
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not *kpblc-layer-list-hide*) 
    (if (setq selset (ssget))(progn (setq
lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
lst-hide (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X" (list(assoc 410(entget(car lst))))))))
;; Для начала слои выбранных примитивов:   
lst_layer_selected (mapcar '(lambda (x)(strcase (cdr (assoc 8 (entget x))))) lst) ;_mapcar
lst-hide (vl-remove-if '(lambda(x)(member (strcase(cdr(assoc 8 (entget x)))) lst_layer_selected)) lst-hide)
lst-hide (vl-remove-if-not '(lambda(x)(assoc 62 (entget x))) lst-hide) ;_Объекты с Явным цветом
;; Теперь !!! Объекты (Слои - частный случай) "не попавшие в выбор" 
 *kpblc-layer-list-hide* (append *kpblc-layer-list-hide* 
      ((lambda ( / res)(vlax-for lay (vla-get-layers adoc) 
         (if (not(member (strcase (vla-get-name lay)) lst_layer_selected))
           (setq res (append res (list (list (vla-get-handle lay)
	(if (= (vla-get-ColorMethod(setq TrueColor(vla-get-TrueColor lay))) acColorMethodByRGB)
	(list  (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor))
	(vla-get-color lay))(vla-get-lock lay))))))) res)))
 *kpblc-obj-list-hide* (append *kpblc-layer-obj-hide*
((lambda ( / res)(foreach lay (mapcar 'vlax-ename->vla-object lst-hide)
(setq res (append res (list (list (vla-get-handle lay)
  (if (= (vla-get-ColorMethod(setq TrueColor(vla-get-TrueColor lay))) acColorMethodByRGB)
  (list  (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor))
 (vla-get-color lay))))))))))
) ;_ end of setq
(setq mc (vlax-variant-value (vlax-variant-change-type
      (vla-get-graphicswinmodelbackgrndcolor
        (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
      vlax-vblong))) ;_Цвет модели в OLE
;;;Если цвет 0 - понижаем яркость в 3 раза иначе добавляем 25
(if (zerop mc)
  (defun chL ( )
    (if (< L 0.2)(progn				  ;:_Яркость меньше 20 Смещаем оттенок на 45 градусов
	  (setq H (+ H 0.125))(if (> H 1)(setq H (1- H)))
	  )
	   )
   (setq L (* 0.3 L))) ;_Для черного фона
  (defun chL ( )
    (setq L (+ 0.25 L))
    (if (> L 1)
	   (progn
	    (setq H (+ H 0.125))(if (> H 1)(setq H (1- H))) 
            (setq L 0.9)
	   )
	   )
    );_Для остальных
  )
  (foreach item *kpblc-layer-list-hide* 
   (vl-catch-all-apply
     (function
       (lambda (/ obj TrueColor RGB HSL H S L)
	 (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
	 ;;Разблокируем слои
 	 (vla-put-lock obj :vlax-false)
	 (setq TrueColor (vla-get-TrueColor obj))
	 (setq RGB (list (vla-get-red TrueColor)
			 (vla-get-Green TrueColor)
			 (vla-get-Blue TrueColor)))
	 (setq HSL (apply 'RGB2HSL RGB))
	 (setq H (car HSL) S (cadr HSL) L (caddr HSL))
	 
	 (chL) ;_Изменяем яркость
	 
	 (setq RGB (apply 'HSL2RGB (list H S L)))
	 (vla-setRGB TrueColor (nth 0 RGB) (nth 1 RGB) (nth 2 RGB))
	 (vla-put-TrueColor obj TrueColor)
       )
     )
   ) ;_ end of vl-catch-all-apply
  ) ;_ end of foreach
(foreach item *kpblc-obj-list-hide* 
   (vl-catch-all-apply
     (function
       (lambda (/ obj TrueColor RGB HSL H S L)
	 (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
	 (setq TrueColor (vla-get-TrueColor obj))
	 (setq RGB (list (vla-get-red TrueColor)
			 (vla-get-Green TrueColor)
			 (vla-get-Blue TrueColor)))
	 (setq HSL (apply 'RGB2HSL RGB))
	 (setq H (car HSL) S (cadr HSL) L (caddr HSL))
	 
	 (chL) ;_Изменяем яркость
	 
	 (setq RGB (apply 'HSL2RGB (list H S L)))
	 (vla-setRGB TrueColor (nth 0 RGB) (nth 1 RGB) (nth 2 RGB))
	 (vla-put-TrueColor obj TrueColor)
       )
     )
   ) ;_ end of vl-catch-all-apply
  )			       
(foreach item *kpblc-layer-list-hide*
(setq obj (vlax-ename->vla-object(handent (nth 0 item))))
 ;;блокируем слои
(vla-put-lock obj :vlax-true)
  ) ;_ end of foreach 
 ) ;_ end of progn 
 ) ;_ end of if 
 (progn
(princ "\nВосстанавливаю состояние слоев...")
(foreach item *kpblc-layer-list-hide* 
     (vl-catch-all-apply (function (lambda ( / obj xx)
     (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
     (setq TrueColor (vla-get-TrueColor obj))
     (setq xx (nth 1 item))
     (if (listp xx)(progn
       (vla-setRGB TrueColor (nth 0 xx) (nth 1 xx) (nth 2 xx))
       (vla-put-TrueColor obj TrueColor))
       (vla-put-color obj xx))
 ;;Разблокируем слои
    (vla-put-lock obj :vlax-false)
   )
  )))
(foreach item *kpblc-obj-list-hide* 
     (vl-catch-all-apply (function (lambda ( / obj xx)
     (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
     (setq TrueColor (vla-get-TrueColor obj))
     (setq xx (nth 1 item))
     (if (listp xx)(progn
       (vla-setRGB TrueColor (nth 0 xx) (nth 1 xx) (nth 2 xx))
       (vla-put-TrueColor obj TrueColor))
       (vla-put-color obj xx))))))
(setq *kpblc-obj-list-hide* nil)
 (foreach item *kpblc-layer-list-hide*
     (setq obj (vlax-ename->vla-object(handent (nth 0 item))))
     (if (setq xx (nth 2 item))(vla-put-Lock obj xx)))
   (princ " ok")(setq *kpblc-layer-list-hide* nil) 
  ) ;_ end of progn 
 ) ;_ end of if 
(vla-endundomark adoc)(princ)) ;_ end of defun
(princ "\nНаберите в командной строке CHLA")

Последний раз редактировалось VVA, 19.09.2015 в 21:06.
VVA вне форума  
 
Автор темы   Непрочитано 18.12.2006, 17:11
#31
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Все! Леплю кнопку!!! VVA! Спасибо! Kpblc! Спасибо! СВ! Тоже спасибо! Я пойду и скажу всем! VVA! А не хотите в готовые программы на autocad.ru? Или в dwg.ru в download?
Аshаs-ка вне форума  
 
Непрочитано 18.12.2006, 18:02
#32
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Можно, если считать вопрос с потемнением/осветвлением завершенным
VVA вне форума  
 
Непрочитано 18.12.2006, 18:39
#33
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Цитата:
Или в dwg.ru в download?
Код:
[Выделить все]
Неверно ориентируете, 
                     товарищь! 
Готовые программы 
              у нас 
		  	     кладутся на autolisp.ru 
										        :)
AY вне форума  
 
Непрочитано 19.12.2006, 17:49
#34
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Оптимизированный вариан. На тестовом чертеже с 17658 примитивами и 236 объектов с явным заданием цвета производительность увеличилась в 4,5 раза.
Код:
[Выделить все]
;http://forum.dwg.ru/showthread.php?p=108672#post108672
;|=========== RGB2HSL ================
* Ф-ция переводит значения цветовой модели RGB в HSL
* Алгоритм взят http://www.easyrgb.com/math.html
* Параметры вызова :
   Значения цветов R G B в диапазоне 0 - 255
   Where RGB values = 0 ? 255
* Возвращает список цветовой модели H S L
* в долях единицы (HSL results = 0 ? 1)
* Соответствие
     H  - Hue (оттенок )
     S  - Saturation (насыщенность)
     L  - Luminance (яркость)
* Для перевода в целые значения Автокада использовать
* преобразование
  R = 56 G = 184 B = 188
  (setq HSL (RGB2HSL 56 184 188)) ;_(0.505051 0.540984 0.478431)
  (princ (strcat "\nЦвета HSL:" "\nH="
            (rtos (* (car HSL) 360) 2 0) "\nS="
            (rtos (* (cadr HSL) 100) 2 0) "\nL="
            (rtos (* (caddr HSL) 100) 2 0)))
|;
(defun RGB2HSL ( R G B / var_R var_G var_B var_Min var_Max del_Max H S L del_R del_G del_B )
(setq var_R  (/ R 255.))
(setq var_G  (/ G 255.))
(setq var_B  (/ B 255.))
(setq var_Min (min var_R var_G var_B ));    //Min. value of RGB
(setq var_Max (max var_R var_G var_B ));    //Max. value of RGB
(setq del_Max (- var_Max var_Min))     ;    //Delta RGB value
(setq L (/ (+ var_Max var_Min ) 2.0))
(if (= del_Max 0 )(setq H 0 S 0) ; //This is a gray, no chroma...
(progn  
  (if (< L 0.5)(setq S (/ del_Max (+ var_Max var_Min)))
               (setq S (/ del_Max (- 2 var_Max var_Min))))
(setq del_R (/ (+(/ (- var_Max var_R) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_G (/ (+(/ (- var_Max var_G) 6.0)(/ del_Max 2.0)) del_Max))
(setq del_B (/ (+(/ (- var_Max var_B) 6.0)(/ del_Max 2.0)) del_Max))
(cond
  ((equal var_R var_Max 1e-6)(setq H (- del_B del_G)))
  ((equal var_G var_Max 1e-6)(setq H (- (+ (/ 1.0 3) del_R) del_B)))
  ((equal var_B var_Max 1e-6)(setq H (- (+ (/ 2.0 3) del_G) del_R)))
  (t (setq H 0)))
  (if (< H 0)(setq H (1+ H)))(if (> H 1)(setq H (1- H)))));_if
(list H S L))

;|=========== HSL2RGB ================
* Ф-ция переводит значения цветовой модели HSL в RGB
* Алгоритм взят http://www.easyrgb.com/math.html
* http://130.113.54.154/~monger/hsl-rgb.html
* Параметры вызова:
  Значения цветовой модели H S L
  в долях единицы (HSL results = 0 ? 1)
* Возврат:
    Список значения цветов R G B в диапазоне 0 - 255
|;
(defun HSL2RGB (H S L / R G B temp1 temp2 temp3)
(defun hh ( temp1 temp2 temp3)
(if (< temp3 0)(setq temp3 (+ temp3 1)))
(if (> temp3 1)(setq temp3 (- temp3 1)))
(if (< (* 6 temp3) 1)(setq color (+ (* (- temp2 temp1) 6.0 temp3) temp1))
  (if (< (* 2.0 temp3) 1)(setq color temp2)
    (if (< (* 3.0 temp3) 2)(setq color (+ temp1 (* (- (/ 2.0 3.0) temp3) 6 (- temp2 temp1))))
      (setq color temp1)))) color)
(if (= S 0)(setq R L G L B L)(progn
    (if (< L 0.5)(setq temp2 (* L (+ 1.0 S)))
      (setq temp2 (- (+ L S)(* L S))))
    (setq temp1 (- (* 2.0 L) temp2))
    (setq R (hh temp1 temp2 (+ H (/ 1.0 3.0))))
    (setq G (hh temp1 temp2 H ))
    (setq B (hh temp1 temp2 (- H (/ 1.0 3.0))))))
  (mapcar '(lambda(x)(fix(* 255 x)))(list R G B)))
(defun C:CHLA (/ adoc selset lst_layer_selected lst lst-hide mc filter) 
  (vl-load-com) 
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (not *kpblc-layer-list-hide*) 
    (if (setq selset (ssget))(progn (setq
lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
;; Для начала слои выбранных примитивов:   
lst_layer_selected (mapcar '(lambda (x)(strcase (cdr (assoc 8 (entget x))))) lst)
filter (apply 'strcat (mapcar '(lambda(x)(strcat x ",")) lst_layer_selected))
lst-hide (ssget "_X" (list (assoc 410(entget(car lst)))
       '(-4 . "<NOT")(cons 8 filter) '(-4 . "NOT>") '(-4 . "<NOT") '(62 . 256) '(-4 . "NOT>")))
lst-hide (if lst-hide (vl-remove-if 'listp (mapcar 'cadr (ssnamex lst-hide))) nil)
;_!!! lst-hide (vl-remove-if '(lambda(x)(member (strcase(cdr(assoc 8 (entget x)))) lst_layer_selected)) lst-hide)
;_!!! lst-hide (vl-remove-if-not '(lambda(x)(assoc 62 (entget x))) lst-hide) ;_Объекты с Явным цветом
;; Теперь !!! Объекты (Слои - частный случай) "не попавшие в выбор" 
 *kpblc-layer-list-hide* (append *kpblc-layer-list-hide* 
      ((lambda ( / res)(vlax-for lay (vla-get-layers adoc) 
         (if (not(member (strcase (vla-get-name lay)) lst_layer_selected))
           (setq res (append res (list (list lay
	(if (= (vla-get-ColorMethod(setq TrueColor(vla-get-TrueColor lay))) acColorMethodByRGB)
	(list  (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor))
	(vla-get-color lay))(vla-get-lock lay))))))) res)))
 *kpblc-obj-list-hide* (append *kpblc-obj-list-hide*
((lambda ( / res)(foreach lay lst-hide
		   (setq lay (vlax-ename->vla-object lay))
(setq res (append res (list (list lay
  (if (= (vla-get-ColorMethod(setq TrueColor(vla-get-TrueColor lay))) acColorMethodByRGB)
  (list  (vla-get-red TrueColor)(vla-get-Green TrueColor)(vla-get-Blue TrueColor))
 (vla-get-color lay))))))))))
) ;_ end of setq
(setq mc (vlax-variant-value (vlax-variant-change-type
      (vla-get-graphicswinmodelbackgrndcolor
        (vla-get-display (vla-get-preferences (vlax-get-acad-object))))
      vlax-vblong))) ;_Цвет модели в OLE
;;;Если цвет 0 - понижаем яркость в 3 раза иначе добавляем 25
(if (zerop mc)
  (defun chL ( )
    (if (< L 0.2)(progn  ;:_Яркость меньше 20 Смещаем оттенок на 45 градусов
	  (setq H (+ H 0.125))(if (> H 1)(setq H (1- H))))) (setq L (* 0.4 L))) ;_Для черного фона
  (defun chL ( )(setq L (+ 0.25 L))
    (if (> L 1)(progn
      (setq H (+ H 0.125))(if (> H 1)(setq H (1- H))) 
      (setq L 0.9))));_Для остальных
  )
  (foreach item *kpblc-layer-list-hide* 
   (vl-catch-all-apply
     (function
       (lambda (/ obj TrueColor RGB HSL H S L)
	 (setq obj (nth 0 item))
	 ;;Разблокируем слои
 	 (vla-put-lock obj :vlax-false)
	 (setq TrueColor (vla-get-TrueColor obj))
	 (setq RGB (list (vla-get-red TrueColor)
			 (vla-get-Green TrueColor)
			 (vla-get-Blue TrueColor)))
	 (setq HSL (apply 'RGB2HSL RGB))
	 (setq H (car HSL) S (cadr HSL) L (caddr HSL))
	 
	 (chL) ;_Изменяем яркость
	 
	 (setq RGB (apply 'HSL2RGB (list H S L)))
	 (vla-setRGB TrueColor (nth 0 RGB) (nth 1 RGB) (nth 2 RGB))
	 (vla-put-TrueColor obj TrueColor)
       )
     )
   ) ;_ end of vl-catch-all-apply
  ) ;_ end of foreach
(foreach item *kpblc-obj-list-hide* 
   (vl-catch-all-apply
     (function
       (lambda (/ obj TrueColor RGB HSL H S L)
	 (setq obj (nth 0 item))
	 (setq TrueColor (vla-get-TrueColor obj))
	 (setq RGB (list (vla-get-red TrueColor)
			 (vla-get-Green TrueColor)
			 (vla-get-Blue TrueColor)))
	 (setq HSL (apply 'RGB2HSL RGB))
	 (setq H (car HSL) S (cadr HSL) L (caddr HSL))
	 
	 (chL) ;_Изменяем яркость
	 
	 (setq RGB (apply 'HSL2RGB (list H S L)))
	 (vla-setRGB TrueColor (nth 0 RGB) (nth 1 RGB) (nth 2 RGB))
	 (vla-put-TrueColor obj TrueColor)
       )
     )
   ) ;_ end of vl-catch-all-apply
  )			       
(foreach item *kpblc-layer-list-hide* (setq obj (nth 0 item))
 ;;блокируем слои
(vla-put-lock obj :vlax-true)) ;_ end of foreach
) ;_ end of progn 
 ) ;_ end of if 
(progn (princ "\nВосстанавливаю состояние слоев...")
(foreach item *kpblc-layer-list-hide* 
     (vl-catch-all-apply (function (lambda ( / obj xx)
     (setq TrueColor (vla-get-TrueColor (setq obj (nth 0 item))))
     (setq xx (nth 1 item))
     (if (listp xx)(progn
       (vla-setRGB TrueColor (nth 0 xx) (nth 1 xx) (nth 2 xx))
       (vla-put-TrueColor obj TrueColor))
       (vla-put-color obj xx))
 ;;Разблокируем слои
    (vla-put-lock obj :vlax-false)))))
(foreach item *kpblc-obj-list-hide* 
     (vl-catch-all-apply (function (lambda ( / obj xx)
     (setq TrueColor (vla-get-TrueColor (setq obj (nth 0 item))))
     (setq xx (nth 1 item))
     (if (listp xx)(progn
       (vla-setRGB TrueColor (nth 0 xx) (nth 1 xx) (nth 2 xx))
       (vla-put-TrueColor obj TrueColor))
       (vla-put-color obj xx))))))
(setq *kpblc-obj-list-hide* nil)
 (foreach item *kpblc-layer-list-hide*
      (setq obj (nth 0 item))
     (if (setq xx (nth 2 item))(vla-put-Lock obj xx)))
   (princ " ok")(setq *kpblc-layer-list-hide* nil) 
  ) ;_ end of progn 
 ) ;_ end of if 
(vla-endundomark adoc)(princ))
(princ "\nНаберите в командной строке CHLA")

Последний раз редактировалось VVA, 19.09.2015 в 21:00.
VVA вне форума  
 
Непрочитано 19.12.2006, 21:10
#35
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 692


Спасибо, а то не кисло загружал систему на геоподоснове, а программа действительно шикарная )
gest вне форума  
 
Автор темы   Непрочитано 19.12.2006, 21:47
#36
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Наблюдается пока некоторая неравномерность посветления цветов...все равно классно! Еще раз благодарю!
Аshаs-ка вне форума  
 
Непрочитано 20.12.2006, 09:57
#37
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Гест. Оптимизировал после того как попробывал на реальных чертежах (геоподоснова).
VVA вне форума  
 
Непрочитано 20.12.2006, 20:30
#38
luser


 
Регистрация: 20.04.2006
Сообщений: 67


VVA
Спасибо за интересное решение, программа замечательная.
Разведка доложила, что у Вас день рождения поздравляю!
Успехов во всем :!:
luser вне форума  
 
Автор темы   Непрочитано 20.12.2006, 22:58
#39
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


VVA Присоединяюсь!
:wink: А в 2002 не пашет.. он труколоров не знает.. :wink: :wink:
Аshаs-ка вне форума  
 
Непрочитано 21.12.2006, 11:16
#40
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Аshаs-ка
>luser
Спасибо. Хотя надо признать для варианта черным по белому не очень. Мне не нравиться как они "бледнеют", а мыслей никаких
VVA вне форума  
 
Автор темы   Непрочитано 21.12.2006, 13:30
#41
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Я с коэффициентами поиграл, вроде ничего... Я на белом фоне работаю. Вообще можно и попроще было сделать - силком все в бледно серый загонять, и не париться. Но это не очень гуд. С цветом круче получилось.
(if (zerop mc)
(defun chL ( )
(if (< L 0.2)(progn ;:_Яркость меньше 20 Смещаем оттенок на 45 градусов
(setq H (+ H 0.125))(if (> H 1)(setq H (1- H))))) (setq L (* 0.4 L))) ;_Для черного фона
(defun chL ( )(setq L (+ 0.25 L))
(if (> L 1)(progn
(setq H (+ H 0.125))(if (> H 1)(setq H (1- H)))
(setq L 0.8))));_Для остальных
Вместо морды - 0,8.
Аshаs-ка вне форума  
 
Непрочитано 21.12.2006, 14:41
#42
Андрей Т.

проектирование
 
Регистрация: 29.09.2005
г. Москва
Сообщений: 343


Извините, а чем Вас всех не устраивала работа с стандартными командами управляющими Группами Слоев. Там при определенной довольно элементарной настройке не активная группа бледнеет, кроме того можно запретить изменения примитивов в неактивной группе слоев и многое другое. Да и сам чертеж получается гораздо лучше структурирован.
Андрей Т. вне форума  
 
Автор темы   Непрочитано 21.12.2006, 15:59
#43
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


Андрей! с этого места поподробнее, пожалуйста.
Аshаs-ка вне форума  
 
Непрочитано 22.12.2006, 02:38
#44
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Цитата:
при определенной довольно элементарной настройке не активная группа бледнеет
ниасилил, как сделать?
Dym вне форума  
 
Непрочитано 22.12.2006, 09:46
#45
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Андрей Т Не пропадай, тоже час ковырялся в фильтрах и [sm2100]
VVA вне форума  
 
Непрочитано 22.12.2006, 10:24
#46
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Граждане не поддавайтесь на провокацию. Если вы о такой возможности не знали, то всего вероятней ее вовсе нет (всеж-таки не первый год замужем :). А Андрей, наверное, не совсем понял о чем речь или у него какой-то невиданный Autocad :)
AY вне форума  
 
Непрочитано 22.12.2006, 10:24
#47
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 692


Вчера вечером тоже попробовал, такое осуществить, результат нулевой.
gest вне форума  
 
Автор темы   Непрочитано 09.09.2007, 09:52
#48
Аshаs-ка

проектировсчик
 
Регистрация: 06.01.2006
Москва
Сообщений: 1,986


В 2008 афтакаде все так, как мы тут расписали, и работает. КТО ИДЕЮ СПЕР?! Но с одной кнопочкой все равно у нас лучше!!!
Аshаs-ка вне форума  
 
Непрочитано 17.08.2008, 04:09
#49
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


У меня вот ошибку выдает
Код:
[Выделить все]
Команда: CHLA

Восстанавливаю состояние слоев...; ошибка: неверный тип аргумента: lentityp nil
Что не так? (##30,34)
skkkk вне форума  
 
Непрочитано 18.08.2008, 13:21
#50
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Что то не въезжаю, чем не устраивает LAYLOCKFADECTL;>50; ?
Я давно сделал несколько кнопок (40%; 50%; 60%) и очень даже не плохо.
Jonas вне форума  
 
Непрочитано 18.08.2008, 14:39
#51
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Цитата:
Что то не въезжаю, чем не устраивает LAYLOCKFADECTL;>50; ?
Я давно сделал несколько кнопок (40%; 50%; 60%) и очень даже не плохо.
насколько давно?
Dym вне форума  
 
Непрочитано 19.08.2008, 04:32
#52
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от mitjaj Посмотреть сообщение
насколько давно?
Как только поставил А2008.
Jonas вне форума  
 
Непрочитано 19.08.2008, 04:41
#53
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Подскажите пожалуйста, как сделать, чтобы из 30-ти имеющихся слоев 5 сделать ярко-черными, а остальные затенить так, чтоб они были еле видны и при этом выводились на печать в ч/б, т.е. без использования цветного картриджа. Назначал остальным слоям разные оттенки серого - без цветного картриджа не печатаются вообще. Может, настройки печати не те?
skkkk вне форума  
 
Непрочитано 19.08.2008, 08:13
#54
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Таблицу печати правь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.08.2008, 09:46
#55
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


может я чегото недопонял но у меня акад2008 и там в экспресе при блокировании слоя он притушивается
Сержик вне форума  
 
Непрочитано 19.08.2008, 09:52
#56
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Сержик, визуальное отображение и вывод на печать немного разные вещи...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.08.2008, 09:45
#57
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


ну если выводить на печать тогда только через стили печати в менеджере слоев там при определенной настройке можно задавать процент отображения цвета линий находящихся в слое. так черный с 10% при распечатке становиться бледно серый, красный бледно розовый и т.д и т.п и др.
Сержик вне форума  
 
Непрочитано 20.08.2008, 10:26
#58
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


#54 не прочитал?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.08.2008, 16:18
#59
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Спасибо, kpblc, Сержик. Начал разбираться со стилями печати. Но пришел только к тому, что в Редакторе таблиц стилей печати смог назначить различную интенсивность разным цветам (правил стиль monochrome). А вот как назначить ее разным слоям - не понял. Это возможно вообще?? Так и не смог добиться, чтобы стала активной колонка Стили таблиц в Диспетчере свойств слоев
skkkk вне форума  
 
Непрочитано 20.08.2008, 16:29
#60
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


для этого чертеж у тебя должен быть acad.stb а не acad.ctb
Сержик вне форума  
 
Непрочитано 20.08.2008, 16:32
#61
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


skkkk, если по цветам не устраивает, то используй _convertpstyles, и дальше работай со стилезависимой печатью, как посоветовал Сержик
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 20.08.2008 в 16:51. Причина: Неверно впечатал имя команды
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.08.2008, 16:33
#62
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


как перевести из ctb в stb не знаю, если у меня появляется такой файл я просто создаю новый чертеж и копирую туда полностью чертеж
Сержик вне форума  
 
Непрочитано 20.08.2008, 16:40
#63
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


работать с цветами хорошо когда их 2-3, а если их 20-30 и в одном слое несколько, прийдется несколько раз распечатыавть пока не получиш удобоворимый результат.
Сержик вне форума  
 
Непрочитано 20.08.2008, 16:51
#64
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Цитата:
Сообщение от Сержик Посмотреть сообщение
как перевести из ctb в stb не знаю, если у меня появляется такой файл я просто создаю новый чертеж и копирую туда полностью чертеж
См.#61
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.08.2008, 16:57
#65
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Спасибо, впитал
skkkk вне форума  
 
Непрочитано 20.08.2008, 17:21
#66
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Только одно неясно: как быстро всем слоям присвоить стиль печати Стиль 1 (мой)? По умолчанию у всех Нормальный, но он не редактируется. Нормальный должен остаться лишь у нескольких, а у меня их под сотню, каждый раз все перебивать в диспетчере слоев долговато будет. Как вариант _matchprop с выбором параметра стиля печати, но так только объекты наделяются таким свойством, а не слой....Думается, должен быть продуманный вариант
skkkk вне форума  
 
Непрочитано 20.08.2008, 22:55
#67
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


skkkk, образчик покажи
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.08.2008, 01:44
#68
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Неа...Ты что, коллекционируешь их??
Слои с подчеркиванием "_" в имени надо оставить ярко-черными на печати, а остальные - сделать тусклыми, серыми, но чтоб только черный картридж в ход шел. Файлик пришлось подурезать, некоторые особо весомые слои убрать, покрасить в черный(белый?) цвет, потому как даже один лист не влезал сюда. Правда перестарался слегка
Вложения
Тип файла: dwg
DWG 2007
Образчик)).dwg (831.4 Кб, 562 просмотров)
skkkk вне форума  
 
Непрочитано 21.08.2008, 09:35
#69
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


ну вот что у меня получилось. сделал я это так.
открыл твой чертеж
создал новый лист (acad -Named Plot Styles)
скопировал твой чертеж в новый
в диспечере слоев выбрал все слои неподчеркнутые
нажал на стиль печати (Normal)
выбрал активная таблица стилей печати acad.stb
появился список стилей печати (уменя настроены с процентным отображением цвета с шагом в 10% - название стиля - %)
выбрал 30
сохранил

в моделе можно просматривать при предварительном просмотре при печали, в листе можно сразу установить отображение стиля и будет показывать что напечатается.
Вложения
Тип файла: dwg
DWG 2004
Образчик)).dwg (466.6 Кб, 557 просмотров)
Сержик вне форума  
 
Непрочитано 22.08.2008, 02:15
#70
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


skkkk, моя "коллекция" образцов чистится с интервалом в неделю, не реже
Файл получился здоровый, поэтому залил его на depositfiles: http://depositfiles.com/files/7391683
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.08.2008, 04:59
#71
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Сержик, огромное спасибо за участие. Помимо всего прочего, словами:
Цитата:
Сообщение от Сержик Посмотреть сообщение
в диспечере слоев выбрал все слои неподчеркнутые
нажал на стиль печати (Normal)
- ты уже ответил на мой вопрос. Оказывается, их просто можно выбрать и применить к ним стиль.
kpblc, тебе тоже огромное, только файл скачать не удалось. " Вы исчерпали лимит подключений! Попробуйте повторить через 52 минут(ы)" - говорит. И почему он стал аж 20 метров весить?... так интересно....
А вот еще вопросик возник: я ношу эти вещи печатать в типографию на большом формате. Теперь мне надо будет с собой таскать и этот файл *.stb? И чтоб они его себе вставили куда следует??
skkkk вне форума  
 
Непрочитано 23.08.2008, 22:51
#72
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


20 метров - это видео. Здешний download не хотелось засорять (а если в форум - представь себе, 4 поста сплошных архивов). Не, если сильно интересно, попробую сделать.
Цитата:
А вот еще вопросик возник: я ношу эти вещи печатать в типографию на большом формате. Теперь мне надо будет с собой таскать и этот файл *.stb? И чтоб они его себе вставили куда следует?
Неужели в типографии есть AutoCAD? Что-то с трудом верится...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.08.2008, 00:58
#73
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Представь себе, есть у них АвтоКАД. Правда типографией я ее достаточно образно назвал. Это копировальный центр на Маяковке, они копируют любые форматы и делают цифровую печать. Печатать свой формат я учился вместе с ними, у них на рабочем месте, весь день убил, даже пару клиентов обслужил, пока мой "мастер" делал вещи - с плоттером воевал. Научились - теперь я все время у них печатаю, причем отсылаю по электронке, а потом просто приезжаю и забираю в 10 вечера без пробок. Хорошая фирма. А видео-файл можно выложить на slil.ru. Только он там хранится месяц после последней закачки.
skkkk вне форума  
 
Непрочитано 24.08.2008, 01:00
#74
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,258
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
А видео-файл можно выложить на slil.ru. Только он там хранится месяц после последней закачки.
Только не Слил, он половину Рунета считает заграницей и качать не дает.
Солидворкер вне форума  
 
Непрочитано 24.08.2008, 01:41
#75
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


И закачивать тоже Мне по крайней мере не удалось.
Вариант на рапиде: http://rapidshare.com/files/139597526/ctb2stb.avi
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.08.2008, 03:09
#76
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Странно... Я много СЛИЛом пользовался, никогда проблем не возникало. Давно, правда. Прошу прощения, что не проверил сам - сейчас отключили Интернет, - с телефона приходится...
А залил.ру как, интересно, себя ведет?
Страшно любопытно, что же там за видео. Надеюсь, утром глобалку включат.
skkkk вне форума  
 
Непрочитано 24.08.2008, 05:35
#77
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


То обсуждаем, как сделать, чтобы электронные чертежи даже заказчик не мог использовать, то раздаем куда угодно...

Надо просто у себя печатать в PDF на любой формат в любом виде и только PDF отдавать для печати на бумагу.
ShaggyDoc вне форума  
 
Непрочитано 27.08.2008, 10:49
#78
Сержик

инженер
 
Регистрация: 04.10.2005
Одесса
Сообщений: 119


нет. у тебя все тот же файл *.dwg но чтобы при распечатке были видны твои настройки файла надо чтобы на компьютере тыли такиеже. т.е. другими словами ты на компе с которого печатаеш настраиваееш стили печати как на своем.
Сержик вне форума  
 
Непрочитано 27.08.2008, 10:58
#79
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


_etransmit, что ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.08.2008, 14:17
#80
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Привет вам.
ShaggyDog, меня вопрос этот не беспокоит. Да и потом, кому там нужен мой чертеж? Они ведь не отнесут его моему заказчику раньше меня. А отношения со мной портить им незачем... Такую кормушку терять
Сержик, так я и имею в виду, что вместе с файлом dwg мне придется брать с собой файл stb...
Алексей, не знал о такой команде (_etransmit), полезная вещь, спасибо. Только вот если я с таким сформированным комплектом приду на другой комп, надо ли файлы (шрифты, стили печати и др.) расставлять по местам или КАД сам разберется?
А с рапиды тоже не получилось скачать
Цитата:
Your IP address 77.108.96.50 is already downloading a file. Please wait until the download is completed.
Хотя файл никакой не загружается и не загружался....А так хочется

Последний раз редактировалось skkkk, 27.08.2008 в 14:29.
skkkk вне форума  
 
Непрочитано 27.08.2008, 14:30
#81
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


skkkk, AutoCAD сам разберется.
С депозита так и не скачивается? Вечером постучись мне в аську, попробуем что-нибудь придумать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Управление видимостью слоев