VBA. Как прочитать параметры цвета (RGB) у атрибута динамического блока

Автор Тема: VBA. Как прочитать параметры цвета (RGB) у атрибута динамического блока  (Прочитано 3114 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Евгений89Автор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Добрый день.
Есть код VBA, который присваивает атрибуту цвет RGB.

Код - Visual Basic [Выбрать]
  1. Dim color As AcadAcCmColor
  2. Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.19")
  3.  
  4. If UserForm4.ComboBox13 = "1" Then
  5. color.SetRGB 15, 166, 7
  6. varAttributes(1).TrueColor = color
  7.  
  8. ElseIf UserForm4.ComboBox13 = "2" Then
  9. color.SetRGB 197, 188, 17
  10. varAttributes(1).TrueColor = color

Можно ли сделать обратное, узнать параметры цвета RGB атрибута?
ColorIndex = varAttributes(1).color показывает только номер цвета.

Я хочу сделать что-то типа такого:

Код - Visual Basic [Выбрать]
  1. If Color = RGB(197, 188, 17) Then
  2. UserForm4.ComboBox13 = "2"

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно ли сделать обратное, узнать параметры цвета RGB атрибута?
ColorIndex = varAttributes(1).color показывает только номер цвета.
В VBA насколько я помню такой возможности для получения соответствия RGB<->ACI нет. Только в .NET и ObjectARX. Можно воспользоваться этой таблицей: http://gohtx.com/acadcolors.php
Но не уверен, что она на 100% актуальна в последних версиях AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Евгений89 04-06-2019, 17:38:29

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Хотя можно попробовать вот такой вариант:
Код - Visual Basic [Выбрать]
  1. Dim col As New AcadAcCmColor
  2. Call col.SetRGB(197, 188, 17)
  3. MsgBox "RGB:" & col.Red & "," & col.Green & "," & col.Blue & " = " & vbCrLf & _
  4. "ACAD Color Index=" & col.ColorIndex & vbCrLf
Ну и отсюда: https://blog.jtbworld.com/2005/11/code-snippet-to-convert-rgb-to-aci.html
Код - Visual Basic [Выбрать]
  1. Function RGBtoACI(r As Long, g As Long, b As Long)
  2.   Dim color As New AcadAcCmColor
  3.   Call color.SetRGB(r, g, b)
  4.   RGBtoACI = color.ColorIndex
  5. End Function
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Евгений89Автор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Евгений89,
Если что-то подошло - отмечай решение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение