Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как автоматически преобразовать однострочный атрибут в многострочный?

Как автоматически преобразовать однострочный атрибут в многострочный?

Ответ
Поиск в этой теме
Непрочитано 12.03.2017, 12:19 #1
Как автоматически преобразовать однострочный атрибут в многострочный?
config
 
Регистрация: 20.02.2015
Сообщений: 79

Всем здравствуйте! Подскажите пожалуйста, существует ли в природе штатная команда или *.lisp автоматического преобразования однострочного атрибута в многострочный. В идеале, в сочетании, осуществить бы, у преобразованного атрибута, скрытие заднего плана. Это просто необходимо при использовании в геодезии блоков в виде точек. Спасибо!
Просмотров: 3970
 
Непрочитано 12.03.2017, 12:42
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,580


Заходишь в редактор блоков, выделяешь атрибут и в свойствах устанавливаешь многострочный - да.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.03.2017, 13:34
#3
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Заходишь в редактор блоков, выделяешь атрибут и в свойствах устанавливаешь многострочный - да.
Да, спасибо, этим методом я и пользуюсь. Немного "разверну свое повествование". Допустим, имеется топоплан с 1000 точками, представленными в виде блоков с атрибутами. Некоторые точки, а точнее атрибуты (предположим, несколько десятков), перекрывают нужные для отображения объекты. В таком случае, я по ходу редактирования, копирую эти блоки в новый чертеж, переименовываю, преобразовываю и вставляю обратно с исходными координатами. Так, вот, чтобы несколько уменьшить эти "телодвижения" и "прыгания" с чертежа в чертеж, и хотелось бы несколько усовершенствовать эту методу. Как я себе представляю, с помощью лиспа , например, Подготовка подосновы, переименовываю нужный блок, а вот дальше - загвоздка. Вот на этом этапе и хотелось бы, чтобы в этом же чертеже, преобразовать однострочные атрибуты в многострочные и выполнить скрытие заднего плана. Прощупал ToolPac, Express Tools, искал на форуме. Увы...
config вне форума  
 
Непрочитано 12.03.2017, 14:48
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,580


1000 точек - это 1000 вхождений или 1000 разных блоков? Если первое - то меняешь один раз, потом _.attsync
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.03.2017, 15:20
#5
sertor

Геодезист
 
Регистрация: 23.05.2012
Ухта
Сообщений: 1,340


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1000 точек - это 1000 вхождений или 1000 разных блоков? Если первое - то меняешь один раз, потом _.attsync
Блоки-то одноименные, а вот скрытие заднего плана нужно делать для части из них.

----- добавлено через 37 сек. -----
Я так понял из написанного.
__________________
Как-то так.
sertor вне форума  
 
Автор темы   Непрочитано 12.03.2017, 15:27
#6
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от sertor Посмотреть сообщение
Блоки-то одноименные, а вот скрытие заднего плана нужно делать для части из них.
Да, с переименованием.
config вне форума  
 
Непрочитано 12.03.2017, 19:20
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


В Civil 3D это делается гораздо проще...
trir вне форума  
 
Автор темы   Непрочитано 12.03.2017, 19:39
#8
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от trir Посмотреть сообщение
В Civil 3D это делается гораздо проще...
Ума не приложу как? Вы имеете ввиду Map 3D? Понимаю, что не по теме, но все же, если можно, объясните чуть подробнее. Или укажите источник, где можно почитать.
config вне форума  
 
Непрочитано 12.03.2017, 19:41
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


В Civil 3D для этого есть cogo-точки, их можно разделять на группы и назначать им стили для отображения
trir вне форума  
 
Автор темы   Непрочитано 12.03.2017, 19:52
#10
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от trir Посмотреть сообщение
В Civil 3D для этого есть cogo-точки, их можно разделять на группы и назначать им стили для отображения
Спасибо, с этим я курсе. Но главная моя задача - скрытие заднего плана в атрибутах блока.
config вне форума  
 
Непрочитано 12.03.2017, 19:55
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


у cogo-точки кажется можно настроить скрытие заднего плана для текста в метке
trir вне форума  
 
Автор темы   Непрочитано 12.03.2017, 20:10
#12
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от trir Посмотреть сообщение
у cogo-точки кажется можно настроить скрытие заднего плана для текста в метке
Да, спасибо, этого не знал. Но к сожалению, величина этой границы закреплена жестко и не регулируется. А по-умолчанию, она слишком велика и перекрывает соседние объекты. В чистом AutoCAD это реализовано, на мой взгляд, более гибко.
config вне форума  
 
Непрочитано 13.03.2017, 08:10
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


Цитата:
величина этой границы закреплена жестко и не регулируется
чушь, "Промежуток" можно установить в 0 и тогда граница идёт уже по буквам
trir вне форума  
 
Непрочитано 13.03.2017, 14:32
#14
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


Я так понял, надо "придать многострочность" отдельно взятым атрибутам отдельно взятых блоков?
Тогда (для единичных атрибутов):
Код:
[Выделить все]
 (defun c:sa2ma ()
       (vla-put-mtextattribute (vlax-ename->vla-object (car (nentsel "выберите отребут"))) :vlax-true)
)
__________________
Да здравствует фикус! (С)

Последний раз редактировалось kp+, 13.03.2017 в 14:37.
kp+ вне форума  
 
Непрочитано 13.03.2017, 14:42
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,580


kp+, думаешь, сработает? Со вхождением-то атрибута?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.03.2017, 15:01
#16
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
kp+, думаешь, сработает? Со вхождением-то атрибута?
Проверял, получилось
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Непрочитано 13.03.2017, 15:08
#17
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


Цитата:
Проверял, получилось
а что будет, если обновить блоки через _battman?
trir вне форума  
 
Непрочитано 13.03.2017, 15:08
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,580


Ух ты! Но не дай боже запустить после этого _.attsync
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.03.2017, 15:21
#19
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


Цитата:
Сообщение от trir Посмотреть сообщение
а что будет, если обновить блоки через _battman?
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Но не дай боже запустить после этого _.attsync
Грешным делом попробовал. Ничего страшного не произошло. Акад не упал. Всего лишь атрибут утратил многострочность, при этом сохранив содержимое (только без кодов форматирования Мтекста).
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Непрочитано 13.03.2017, 15:28
#20
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


в принципе программно можно на вхождения вешать какие угодно атрибуты, даже на блоки в принципе без атрибутов, но это до первого _.attsync
trir вне форума  
 
Непрочитано 13.03.2017, 15:33
#21
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


А топикстартер _attsync и не собирался применять, я так понял
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Автор темы   Непрочитано 13.03.2017, 18:23
#22
config


 
Регистрация: 20.02.2015
Сообщений: 79


kp+, спасибо огромное, работает! Обновление атрибутов совсем не обязательно. Это вполне можно опустить. Но если возможно, еще одна просьба, для логического завершения этой опции. Как-бы сделать лиспом скрытие заднего плана в связке с преобразованием в многострочник? Такое возможно? Пусть и без _attsync. Спасибо!
config вне форума  
 
Непрочитано 13.03.2017, 18:47
2 | #23
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


Цитата:
Сообщение от config Посмотреть сообщение
Обновление атрибутов совсем не обязательно
Оно категорически противопоказано
Цитата:
Сообщение от config Посмотреть сообщение
Как-бы сделать лиспом скрытие заднего плана в связке с преобразованием в многострочник?
Lee Mac уже все сделал: http://www.theswamp.org/index.php?topic=43827.0
вот моя деревянная телега с его реактивным двигателем адаптированная версия:
Код:
[Выделить все]
  (defun c:sa2ma (/ ATT EL)
   (setq att (car (nentsel "выберите отребут")))
   (vla-put-mtextattribute (vlax-ename->vla-object att) :vlax-true)
				; set background mask by Lee Mac http://www.theswamp.org/index.php?topic=43827.0
				(setq el (entget att))
				(if (member '(101 . "Embedded Object") el)
					(entmod (append
						; el without mask related pairs
						(vl-remove-if
							(function (lambda ( pair )
								(member (car pair) '(45 63 90 421 431 441))
							))
							el
						)
						; new mask related pairs
						
							(list
								(cons 90 3) ; background fill setting (transparent)
								(cons 63 256) ; background color
								(cons 45 1) ; fill box scale
								(cons 441 0) ; transparency of background fill
							)
							(list
								(cons 90 2) ; background fill setting (off)
							)
						
					))
				);eo IF
)
Цитата:
Сообщение от config Посмотреть сообщение
Пусть и без _attsync
Об _attsync после применения вышеприведенного кода забыть под страхом потери результатов работы!
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Автор темы   Непрочитано 13.03.2017, 19:04
#24
config


 
Регистрация: 20.02.2015
Сообщений: 79


kp+, супер! Преклоняюсь. Спасибо Вам огромное! То, что "доктор прописал"!
config вне форума  
 
Непрочитано 13.03.2017, 21:36
#25
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,706


Сделайте под однострочным атрибутом (под чем нужно) в блоке маскировку-wipeout, и два состояния видимости - с маской и без. И включайте-отключайте маскировку на здоровье и Ваше, и атрибутов, и блоков, сколько и когда нужно. Никакой _attsync при этом не помешает.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 13.03.2017, 21:43
#26
config


 
Регистрация: 20.02.2015
Сообщений: 79


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Сделайте под однострочным атрибутом (под чем нужно) в блоке маскировку-wipeout
Нет, маскировка, на мой взгляд - зло. Я думаю не стоит объяснять почему. Столько "копий на этом сломано". А в данном случае - скрытие заднего плана. Это совсем другое дело.
config вне форума  
 
Непрочитано 13.03.2017, 22:01
#27
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,706


Цитата:
Сообщение от config Посмотреть сообщение
Нет, маскировка, на мой взгляд - зло. Я думаю не стоит объяснять почему. Столько "копий на этом сломано". А в данном случае - скрытие заднего плана. Это совсем другое дело.
Мы этим "злом" пользовались, пользуемся и пользоваться будем как раз для скрытия заднего плана. Исключительно для добра.
Объясните, почему зло?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.03.2017, 22:23
#28
trir


 
Регистрация: 18.12.2010
Сообщений: 3,361


В AtoCAD'е периодически слетает порядок прорисовки...
trir вне форума  
 
Непрочитано 13.03.2017, 23:12
1 | #29
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,580


Цитата:
Сообщение от config Посмотреть сообщение
Нет, маскировка, на мой взгляд - зло. Я думаю не стоит объяснять почему.
Насколько я понимаю, скрытие заднего фона обращается к тому же самому функционалу.
Цитата:
Сообщение от trir Посмотреть сообщение
В AtoCAD'е периодически слетает порядок прорисовки...
Как правило, "слет" обуславливается строго определенными действиями пользователя. Частично я разбирал это здесь: http://autolisp.ru/2013/09/18/draworder-inside-blocks/
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.03.2017, 00:33
#30
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,596


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как правило, "слет" обуславливается строго определенными действиями пользователя. Частично я разбирал это здесь: http://autolisp.ru/2013/09/18/draworder-inside-blocks/
получается, что порядок отрисовки каким то образом завязан на хэндл объектов? Ведь при копировании и последующей вставки примитивы получают следующие свободные хэндлы...
Сергей812 вне форума  
 
Непрочитано 14.03.2017, 02:11
#31
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,706


Редко и у нас маски закрывали нужные элементы. Почти всегда лечилось аудитом.
Да, правильность порядка отображения заложена в порядке создания маски и ее текста или пр. Сначала маску, а потом соотв. атрибут или пр.

Соглашусь с еще неназванным недостатком, что у маскировки нет такого замечательного свойства, как у скрытия заднего плана многострочных текстов-атрибутов - размер маскировки для текстов разной длины нуждается в редактировании вручную.

Есть другой вариант: сделать в блоке два атрибута - многострочный со скрытым задним планом и однострочный, но с пр. одинаковыми свойствами, и состояния видимости - с "маской", т.е. многострочный и без, однострочный.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 15.03.2017, 23:37
#32
skkkk

AutoCAD_2008->2011
 
Регистрация: 20.03.2008
Московская область
Сообщений: 2,253


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Насколько я понимаю, скрытие заднего фона обращается к тому же самому функционалу.
Возможно и так, но я ни разу не видел, чтобы скрытие заднего плана выскакивало на передний, а с маскировками - сколько угодно. Лечится, правда, чаще всего аудитом с последующей регенерацией, но это лишние действия.
Я бы все же пошел по пути АлексЮстасу - сделал бы динамический блок с двумя видимостями и менял бы видимость программно у выбранных (множественно - хоть рамкой, хоть кликом) блоков. Все коды для этого на форуме уже есть.
skkkk на форуме  
 
Непрочитано 16.03.2017, 00:04
#33
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,596


сталкивался еще с тем, что маскировка в некоторых блоках внезапно отваливалась от операции динамического поворота - т.е. все остальные примитивы вращаются, а маскировка стоит на месте.
Сергей812 вне форума  
 
Непрочитано 16.03.2017, 02:41
1 | #34
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,706


Во-первых, я попробовал сделать блоки с многострочными атрибутами. Где атрибут считывает Z своего блока - как раз для геодезических отметок. Раньше многострочные никогда не делал. То ли я их не умею готовить, то ли с многострочными что-то по жизни не так, но в таких атрибутах поля у меня при вставке блоков работают через раз. Сделал - работают. Закрыл файл, открыл - вставляются, но вместо значения атрибута пишет название поля "InsertionPoint". И в 2012-м и в 2016-м. С однострочными такого за многие годы не наблюдалось.
Во-вторых, беру частично свои слова обратно, т.к. можно проще - достаточно одного атрибута со скрытым фоном, и не нужно никакого определения видимости. Зачем вообще два варианта? Если скрывать нечего, то и скрытие фона не мешает. Если есть что скрывать - он и скроет.

А по поводу адских маскировок=вайпаутов - если блок правильно сделан, то ничто никуда не налезает и не съезжает. Мистики с маскировками в блоках не наблюдал, хотя таких блоков понаделал предостаточно - сотни, и пользовались ими интенсивно десятки людей лет десять.
Вложения
Тип файла: dwg
DWG 2004
отметка_многострочный_атрибут_2.dwg (137.8 Кб, 17 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 20.06.2019, 15:31
#35
allar8


 
Регистрация: 12.03.2013
Сообщений: 516


Не понятно в чем проблема преобразования однострочного атрибута в многострочный - в свойствах жи просто поставить Да напротив "Несколько строк"
Или я просто тему не понял
А вот наобот бы - многострочный в однострочный без создания нового атрибута преобразовать видимо нельзя
allar8 вне форума  
 
Непрочитано 20.06.2019, 16:03
1 | #36
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,938


Цитата:
Сообщение от allar8 Посмотреть сообщение
А вот наобот бы - многострочный в однострочный
В коде из #14 :vlax-true заменить на :vlax-false, и все получится. Только что проверил. С теми же оговорками:
- работает только для отдельно взятых экземпляров атрибутов;
- после _attsync "многострочность" атрибутов возвращается к исходному состоянию.

Цитата:
Сообщение от allar8 Посмотреть сообщение
Не понятно в чем проблема преобразования однострочного атрибута в многострочный - в свойствах жи просто поставить Да напротив "Несколько строк"
Без _attsync чуда не будет, как ни проводи эту операцию - хоть через редактор блоков, хоть через диспетчер атрибутов (_battman). А насколько разрушительны иногда результаты _attsync - думаю, Вы не хуже меня знаете.
__________________
Да здравствует фикус! (С)

Последний раз редактировалось kp+, 20.06.2019 в 16:14.
kp+ вне форума  
 
Непрочитано 21.06.2019, 20:39
#37
allar8


 
Регистрация: 12.03.2013
Сообщений: 516


Цитата:
Сообщение от kp+ Посмотреть сообщение
В коде из #14 :vlax-true заменить на :vlax-false, и все получится.
Супер то что надо. Спасибо!

----- добавлено через ~10 мин. -----
Цитата:
Сообщение от kp+ Посмотреть сообщение
после _attsync "многострочность" атрибутов возвращается к исходному состоянию.
Если зайти внутрь блока и выполнить sa2ma то после выхода из блока и выполнения _attsync атрибут превращается в однострочный
Т.е. все как надо. Спасибо. Давно искал такую команду
allar8 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как автоматически преобразовать однострочный атрибут в многострочный?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись значения в многострочный атрибут (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