Не подскажете, как мне обращаться к текущему ( который выделен пользователем в данный момент) объекту на языке VBA ?1. Одновременно может быть выбрано ни одного объекта, один объект, несколько объектов. Причем они могут быть разных типов.
Ну мне нужно обрабатывать только объекты типа : AcadMText, AcadText, AcadTable.Ну значит только их будешь выбирать из .PickfirstSelectionSet
Вообще можно ли работать с символами объектов ?С символами объектов ты работать можешь. Но вот менять им цвет...
Ну, в MText я меняю цвет таким образом :Никак. И таким образом ты меняешь цвет всему MText;Код - Visual Basic [Выбрать]А как мне обратиться по индексу символа к MText ?
objMText.TrueColor.ColorIndex = acRed
А могу ли я запомнить текущий код (цвет) объекта ? Чтобы парсить строку и то, что мне нужно оставлять как было, а по требуемому индексу в строке уже менять цветНу да. Так же как ты менял цвет всему MText, ты можешь получить этот цвет: objMText.TrueColor.ColorIndex
Всё понял, кроме крайнего сообщения. Почему могу запутаться ?Ну допустим у тебя содержимое MText такое:
{\fISOCPEUR|b0|i0|c0|p34;\H0.95833x;\C256;\U+00D8\A1;\H1.04348x;\C7;80}
Т.е. уже есть заданные цвета для каких-то кусков текста. Что ты с таким будешь делать?
Вот только что сидел и об этом думал, теперь понял о чём Вы :) В AutoCAD без нюансов не бывает... :'(Мне вообще непонятна постановка задачи. Я правильно понимаю, что в текстах не должно быть кириллицы и нужно как-то её обозначить, чтобы можно было заменить (например, "е"-русскую на "e"-английскую)? Но просто изменение цвета одной букве вряд ли как-то поможет её найти. Может проще составить таблицу замены и менять русские буквы на соответствующие английские?
Я так понял, что это полная глупость, но ничего иного в голову не лезетПолная.
Не подскажете в чём ошибка ?Наверное в незнании VBA:
Да, с VBA имею дело второй раз, но это у меня уже "котелок" немного "подкипел" , такое непростительно ) Спасибо !Я так понял, что это полная глупость, но ничего иного в голову не лезетПолная.Не подскажете в чём ошибка ?Наверное в незнании VBA:Код - Visual Basic [Выбрать]
objMText.TextString = подстрока1 & "\O" & подстрока2 & "\o" & подстрока3
У меня вместо добавления подчёркиваний текст заменяется "абракадаброй".Какой абракадаброй? И вообще покажи код, которым ты добавляешь подчеркивание.
Видимо, нужно сохранять св-ва исходного MText'a и создавать новый MText с исходными св-вами и добавлением подчёркиваний ? С удалением исходного, само собойНет. Так делать не следует.
Теперь текст вообще удаляется после обработки, когда я там подредактировал некоторые опечатки. Вот строка :Это не абракадабра. Это текст с кодами форматирования. Выше я давал ссылку на документ, описывающий эти коды.
\pxl2,t10;{\Feskd_u|c204;\W0.85;\C256;Примечания\W1;:\P\pi-1,tz;1\W0.85;Перечень изделий и материалов дан для одной позиции прибора.\P2 Перечень учесть: вариант 1 - 2 раза.\P3 Для изоляции с электрообогревом применить холстопрошивное полотно и лист аллюминиевый (заказано в СО2/2400-R-NG-676-IN-MTO-0002-00).}
Та нет. Это не то, что я называл абракадброй. У меня уже абракадабра не выводится, теперь текст вообще удаляется. Это я Вам исходный текст скинулТеперь текст вообще удаляется после обработки, когда я там подредактировал некоторые опечатки. Вот строка :Это не абракадабра. Это текст с кодами форматирования. Выше я давал ссылку на документ, описывающий эти коды.
\pxl2,t10;{\Feskd_u|c204;\W0.85;\C256;Примечания\W1;:\P\pi-1,tz;1\W0.85;Перечень изделий и материалов дан для одной позиции прибора.\P2 Перечень учесть: вариант 1 - 2 раза.\P3 Для изоляции с электрообогревом применить холстопрошивное полотно и лист аллюминиевый (заказано в СО2/2400-R-NG-676-IN-MTO-0002-00).}
sangvinik128,Хорошо, спасибо.
Логика работы правильная. А вот с индексами что-то не то. Разбирайся.
Логика работы правильная. А вот с индексами что-то не то. Разбирайся.Вот не работает хоть убейся, не пойму. Уже трассировку "ручками" раз 10 сделал. Почему-то съедаются буквы некоторые и из-за этого лажа всему приходит.Вот строка :
Судя по всему ты в левой части строки отбираешь на 1 символ меньше чем надо. Попробуй вместо:Нет, я уже пробовал это. Т.е. эта проблема может быть вызвана исключительно ошибкой в индексах ? Нет никаких "автокадовских чуд" , одно из которых могло бы на этой повлиять ?Код - Visual Basic [Выбрать]вставить:
Left(objMText.TextString, msInt(i) - 1)Код - Visual Basic [Выбрать]
Left(objMText.TextString, msInt(i))
Т.е. эта проблема может быть вызвана исключительно ошибкой в индексах ? Нет никаких "автокадовских чуд" , одно из которых могло бы на этой повлиять ?Именно.
Все коды чётко проставились, но надчёркиваний не появилось над надписью в блоке, которую мой код поймал как объект типа MTextТ.е. эта проблема может быть вызвана исключительно ошибкой в индексах ? Нет никаких "автокадовских чуд" , одно из которых могло бы на этой повлиять ?Именно.
Все коды чётко проставились, но надчёркиваний не появилось над надписью в блоке, которую мой код поймал как объект типа MTextТак блок или MText??? Если это MText в блоке, то нужно регенерировать чертеж.
Вообще-то блок, вот только мой код строку в блоке поймал как объект типа MText. И тут возникает вопрос, что за дела ? :-[Все коды чётко проставились, но надчёркиваний не появилось над надписью в блоке, которую мой код поймал как объект типа MTextТак блок или MText???
Вообще-то блок, вот только мой код строку в блоке поймал как объект типа MText. И тут возникает вопрос, что за дела ?Внутри блока (AcadBlock) может быть MText. Ты бы код приложил и чертеж, на котором экспериментируешь. А то это гадание на кофейной гуще.
не меняется текст строкойТекст или цвет?
Извиняюсь, цвет. "очепятка"не меняется текст строкойТекст или цвет?
А так:Извиняюсь, цвет. "очепятка"не меняется текст строкойТекст или цвет?
Так сработало, спасибо !А так:Извиняюсь, цвет. "очепятка"не меняется текст строкойТекст или цвет?Код - Visual Basic [Выбрать]?
objText.Color = acRed