Обращение к текущему объекту

Автор Тема: Обращение к текущему объекту  (Прочитано 14970 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Здравствуйте ! Хочу написать макрос, который будет менять цвет всех символов кириллицы, в выбранном пользователем объекте пр-ва модели. Не подскажете, как мне обращаться к текущему ( который выделен пользователем в данный момент) объекту на языке VBA ?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #1 : 02-12-2019, 16:22:46 »
Не подскажете, как мне обращаться к текущему ( который выделен пользователем в данный момент) объекту на языке VBA ?
1. Одновременно может быть выбрано ни одного объекта, один объект, несколько объектов. Причем они могут быть разных типов.
2. Набор предварительного выбора: AcadDocument.PickfirstSelectionSet
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #2 : 03-12-2019, 07:48:11 »
Ну мне нужно обрабатывать только объекты типа : AcadMText, AcadText, AcadTable.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #3 : 03-12-2019, 10:17:13 »
Ну мне нужно обрабатывать только объекты типа : AcadMText, AcadText, AcadTable.
Ну значит только их будешь выбирать из .PickfirstSelectionSet
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #4 : 03-12-2019, 10:43:00 »
Ну да, хорошо, спасибо

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #5 : 03-12-2019, 10:58:48 »
Как я понял, посимвольно цвет поменять не получится у текстового объекта ? Хотелось бы визуально выделить искомые символы каким-то образом, ничего не посоветуете ?

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #6 : 03-12-2019, 12:05:45 »
Вообще можно ли работать с символами объектов ? Все св-ва и методы ( в случае AcadTable) возвращают строку, строку можно преобразовать в массив символов, но в этом случае мы уже не работаем с объектом AutoCAD

Отмечено как Решение sangvinik128 11-12-2019, 11:38:51

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #7 : 03-12-2019, 12:12:20 »
Вообще можно ли работать с символами объектов ?
С символами объектов ты работать можешь. Но вот менять им цвет...
1. Для AcadText можно менять цвет только всей строке.
2. Для AcadMText можно поменять цвет отдельному символу используя коды \CNNN;, где NNN - номер цвета от 1 до 255
Описание управляющих полей: https://adndevblog.typepad.com/autocad/2017/09/dissecting-mtext-format-codes.html
3. Для ячейки AcadTable аналогично как и для AcadMText
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #8 : 03-12-2019, 12:27:09 »
Ну, в MText я меняю цвет таким образом :
Код - F# [Выбрать]
  1. objMText.TrueColor.ColorIndex = acRed
А как мне обратиться по индексу символа к MText ?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #9 : 03-12-2019, 12:35:24 »
Ну, в MText я меняю цвет таким образом :
Код - Visual Basic [Выбрать]
  1. objMText.TrueColor.ColorIndex = acRed
А как мне обратиться по индексу символа к MText ?
Никак. И таким образом ты меняешь цвет всему MText;
Допустим у тебя есть MText с содержимым "123456789" и тебе нужно, чтобы цвет у цифры 5 был красный, а у остальных символов белый, то нужно изменить строку на:
"\C7;1234\C1;5\C7;6789"  (7 - это белый цвет, 1 - красный цвет)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #10 : 03-12-2019, 12:44:35 »
А могу ли я запомнить текущий код (цвет) объекта ? Чтобы парсить строку и то, что мне нужно оставлять как было, а по требуемому индексу в строке уже менять цвет

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #11 : 03-12-2019, 12:47:08 »
А могу ли я запомнить текущий код (цвет) объекта ? Чтобы парсить строку и то, что мне нужно оставлять как было, а по требуемому индексу в строке уже менять цвет
Ну да. Так же как ты менял цвет всему MText, ты можешь получить этот цвет: objMText.TrueColor.ColorIndex
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #12 : 03-12-2019, 12:51:08 »
Впрочем если у тебя уже будут коды цвета внутри содержимого MText, то ты легко можешь запутаться.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн sangvinik128Автор темы

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Обращение к текущему объекту
« Ответ #13 : 03-12-2019, 12:53:10 »
Всё понял, кроме крайнего сообщения. Почему могу запутаться ?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обращение к текущему объекту
« Ответ #14 : 03-12-2019, 13:00:57 »
Всё понял, кроме крайнего сообщения. Почему могу запутаться ?
Ну допустим у тебя содержимое MText такое:
{\fISOCPEUR|b0|i0|c0|p34;\H0.95833x;\C256;\U+00D8\A1;\H1.04348x;\C7;80}Т.е. уже есть заданные цвета для каких-то кусков текста. Что ты с таким будешь делать?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение