beliit.com
Форумы Проектант
ПОИСК ПО ФОРУМАМ
перед созданием новых тем используйте поиск,
возможно ответ на Ваш вопрос уже есть на форумах

Расширенный поиск
 
  • Всего пользователей - 22021
  • Всего тем - 31048
  • Всего сообщений - 288172
Страниц: [1]   Вниз
ВЕРСИЯ ДЛЯ ПЕЧАТИ

Команда для инвертирования цвета всех слоев в AUTOCAD

Количество просмотров - 8398
(ссылка на эту тему)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #1 : 28 Ноября 2014 года, 15:47
(ссылка на это сообщение)

Разные исполнители используют разный фон: у кого-то темный у кого-то светлый. Собственно вопрос: можно ли инвертировать цвета всех слоев в чертеже оптом?

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #2 : 01 Декабря 2014 года, 11:36
(ссылка на это сообщение)

Инвертировать нельзя. Насколько знаю просто нет такой команды, да и каким образом инвертировать? Белый/черный - это понятно, а как быть с красным и синим? Я уже молчу про остальные цвета и оттенки.
Можно написать на ВБА программульку, которая например добавляет к номеру цвета определенную цифру, но что из этого получится - не знаю.

У нас технологи рисуют как хотят - там все вперемешку и не по слоям. Я написал программку, которая раскидывает все по 3 нашим слоям и делает цвет по слою. Что нарисовано не стандартными цветами (зеленый, красный, белый/черный), то переносится на слой 0 и не меняет цвет.
Далее сделал свои слои, написал программку, которая выдает окно и спрашивает с чем я буду работать - с моими слоями или с чужими. В зависимости от ответа либо делает все чужое серым, а мое цветным, либо чужое цветным, а мое просто белым/черным.

Делаем форму с кнопками и далее при нажатии что-то типа такого:
Цитата

Private Sub CommandButton1_Click()
 Dim layerObj As AcadLayer                          
 Dim LayCol As Integer
   
 If OpBut1.Value = True Then
      ' для КИП (все ТХ серое)
   For Each layerObj In ThisDrawing.Layers
      If layerObj.Name = "КИП" Then layerObj.color = 51
      If layerObj.Name = "Defpoints" Then layerObj.color = 2
      If layerObj.Name = "Узлы" Then layerObj.color = 161
   Next
  End If

  If OpBut2.Value = True Then
      ' для ТХ (кип одноцветный)
      LayCol = 4
     
   For Each layerObj In ThisDrawing.Layers
      If layerObj.Name = "КИП" Then layerObj.color = LayCol
      If layerObj.Name = "Defpoints" Then layerObj.color = 2
      If layerObj.Name = "Узлы" Then layerObj.color = LayCol
   Next
  End If
 
Unload Me
End Sub

Проектировщик КИП (Самара, Россия)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #3 : 01 Декабря 2014 года, 12:39
(ссылка на это сообщение)

Цитата
а как быть с красным и синим?

вот как раз у красного инвертированный голубой (cyan) )) в растровых редакторах с инверсией цвета проблем нет. поэтому не вижу особых причин почему бы не сделать тоже в автокаде
Цитата
там все вперемешку и не по слоям

вот это полбеды. изменить цвет объектам на одном слое проще-простого. а вот когда слоев несколько десятков...

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #4 : 02 Декабря 2014 года, 11:25
(ссылка на это сообщение)

вот как раз у красного инвертированный голубой (cyan) )) в растровых редакторах с инверсией цвета проблем нет. поэтому не вижу особых причин почему бы не сделать тоже в автокаде

ОК. 255 цветов, будем для всех искать противоположный? )))


вот это полбеды. изменить цвет объектам на одном слое проще-простого. а вот когда слоев несколько десятков...

Так а я о чем! Поэтому и написал сначала программу, которая переносит все на определенны слои. Например у нас цветозависимые стили печати : зеленый - толстый, красный - средний, белый - тонкий. Создаем три слоя с названиями по цвету и перекидываем все туда и выставляем цвет " по слою", а уже затем меняем цвета слоям на нужные нам.

Для любого количества слоев программа замены цвета не сложна, намного сложнее придумать алгоритм поиска нужного цвета на основании текущего. Да еще и проследить что бы у всех примитивов цвета были по слою.
Либо разделить на две программы - одна меняет цвета слоям, вторая меняет цвета примитивам, игнорируя примитивы с цветом "по слою"

Проектировщик КИП (Самара, Россия)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #5 : 02 Декабря 2014 года, 11:33
(ссылка на это сообщение)

Цитата
ОК. 255 цветов, будем для всех искать противоположный? )))

да-да-да, будем! и лучше чтобы это делала программа автоматически, а не мы вручную! и лучше чтобы по нажатию на кнопочку в автокаде...

Если серьезно, то на три слоя всё раскидать не совсем удобно. Есть ведь проектировщики которые очень правильно делают, располагая оборудование на своих слоях, строительные конструкции на своих, топосъемку на своем и т.д. И это правильно и рушить не хочется, тем более что им еще с этими чертежами работать.

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #6 : 03 Декабря 2014 года, 06:40
(ссылка на это сообщение)


Цитата
ОК. 255 цветов, будем для всех искать противоположный? )))

да-да-да, будем! и лучше чтобы это делала программа автоматически, а не мы вручную! и лучше чтобы по нажатию на кнопочку в автокаде...

Если серьезно, то на три слоя всё раскидать не совсем удобно. Есть ведь проектировщики которые очень правильно делают, располагая оборудование на своих слоях, строительные конструкции на своих, топосъемку на своем и т.д. И это правильно и рушить не хочется, тем более что им еще с этими чертежами работать.

Вот из-за такой постановки задачи программеры и вешаются! ))) "Сделай кнопку что бы нажал и все было!! - А что было-то?  - ВСЕ!"
Прежде чем сделать кнопку, надо понять чего именно надо. Применительно к нашему случаю - какой алгоритм изменения цвета? Например цвет 173, какова формула преобразования? Зная это можно легко кнопку забубенить )))
Именно поэтому перед тем как сказать про мои три слоя я отметил что наши люди не умеют пользоваться слоями и пихают на них все подряд. Например есть слой трубы, а они на них пихают емкости. Зато трубы у них на слое 0 и для каждой трубы свой цвет, а не "по слою".
Если у вас нормально работают со слоями, значит возвращаемся к первому вопросу - какой алгоритм преобразования номера цвета? Узнаем формулу - изменить цвет всех слоев не проблема.
Попробуйте вот это сделать в ВБА:
Цитата
Option Explicit

Private Sub inv()
  Dim layerObj As AcadLayer
   
    For Each layerObj In ThisDrawing.Layers
       layerObj.color = 255 - layerObj.color
  Next
End Sub

Одно нажатие и цвета изменились, второе - вернулись назад. При условии конечно, что цвет всех примитивов установлен "по слою"

Проектировщик КИП (Самара, Россия)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #7 : 03 Декабря 2014 года, 08:22
(ссылка на это сообщение)

Цитата
Например цвет 173, какова формула преобразования?

берем систему цветности RGB. От 0,0,0 - белый до 255,255,255 - черный. Чтобы инвертировать надо просто вычесть текущее значение из максимального, которое равно 255. Цвет 173 это 82,82,165, соответственно инвертированный 173,173,90. И если темнофиолетовый №173 хорошо видно на светлом фоне, то получившийся типа светлого защитного хорошо видно на темном.

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #8 : 03 Декабря 2014 года, 14:58
(ссылка на это сообщение)

Ну тогда вот так
Цитата
Private Sub inv2()
 Dim layerObj As AcadLayer
 Dim color As AcadAcCmColor
 Dim b, r, g As Long
 Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
   
 For Each layerObj In ThisDrawing.Layers
   r = 255 - layerObj.TrueColor.Red
   g = 255 - layerObj.TrueColor.Green
   b = 255 - layerObj.TrueColor.Blue
   Call color.SetRGB(r, g, b)
   layerObj.TrueColor = color
 Next
End Sub

Создаете модуль, добавляете туда это, делаете кнопку и на нее вешаете этот макрос
Кстати, тут возникает другая проблема. Если красный станет голубым, то голубой станет красным! То есть если чертеж выполнен различными цветами - что-то стант виднее, а что-то наоборот!

А еще нашел вот что -http://knowledge.autodesk.com/support/alias-products/troubleshooting/caas/CloudHelp/cloudhelp/2015/ENU/Alias-Sketching/files/GUID-6DDD0F31-03A0-425D-AF97-3A962D65F924-htm.html?v=2015  Только не понял к чему это... То ли все кнопку сделали в новой версии, то ли это другой продукт...

Проектировщик КИП (Самара, Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #9 : 05 Декабря 2014 года, 08:57
(ссылка на это сообщение)

и тишина... Получилось, нет?

Проектировщик КИП (Самара, Россия)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #10 : 05 Декабря 2014 года, 09:49
(ссылка на это сообщение)

Нет пока)) Создаете модуль и т.д. прока что темный лес. с этим нужно разбираться

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #11 : 08 Декабря 2014 года, 11:03
(ссылка на это сообщение)

1. в автокаде жмете Alt+F11, открывается редактор ВБА
2. Слева разворачиваете свой открытый файл (плюсик жмете), правой кнопкой на MODULES , далее Insert-> Module
3. В нижней части в строке Name : Module1 прописываем имя модуля, например col ( или color), справа в пустом окне вставляем мой листинг программы
4. При открытом НУЖНОМ файле, в редакторе ВБА жмете зеленый треугольник на панели (как Play в плеерах), потом переключаетесь в Автокад - цвета должны измениться.

Если все устраивает
создаете кнопку, в строке команды прописываем ^C^C-vbarun Col.inv2
где Col - имя модуля, inv2 - имя "программы" в модуле (см. мой листинг)
Ну а картинки сами проставите какие-нибудь.

Проектировщик КИП (Самара, Россия)
Сергей Л. П.
***
Куратор подраздела "Технический надзор"


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #12 : 08 Декабря 2014 года, 19:09
(ссылка на это сообщение)

Пока не получилось ((
Что-то не так делаю
debug.bmp
 
* debug.bmp
(7800.05 Кб, 1920x1040)  [скачать]  [загрузок: 3597]

Проектировщик ( ? , Россия)
Антониони
****
Активный участник форумов


Сейчас отсутствует Сейчас отсутствует
 
Сообщение #13 : 09 Декабря 2014 года, 06:45
(ссылка на это сообщение)

Эм... а зачем картинку в bmp??? 7.6МБ!!! В jpg и видно было бы и размер приемлимым был бы...
В строке
"Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")"
17 зависит от версии автокада. Попробуйте поменять цифру. Если у вас позднее 2007, то увеличивайте (18-20), если ранее - уменьшайте (14-16)

Проектировщик КИП (Самара, Россия)
Страниц: [1]   Вверх
ВЕРСИЯ ДЛЯ ПЕЧАТИ



Сейчас Вы - Гость на форумах «Проектант». Гости не могут писать сообщения и создавать новые темы.
Преодолейте несложную формальность - зарегистрируйтесь! И у Вас появится много больше возможностей на форумах «Проектант».


Здравствуйте, Гость
Сейчас Вы присутствуете на форумах в статусе Гостя.
Для начала общения надо зарегистрироваться или пройти авторизацию:
Вам не пришло письмо с кодом активации?
 
 
  (забыли пароль?)  
   

если Вы не зарегистрированы, то
пройдите регистрацию
Последние сообщения на форуме «Программное обеспечение Autodesk»
автор: Маркос
24 Апреля 2024 года, 10:00

автор: Mav
24 Апреля 2024 года, 07:29

автор: Андрей11
23 Апреля 2024 года, 20:23

автор: Маркос
16 Апреля 2024 года, 09:38

автор: Trust Me
09 Апреля 2024 года, 21:02

автор: Антониони
19 Марта 2024 года, 07:08

автор: Mclaud 72
09 Марта 2024 года, 00:51

автор: Posetitel
27 Февраля 2024 года, 14:19

автор: Mike_Moke
26 Февраля 2024 года, 15:10

автор: Файруза
26 Февраля 2024 года, 14:12

автор: Val
17 Ноября 2023 года, 07:52

автор: shalva
13 Ноября 2023 года, 17:06

автор: kollega_
29 Сентября 2023 года, 09:05

автор: Антониони
12 Мая 2023 года, 14:01

автор: Настачка
06 Мая 2023 года, 18:27


Сейчас на форуме:
Сейчас на форумах: гостей - 429, пользователей - 10
Имена присутствующих пользователей:
Дмитрий ЕКБ, Mav, Radist, Imp, Walkmax, ВПК, Петр71, Вадик, Олег Зрайченко, AnPo
Контактные данные| Партнёрская программа | Подробная статистика
Настройка форумов © «Проектант» | Конфиденциальность данных
Powered by SMF 1.1.23 | SMF © 2017, Simple Machines