dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно прочитать цвет слоя, если он задан в формате RGB?

Как программно прочитать цвет слоя, если он задан в формате RGB?

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 28.02.2017, 03:39 #1
Как программно прочитать цвет слоя, если он задан в формате RGB?
480725
 
Москва
Регистрация: 06.10.2007
Сообщений: 129

480725 вне форума Вставить имя

Имеется чертеж, в котором много примитивов ( ~ 7000, но не все) имеют цвет ПОСЛОЮ и расположены на слоях с цветом 0,0,0
При работе на черном фоне эти примитивы не видны.
Функции TBLSEARCH и TBLNEXT показывают, что слои с цветом 0,0,0 имеют цвет 18 (он как раз на черном фоне виден).
М.б. через объектную модель можно правильно прочитать истинный цвет слоя, подскажите как!

Еще проблема. Если RGB цвет назначен примитиву, то он не читается через ENTGET, тоже получается число вместо списка.

Последний раз редактировалось 480725, 28.02.2017 в 04:32.
Просмотров: 738
 
Непрочитано 28.02.2017, 08:37
#2
Кулик Алексей aka kpblc
Moderator

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


RGB цвет хранится не в 62 группе, а в 420. Функции преобразования соответствующего значения в список red-green-blue на форуме были (см.поиск: https://dwg.ru/cse?q=rgb%20%D0%B2%20aci)
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 28.02.2017, 10:22
#3
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 129


По примитивам - спасибо, по слоям где искать цвет непонятно:
Для слоя с цветом 0,0,0
Команда: (tblsearch "LAYER""00") даёт
((0 . "LAYER") (2 . "00") (70 . 0) (62 . 18) (6 . "Continuous"))
Т.е. код 420 отсутствует и отличить RGB 0,0,0 от ACI 18 не получается.
Поиск, на который дана ссылка, не соответствует основному вопросу поднятому в теме КАК ПРОГРАММНО УЗНАТЬ RGB ЦВЕТ НАЗНАЧЕННЫЙ СЛОЮ.
Основные статьи из него я уже смотрел - в моем ключе там проблему не рассматривают, если где-то внутри программ не акцентируя читают цвет слоя в RGB, то найти это мне не удалось, поэтому вопрос и поставлен конкретно именно в таком ключе. Кстати, цвету RGB 0,0,0 нет аналога в кодировке Автокада, т.к. он черный не только на белом но и на черном фоне, т.е. надо ловить именно RGB кодировку.
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.02.2017, 10:27
#4
Кулик Алексей aka kpblc
Moderator

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


(entget (tblobjname "layer" "00") '("*"))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 28.02.2017, 10:41
#5
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 129


Огромное спасибо! Не могу удержаться и не процитировать моего любимого детского поэта:

Вот теперь тебя люблю я
Вот теперь тебя хвалю я
Наконец-то ты чистюля
Мойдодыру угодил!
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.02.2017, 12:03
#6
VVA

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


Еще ссылка на функции конвертирования цвета Colour Conversion Functions

Цитата:
Сообщение от 480725 Посмотреть сообщение
М.б. через объектную модель можно правильно прочитать истинный цвет слоя, подскажите как!
Примерно так
Код:
[Выделить все]
(setq lay (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) "0"))
(setq TrueColor (vla-get-TrueColor lay))
(setq ColorMethod (vla-get-ColorMethod TrueColor))
(cond
  ((eq ColorMethod acColorMethodByACI)
   (alert (strcat "Использован ACI метод\nЦвет = " (itoa(vla-get-ColorIndex TrueColor))))
   )
  ((eq ColorMethod acColorMethodByRGB)
   (alert (strcat "Использован RGB метод\nЦвет (R G B) = " (itoa(vla-get-Red TrueColor)) "," (itoa(vla-get-Green TrueColor)) "," (itoa(vla-get-Blue TrueColor))))
   )
  (t nil)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 28.02.2017, 14:39
#7
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 129


Спасибо. Я прямо сейчас пытался подобрать алгоритм вычисления после невнятного описания у Полещука "в подлиннике Автокад 2008", теперь буду уметь!
480725 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 09.03.2017, 12:01
#8
power85


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Еще ссылка на функции конвертирования цвета Colour Conversion Functions
Спасибо за ссылку. Давно это искал.
power85 вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно прочитать цвет слоя, если он задан в формате RGB?

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой ГОСТ на песчаную подушку для балластного слоя железных дорог? ГиТ14 Автомобильные и железные дороги, мосты, тоннели и организация движения 11 26.02.2015 16:02
Ремонт бетонных конструкций и восстановление защитного слоя Glorius Железобетонные конструкции 63 18.01.2012 10:40
Как программно изменить цвет заднего фона (вкладка Модель)? mmmx Программирование 8 27.04.2011 20:45
Можно ли использовать буроопускные сваи при проектировании по принципу II, если свая опирается на скальный грунт, а деятельный слой - пучинистый vlasctelin Основания и фундаменты 6 04.03.2011 04:01
VBA. Размораживание слоя, построение объекта в нем, замораживание слоя = ошибка Alexey_02 Программирование 3 06.03.2009 22:33

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы