нужен ли здесь att.UpdateMTextAttribute для Mtext?Не помешает, если у тебя многострочный атрибут.
поможет ли att.Oblique = 0 в случае с многострочным аттрибутом(color работает)? или нужно лезть в contentsНужно лезть. Внутри многострочного атрибута могут быть как бы разные Oblique.
А цветов не может быть в атрибуте разных?В многострочных? Могут быть разные цвета. Код \CN; (где N-это число - номер цвета):
Да. Внутри блока есть и аттрибуты и еще блоки в которых есть аттрибуты.Ну тогда у тебя совсем нелогичный код. Нужно делать рекурсивную функцию. И еще ты отрабатываешь только те динамические блоки, у которых не менялись динамические параметры. Только у них bl.DynamicBlockTableRecord == bl.BlockTableRecord
Это я знаю. Я про то что не смог создать блок с таким извращенным аттрибутом чтоб проверить код.Ну на это мне нечего сказать... Настрой в качестве редактора мультитекста NOTEPAD.EXE и вставь этот код.
Нужно делать рекурсивную функцию.до рекурсии еще дойдет. пока я просто попытался добраться до атрибутов блока в блоке.
if (bl.IsDynamicBlock) btid = bl.DynamicBlockTableRecord;
я же здесь в траанзакции. метод извне может работать с запущенной транзакцией?Можешь использовать TopTransaction или передавать Transaction как параметр.
а что по поводу странного поведения при ctrl+Z?Сделаешь нормальный тестовый проект для проверки - тогда и будет о чем говорить. Пока ничего определённого сказать не могу. Тут или ошибка у тебя в программе или баг AutoCAD. Кстати, а в какой версии ты проверяешь? И установлены ли все обновления?
ее же надо передать по ссылке будет? а ее нельзя передать по ссылке.А зачем её передавать по ссылке?
эта строчка разве не спасает ситуацию?Нет конечно.
Цитата: simson43 от 23-09-2018, 17:33:39
if (bl.IsDynamicBlock) btid = bl.DynamicBlockTableRecord;
Цитата: simson43 от 23-09-2018, 19:08:14и то верно!
ее же надо передать по ссылке будет? а ее нельзя передать по ссылке.
А зачем её передавать по ссылке?
Кстати, а в какой версии ты проверяешь?2108
Цитата: simson43 от 23-09-2018, 18:29:27
эта строчка разве не спасает ситуацию?
Цитата: simson43 от 23-09-2018, 17:33:39
if (bl.IsDynamicBlock) btid = bl.DynamicBlockTableRecord;
Нет конечно.
2108Это "версия" автомобиля Жигули, а не AutoCAD :-)
кажется у вас и стащил эти строчкиЭто уж точно не у меня.
http://adn-cis.org/forum/index.php?topic=1105.0
определенно у вас) сообщение ваше ведь.Ты про это: http://adn-cis.org/forum/index.php?topic=1105.msg6224#msg6224 ???
у девушки про динамические ни слова вовсе.
как в таком случае будет верно выглядеть?
проверил на быстренько собраном простейшем динамическом блоке, поменял параметры подвигал подергал, запустил код- сработало...Ты в один блок вложил модифицированный динамический блок? Тогда у него изменилось имя на "*UNNN" и ты его не обрабатывал. Так что ничего сработать не могло на том коде, который ты показывал выше.
вы как всегда правы(Смотри здесь код: http://adn-cis.org/kak-najti-vse-vstavki-dinamicheskogo-bloka.html
нужно еще getanonymous смотреть?Угу. Возможно и еще сложнее. Но я не увидел постановки задачи. Поэтому сложно что-то советовать.
да она проста... перебрать все блоки ( и блоки в блоках).. все вставки все все все и залезть в атрибут каждогоТогда всё намного проще.
разве перебирая все оъекты в BlockTableRecord пространства я переберу не все объекты данного пространства?
где можно это почитать? где это хорошо описано?