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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как добавить к блоку аттрибут рядом стоящего текста

Как добавить к блоку аттрибут рядом стоящего текста

Ответ
Поиск в этой теме
Непрочитано 14.02.2015, 13:00 #1
Как добавить к блоку аттрибут рядом стоящего текста
sertor
 
Геодезист
 
Ухта
Регистрация: 23.05.2012
Сообщений: 1,374

Доброго времени суток. Уважаемые форумчане! Хотелось бы вернуться к остро стоящему вопросу о возможности присоединения к блоку (точка в топографии), атрибутов номера и высоты из рядом стоящего текста. Может у кого-то есть готовое решение, или может оказать помощь в написании программы. Спасибо!

Вложения
Тип файла: dwg
DWG 2007
образец.dwg (456.1 Кб, 627 просмотров)

__________________
Как-то так.
Просмотров: 5197
 
Непрочитано 14.02.2015, 14:57
#2
Сергей812


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


выбираете текст 1, текст2, блок.. в блок записываете в атрибуты значения двух текстов.. затем удаляете тексты.. все в цикле.. даже с такой примитивной реализацией в несколько раз быстрее.. а чтобы оказали помощь в написании программы - начните ее хотя бы.. благо примеров в инете на том же лиспе до кучи
Сергей812 вне форума  
 
Непрочитано 18.05.2016, 04:56
#3
АлексЮстасу

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


Цитата:
Сообщение от sertor Посмотреть сообщение
о возможности присоединения к блоку (точка в топографии), атрибутов номера и высоты из рядом стоящего текста
Высоты из близлежащих текстов в Z блока можно загрузить с помощью Ztxt.lsp от VVA. Но не в сам атрибут блока. Перенести в атрибут блока Z можно с помощью создания в атрибуте поля, считывающего Z блока. Но это только Z.
Возможно, было бы несложно модифицировать этот Ztxt.lsp, чтобы он мог загружать содержание текстов прямо в атрибуты?
Наверное, главная трудность может быть в том, какие тексты в какие атрибуты загружать. Можно ввести ограничение, что за один запуск загружаться будет содержание только сАмых близко расположенных текстов, т.е. только в один указанный атрибут блоков. Тексты можно предварительно разносить в разные слои или т.п. для их исключения. Но в любом случае в программе нужно предусмотреть выбор атрибута, в который нужно производить загрузку.

Мне кажется, что и какие-то другие программки на эту тему тему были.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 11.05.2023, 13:18
#4
posetitel


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


Подниму тему, но немного в ином ключе.
Возможно ли сделать лисп, который будет помещать в атрибут блока рядом стоящий текст?
Пример во вложении: в нем нужно в атрибут "Nachalo" поместить рядом стоящий текст "Начало для размещения", а в атрибут "Konec" поместить рядом стоящий текст "Конец для размещения", "Посторонний текст" нужно проигнорировать.
Вложения
Тип файла: dwg
DWG 2013
На форум.dwg (39.7 Кб, 22 просмотров)
posetitel вне форума  
 
Непрочитано 11.05.2023, 14:16
#5
kp+

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


Сделать такое "под ключ" - я бы не взялся. Может, гуру форума могли бы... Хотя можно, по крайней мере, попробовать
Но как он будет работать не в тепличных условиях приведенного примера, а на реальном плане, где черт ногу сломит?
Как понимать, что вот этот текст - посторонний, а этот - нет? По слою? Их зачастую не соблюдают. По расстоянию до блока? Тоже не всегда соблюдается. И это при полном сохранении читаемости для инженера.
Только не говорите, что по контексту. Потому что это надо объяснить тупой машине, работающей по программе с жестким набором правил.
Другой вопрос, что этот набор может быть довольно большим...
Слышал, что с подобными задачами справляются нейросети, после соответствующего обучения, но пока не знаю, как их прикрутить к Акаду

Последний раз редактировалось kp+, 11.05.2023 в 14:21.
kp+ вне форума  
 
Непрочитано 11.05.2023, 14:19
#6
posetitel


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


да там даже не генплан будет, а схема, кругозор поиска ограничить выделенным прямоугольником, в него другие тексты не попадут
posetitel вне форума  
 
Непрочитано 11.05.2023, 14:36
#7
Сергей812


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
а схема, кругозор поиска ограничить выделенным прямоугольником, в него другие тексты не попадут
а какие тексты в секущую рамку выбора попадут?

Offtop:
Цитата:
Сообщение от kp+ Посмотреть сообщение
Слышал, что с подобными задачами справляются нейросети, после соответствующего обучения, но пока не знаю, как их прикрутить к Акаду
имхо, скорее нейросеть прикрутит к себе акад)
Сергей812 вне форума  
 
Непрочитано 11.05.2023, 14:36
#8
kp+

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
кругозор поиска ограничить выделенным прямоугольником
Кто его выделять-то будет? На реальной схеме эти прямоугольники тоже будут прорисованы? Или "нужные" тексты будут перекрываться блоком, а "посторонние" - точно не будут? Короче, без более реального примера, фрагмента реального чертежа трудно о чем-то говорить.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
скорее нейросеть прикрутит к себе акад
Свой напишет чтоб не тратиться на покупку и не нарушать авторские права

Последний раз редактировалось kp+, 11.05.2023 в 14:41.
kp+ вне форума  
 
Непрочитано 11.05.2023, 14:38
#9
posetitel


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Кто его выделять-то будет? На реальной схеме эти прямоугольники тоже будут прорисованы?
Если с рамками проще сделать лисп для помещения содержимого текста в атрибут, то да, на реальной схеме текст будет ограничен рамкой

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а какие тексты в секущую рамку выбора попадут?
Если правильно понял вопрос, то только нужный текст, который необходимо поместить в атрибут, будет в рамке. Атрибут тоже будет в рамке, просто таких блоков с атрибутами и рамками с текстом на чертеже много, надо однозначно вписать текст из рамки, в которой находится еще и атрибут в этот атрибут.
posetitel вне форума  
 
Непрочитано 11.05.2023, 14:47
#10
kp+

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
надо однозначно вписать текст из рамки, в которой находится еще и атрибут в этот атрибут.
Если нужный текст обязательно перекрывается соотв. атрибутом, а ненужный - точно не перекрывается, это упрощает задачу....ну и накладывает требования на исх. чертеж. Прорисовывать рамки тогда нет необходимости.
kp+ вне форума  
 
Непрочитано 11.05.2023, 14:50
#11
Сергей812


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


Пойдем с другого конца - откуда текст появляется для помещения в атрибуты? Здесь вопрос собственно о задании связей между текстом и атрибутами, так откуда появляются исходные данные - сам блок, тексты?
Сергей812 вне форума  
 
Непрочитано 11.05.2023, 14:57
#12
posetitel


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


kp+, перекрывает
Сергей812, исходный текст набирает пользователь руками (вариант сразу добавлять в атрибут - не предлагать), потом надо накопировать блоки в чертеж и считать текст из рамки в атрибут.
posetitel вне форума  
 
Непрочитано 11.05.2023, 15:00
#13
kp+

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
вариант сразу добавлять в атрибут - не предлагать
Бывает....
kp+ вне форума  
 
Непрочитано 11.05.2023, 15:06
#14
Сергей812


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
Сергей812, исходный текст набирает пользователь руками (вариант сразу добавлять в атрибут - не предлагать), потом надо накопировать блоки в чертеж и считать текст из рамки в атрибут.
так может просто в цикле - вставка блока, указать текст 1, указать текст 2 и потом занести содержимое текстов в атрибуты? Клики мышью без дополнительных манипуляций ввода - это быстрая операция...
Сергей812 вне форума  
 
Непрочитано 11.05.2023, 15:09
#15
posetitel


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


наверное, и так тоже можно, но я не знаю как это реализовать в лиспе )
хотя все же под требуемую задачу лучше было бы уже после размещения всех блоков командой скопировать текст из рамки в атрибут блока
posetitel вне форума  
 
Непрочитано 11.05.2023, 15:22
1 | #16
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


posetitel,
первый *текст из набора контурной секрамкой со смещением 5 единиц от точки вставки атрибутов NACHALO, KONEC.

Код:
[Выделить все]
 
(defun c:update_start_end (/ insertion_point text_to_replace text_sset)
	(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	(foreach insert (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "insert") (66 . 1)))))))
		(foreach attribute (vl-remove-if '(lambda (attribute) (not (member (vla-get-tagstring attribute) '("KONEC" "NACHALO"))))
												  (vlax-invoke insert 'getattributes)
						   )
			(setq insertion_point (vlax-get attribute 'insertionpoint)
				  text_sset (ssget "_cp"
									(list (mapcar '+ '(-5 -5) insertion_point)
										  (mapcar '+ '(-5 +5) insertion_point)
										  (mapcar '+ '(+5 +5) insertion_point)
										  (mapcar '+ '(+5 -5) insertion_point)
									)
								   '((0 . "*text"))
							)
			)
			(if text_sset
				(progn
					(vla-put-textstring
						attribute
						(vl-string-subst " " "\\P" (vla-get-textstring (setq text_to_replace (vlax-ename->vla-object (ssname text_sset 0)))))
					)
					(vla-erase text_to_replace)
				)
			)
		)
	)
	(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
	(princ)
)
__________________
K Lisp

Последний раз редактировалось koMon, 11.05.2023 в 15:45.
koMon вне форума  
 
Непрочитано 11.05.2023, 15:34
#17
posetitel


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


koMon, респект тебе и уважуха!
а можно немного откорректировать, чтобы начальный мультитекст из рамки вставлялся в атрибут как однострочный?
posetitel вне форума  
 
Непрочитано 11.05.2023, 15:45
1 | #18
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


откорректировал
__________________
K Lisp
koMon вне форума  
 
Непрочитано 11.05.2023, 15:54
#19
posetitel


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


Спасибо!
То, что нужно.
posetitel вне форума  
 
Непрочитано 23.06.2023, 10:52
#20
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 183


Как добавить к блоку аттрибут рядом стоящего текста
Вариант1. "окольный" первый лисп отсюда проставляет отметку в блок от ближайшего текста. Далее (при наличии) ToolPac - Attribute - Value - Fill в левом окне выбираем атрибут, в правом .INSPTZ, желательное количество знаков после запятой - Ок.
Вариант 2. "прямой" Lisp transmutation. Откуда выдрал, непомню. Но было в свободном доступе. В архиве лисп, описание на англ. файлы примеров. В свое время очень сильно выручал. Иногда отказывался работать. Причины этого не нашел. Есть автоматический режим обработки всего файла и выбор обрабатываемых блоков в ручную. Из наблюдений автоматический режим работает ну очень долго. Если блоков много, лучше обрабатывать "порциями".
Вложения
Тип файла: zip transmutation.zip (316.0 Кб, 16 просмотров)
Krovlaf вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как добавить к блоку аттрибут рядом стоящего текста

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить в блок атрибут в виде близлежащего текста dorogi-dorogi Динамические блоки 2 13.11.2013 15:56
В одном файле есть стиль текста, в другом нет. как добавить? SunSolo AutoCAD 12 02.09.2013 19:26
Программа для установки Z-координаты точки текста рядом с ней Кочетков Андрей Программирование 16 27.11.2012 23:00
Перенос из содержания текста в координату z рядом стоящей точки WeMaN Программирование 3 15.11.2012 10:01
Если противопожарная стена проектирумого здания не шире стены рядом стоящего здания Evgeniya Архитектура 2 07.12.2010 11:38