| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
12.03.2017, 12:19 | #1 | |
Как автоматически преобразовать однострочный атрибут в многострочный?
Регистрация: 20.02.2015
Сообщений: 79
|
||
Просмотров: 10269
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Заходишь в редактор блоков, выделяешь атрибут и в свойствах устанавливаешь многострочный - да.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
1000 точек - это 1000 вхождений или 1000 разных блоков? Если первое - то меняешь один раз, потом _.attsync
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Геодезист Регистрация: 23.05.2012
Ухта
Сообщений: 1,374
|
Цитата:
----- добавлено через 37 сек. ----- Я так понял из написанного.
__________________
Как-то так. |
|||
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Да, спасибо, этого не знал. Но к сожалению, величина этой границы закреплена жестко и не регулируется. А по-умолчанию, она слишком велика и перекрывает соседние объекты. В чистом AutoCAD это реализовано, на мой взгляд, более гибко.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
kp+, думаешь, сработает? Со вхождением-то атрибута?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Ух ты! Но не дай боже запустить после этого _.attsync
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Грешным делом попробовал. Ничего страшного не произошло. Акад не упал. Всего лишь атрибут утратил многострочность, при этом сохранив содержимое (только без кодов форматирования Мтекста).
|
|||
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
kp+, спасибо огромное, работает! Обновление атрибутов совсем не обязательно. Это вполне можно опустить. Но если возможно, еще одна просьба, для логического завершения этой опции. Как-бы сделать лиспом скрытие заднего плана в связке с преобразованием в многострочник? Такое возможно? Пусть и без _attsync. Спасибо!
|
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Оно категорически противопоказано
Цитата:
вот моя деревянная телега с его реактивным двигателем адаптированная версия: Код:
|
|||
|
||||
Сделайте под однострочным атрибутом (под чем нужно) в блоке маскировку-wipeout, и два состояния видимости - с маской и без. И включайте-отключайте маскировку на здоровье и Ваше, и атрибутов, и блоков, сколько и когда нужно. Никакой _attsync при этом не помешает.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
|
|||
|
||||
Цитата:
Объясните, почему зло?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Цитата:
Как правило, "слет" обуславливается строго определенными действиями пользователя. Частично я разбирал это здесь: http://autolisp.ru/2013/09/18/draworder-inside-blocks/
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,046
|
Цитата:
|
|||
|
||||
Редко и у нас маски закрывали нужные элементы. Почти всегда лечилось аудитом.
Да, правильность порядка отображения заложена в порядке создания маски и ее текста или пр. Сначала маску, а потом соотв. атрибут или пр. Соглашусь с еще неназванным недостатком, что у маскировки нет такого замечательного свойства, как у скрытия заднего плана многострочных текстов-атрибутов - размер маскировки для текстов разной длины нуждается в редактировании вручную. Есть другой вариант: сделать в блоке два атрибута - многострочный со скрытым задним планом и однострочный, но с пр. одинаковыми свойствами, и состояния видимости - с "маской", т.е. многострочный и без, однострочный.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Я бы все же пошел по пути АлексЮстасу - сделал бы динамический блок с двумя видимостями и менял бы видимость программно у выбранных (множественно - хоть рамкой, хоть кликом) блоков. Все коды для этого на форуме уже есть. |
|||
|
||||
Во-первых, я попробовал сделать блоки с многострочными атрибутами. Где атрибут считывает Z своего блока - как раз для геодезических отметок. Раньше многострочные никогда не делал. То ли я их не умею готовить, то ли с многострочными что-то по жизни не так, но в таких атрибутах поля у меня при вставке блоков работают через раз. Сделал - работают. Закрыл файл, открыл - вставляются, но вместо значения атрибута пишет название поля "InsertionPoint". И в 2012-м и в 2016-м. С однострочными такого за многие годы не наблюдалось.
Во-вторых, беру частично свои слова обратно, т.к. можно проще - достаточно одного атрибута со скрытым фоном, и не нужно никакого определения видимости. Зачем вообще два варианта? Если скрывать нечего, то и скрытие фона не мешает. Если есть что скрывать - он и скроет. А по поводу адских маскировок=вайпаутов - если блок правильно сделан, то ничто никуда не налезает и не съезжает. Мистики с маскировками в блоках не наблюдал, хотя таких блоков понаделал предостаточно - сотни, и пользовались ими интенсивно десятки людей лет десять.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Не понятно в чем проблема преобразования однострочного атрибута в многострочный - в свойствах жи просто поставить Да напротив "Несколько строк"
Или я просто тему не понял А вот наобот бы - многострочный в однострочный без создания нового атрибута преобразовать видимо нельзя |
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
В коде из #14 :vlax-true заменить на :vlax-false, и все получится. Только что проверил. С теми же оговорками:
- работает только для отдельно взятых экземпляров атрибутов; - после _attsync "многострочность" атрибутов возвращается к исходному состоянию. Без _attsync чуда не будет, как ни проводи эту операцию - хоть через редактор блоков, хоть через диспетчер атрибутов (_battman). А насколько разрушительны иногда результаты _attsync - думаю, Вы не хуже меня знаете. Последний раз редактировалось kp+, 20.06.2019 в 16:14. |
|||
|
||||
Регистрация: 12.03.2013
Сообщений: 650
|
Супер то что надо. Спасибо!
----- добавлено через ~10 мин. ----- Цитата:
Т.е. все как надо. Спасибо. Давно искал такую команду |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Коллеги, поднимаю тему. Появилась потребность преобразования всех атрибутов всех выделенных блоков в "многострочный" с "маской".
С помощью (setq att (car (nentsel "выберите отребут"))) мы получаем уникальное имя _конкретного_ атрибута в одном указанном блоке. Получается, надо перебрать все атрибуты в наборе, полученным (ssget), получить их имя (экземпляр) аналогично nentsel и уже сделать преобразование? |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Цитата:
допилил ту программу с учетом возможности указания блоков, в которых нужно сделать "многострочность" и "маску" Код:
Программа вроде работает, но почему-то сбрасывает положение атрибута, который подвергся преобразованию в mtext + mask |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Спасибо. Все тоже самое, только в 3 раза короче! )
Но до сих пор не могу понять: разные блоки преобразуются по-разному. Где-то есть смещение атрибута после преобразования, а где-то атрибут остается на своем месте. Причем это не зависит установлено ли в свойствах атрибутах "Установленный" (во вложении файл с примером) Последний раз редактировалось Sege, 03.10.2022 в 08:48. |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
|
|||
|
||||
именно это выравнивание и влияет ятд. в автокаде смена выравнивания для текста происходит не относительно точки вставки текста, как казалось бы должно было быть по логике, а относительно точки выравнивания. таким образом, чтобы текст (атрибут) остался на своём месте нужно взять две эти точки у текстового атрибута и переназначить их у атрибута, изменённого в мтекст.
----- добавлено через ~35 мин. ----- Sege, в #41 добавил спонтанное учитывание выравнивания атрибута
__________________
K Lisp Последний раз редактировалось koMon, 30.09.2022 в 17:13. |
||||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Цитата:
|
|||
|
||||
Регистрация: 19.07.2005
Россия
Сообщений: 3,225
|
Я т.д. что,
1. наличие/отсутствие маскировки можно реализовать дин. блоком 2. +lisp с выбором динблоков по именам, атрибутам (юзал такой давно...) PS т.е. вместо блока динблок Последний раз редактировалось VitalyAF, 04.10.2022 в 16:35. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Обнулить на 1 - это как? И одно дело - коэффициент сжатия, другое - ширина текста. Ну и прочих условий там тоже хватает.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Цитата:
- блок с атрибутом в виде мтекста, - мультитекст в мультилинии, где в поле имеется ссылка на данный блок (конкретный атрибут блока) В итоге данные в поле выдираются с "внутренним форматирование", которые прописаны в атрибуте блоке Примерно так: \W0.9000;текст атрибута Поэтому хочется очистить от внутреннего форматирования (во внутреннем форматировании стоит коэф.сжатия-растяжения меньше 1) Последний раз редактировалось Sege, 12.10.2022 в 14:06. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
У тебя в голове полнейшая каша. Настройки описания многострочного атрибута - это одно, а внесенные во вхождение атрибута данные - совсем другое.
Ищи на форуме код по очистке форматирования (ключевое слово stripmtext)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 108
|
Цитата:
А вот указанный код - "обнуляет" атрибут блока (делает его шириной=1 и в итоге ранее описанные манипуляции выдирают данные без форматирования): Код:
Примерно так получилось, вроде работает: Код:
Последний раз редактировалось Sege, 12.10.2022 в 15:06. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись значения в многострочный атрибут (LISP) | tujn08 | LISP | 3 | 09.06.2015 09:02 |
Многострочный атрибут блока | Нитонисе | AutoCAD | 20 | 05.12.2014 15:02 |
C# AutoCAD. Как сделать многострочный атрибут? | Sfinks7s1 | Программирование | 5 | 17.09.2013 14:22 |
Почему многострочный атрибут блока становиться в одну строку? | Alexg-12 | AutoCAD | 13 | 10.06.2013 15:58 |
Можно ли создать многострочный атрибут блока, который будет динамически растягиваться? ACAD 2007. | Vavapet | Динамические блоки | 2 | 01.03.2011 15:00 |