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

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

Перевод цвета из одного номера другой

Ответ
Поиск в этой теме
Непрочитано 17.06.2008, 22:43 #1
Перевод цвета из одного номера другой
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Есть DXF код 62 и 420 а мне надо из 420-го или 62-го (если нет 420-го) сделать RGB типа 107,146,194. И обратно, из такого кода сделать номер для 420-го или 62 кода.
(62 . 153)
(420 . 7049922)
Как Автокад это делает? Может функция есть ккая-нибудь?
В списке цветов RGB фигурирует, а в DXF все совсем не так. А мне надо выбрать существющие цвета и сделать выбор по цвету.

HELP!!
Просмотров: 3532
 
Непрочитано 17.06.2008, 23:05
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,906
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(defun C:TEST ()
  (vl-load-com)
(setq TrueColor (vla-get-TrueColor (setq obj(vlax-ename->vla-object (car(entsel))))))
(setq cm (vla-get-ColorMethod  TrueColor)) 
(cond
  ((= cm acColorMethodByRGB) ;_RGB
   (setq R (vla-get-red TrueColor)
	 G (vla-get-Green TrueColor)
	 B (vla-get-Blue TrueColor)
	 )
   (alert (strcat "Модель RGB"
		  "\nR: "
		  (itoa R)
		  "\nG: "
		  (itoa G)
		  "\nB: "
		  (itoa B)
		  )
	  )
   )
  ((= cm   acColorMethodByACI) ;_ACI
   (alert (strcat "Молель ACI\nЦвет: "
		  (itoa (vla-get-Color obj))))
   )
  ((= cm   acColorMethodByLayer) ;_Bylayer
   (alert "ПоСлою")
   )
  ((= cm   acColorMethodByBlock) ;_ByBlock
   (alert "Поблоку")
   )
  (t (alert "Другое"))
  )
)
PS. Управление видимостью слоев- здесь в свое время переводили из RGB в HSL и обратно
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 17.06.2008 в 23:08. Причина: Добавление ссылки
VVA вне форума  
 
Непрочитано 17.06.2008, 23:32
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,906
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Еще одна ф-ция: "Плющилка" цветов RGB. При монохромной печати RBG создают определенные проблемы. Их любят архитекторы, а нам и 256 хватает.
Код:
[Выделить все]
;;;Перевод цветов в ACI
;;; Пример вызова
;;; (ChangeAllObjectColoToACI (vla-get-activedocument (vlax-get-acad-object)))
(defun ChangeAllObjectColoToACI	(Doc /  IsLo )
  (vlax-for Blk	(vla-get-Blocks Doc)
    (setq IsLo (if (= (vla-get-IsLayout Blk) :vlax-true)
		 T
		 nil
	       )
    )
    (if	(= (vla-get-IsXref Blk) :vlax-false)
      (vlax-for	Obj Blk
	(if (vlax-write-enabled-p obj)
	  (vla-put-Color Obj (vla-get-Color Obj))
	)
      )
    )
  )
)
Здесь фишка в том, что если объекту назначен RGB цвет, то конструкция
Код:
[Выделить все]
(vla-put-Color Obj (vla-get-Color Obj))
назначит объету ближайший похожий цвет ACI
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.06.2008, 15:46
#4
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Огромное спасибо!
Supermax вне форума  
 
Автор темы   Непрочитано 18.06.2008, 19:59
#5
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Опять затык. В 420 точечной паре есть код, который меня устраивает полностью, но как мне сделать из кода по 62 паре код по 420-ой?
С RGB все клево - нет слов, но мне этого не достаточно.
Supermax вне форума  
 
Автор темы   Непрочитано 19.06.2008, 14:07
#6
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Все оказалось очень просто. Значения Red Green Blue доступны всегда. Какой бы цвет ни был назначен. Каждое из них имеет значение 0-255
по формуле 256*256*Red+256*Green+Blue получаем нужное значение 420 DXF пары по этому же числу можно и ячейки в Экселе раскрашивать в тот же цвет, что и в автокаде у примитива.
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перевод цвета из одного номера другой

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно ли из одного чертежа в другой переносить группы слоев? stumpel AutoCAD 2 28.02.2008 12:27
Как передать данные (текст) из одного файла в другой HiddenM AutoCAD 6 14.12.2005 19:50
Просьба помочь с нанесением одного чертежа на другой Fleks AutoCAD 6 20.07.2005 19:54
Как обьект переместтить из одного в другой слой? NTU AutoCAD 2 20.02.2005 16:20
Можно ли копировать вьюпорты с одного лэйаута на другой? Torino AutoCAD 3 10.02.2005 15:19