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

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

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

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

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

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

__________________
Как-то так.
Просмотров: 8080
 
Непрочитано 11.07.2024, 10:57
1 | #21
posetitel


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


Цитата:
Сообщение от koMon Посмотреть сообщение
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)
)
Уважаемый, koMon, могли бы скорректировать код, чтобы в атрибут блока помещался текст, которых заключен в рамку в которую попадает и сам атрибут. Рамка пусть будет выполнена в виде полилинии, слой с текстом и рамкой называется "шкафы" (ну или "Текст_для_атрибута", как в приложенном выше моем файле). Сейчас логика работы кода, как я понял, - помещение текста в атрибут при условии, что текст накладывается на атрибут.
posetitel вне форума  
 
Непрочитано 11.07.2024, 18:44
#22
АлексЮстасу

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


Цитата:
Сообщение от posetitel Посмотреть сообщение
чтобы в атрибут блока помещался текст, которых заключен в рамку в которую попадает и сам атрибут
Хорошо бы приложить примеры.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 11.07.2024, 20:38
#23
posetitel


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


Прилагаю. Файл был в сообщении 4, дополнил результатом того, что должно получиться.
В принципе, лисп от koMon работает, только условие, по которому определяется, какой текст помещать в атрибут, немного не устраивает. Вот прошу изменить условие в теле кода.
Вложения
Тип файла: dwg
DWG 2018
На форум.dwg (61.7 Кб, 10 просмотров)
posetitel вне форума  
 
Непрочитано 12.07.2024, 16:33
1 | 1 #24
koMon


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
скорректировать код
коррекция
Код:
[Выделить все]
 
(defun c:update_start_end (/ insert_sset fence_data window_sset mtext_sset text_to_replace)
	(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
	(if (setq insert_sset (ssget "_:l" '((0 . "insert") (66 . 1))))
		(foreach insert (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex insert_sset))))
			(and
				 (setq fence_data (mapcar '(lambda (attribute) (cons attribute (vlax-get attribute 'insertionpoint)))
						 				   (vl-remove-if '(lambda (attribute) (not (member (vla-get-tagstring attribute) '("KONEC" "NACHALO"))))
						 						   		 (vlax-invoke insert 'getattributes)
						 				   )
								  )
				 )
				 (setq window_sset (ssget "_f" (mapcar 'cdr fence_data) '((0 . "lwpolyline") (8 . "Текст_для_атрибута,шкафы") (-4 . "&") (70 . 1))))
				 (<= 2 (sslength window_sset))
				 (mapcar '(lambda (fence window)
						   		 (and
						   			  (setq mtext_sset (ssget "_wp"
						   										(mapcar 'cdr (vl-remove-if-not '(lambda (group) (= (car group) 10)) (entget window)))
						   									   '((0 . "mtext") (8 . "Текст_для_атрибута,шкафы"))
						   								 )
						   			  )
						   			  (= 1 (sslength mtext_sset))
						   			  (null (vla-put-textstring (caar fence)
						   										(vl-string-subst " "
																				 "\\P"
																				 (vla-get-textstring (setq text_to_replace (vlax-ename->vla-object (ssname mtext_sset 0))))
																)
						   					)
						   			  )
						   			 ;(vla-erase text_to_replace)
						   		 )
						)
						(list fence_data (reverse fence_data))
						(list (ssname window_sset 0) (ssname window_sset (1- (sslength window_sset))))
				 )
			)
		)
	)
	(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
	(princ)
)
__________________
K Lisp

Последний раз редактировалось koMon, 16.07.2024 в 11:19.
koMon вне форума  
 
Непрочитано 15.07.2024, 08:39
#25
posetitel


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


После коррекции вообще не помещаются в атрибут тексты
Т.е. ничего не происходит
posetitel вне форума  
 
Непрочитано 15.07.2024, 16:33
#26
koMon


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


Нажмите на изображение для увеличения
Название: USE.gif
Просмотров: 20
Размер:	407.9 Кб
ID:	263808
__________________
K Lisp
koMon вне форума  
 
Непрочитано 16.07.2024, 08:59
#27
posetitel


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


Чудеса...
Я даже старый лисп из автозагрузки удалил, перезапустил автокад, все равно не получается
Вот что в консоли написано:
Цитата:
Команда: ЗАГПРИЛ
Update2.lsp успешно загружено.
Команда:
Команда:
Команда: UPDATE_START_END
Выберите объекты: Противоположный угол: найдено: 1
Выберите объекты:
Команда:
Выполнить пытаюсь и в файле "На форум.dwg" из сообщения 23 и в файле "На форум.dwg" из сообщения 4

----- добавлено через ~9 мин. -----
P.S. Ларчик открывается просто: нужно сменить кодировку в сохраненном лиспе, тогда все заработает.
koMon, респект тебе и уважуха. В смысле большое человеческое спасибо.

----- добавлено через ~23 мин. -----
P.P.S. Только можно сделать опять, как было в одной из версий, чтобы текст после вставки в атрибут не удалялся. У меня должно несколько блоков находиться в в границах одной рамки и тогда текст из рамки попадает в первый атрибут, а в остальные уже не попадает, потому что удаляется.

Последний раз редактировалось posetitel, 16.07.2024 в 09:09.
posetitel вне форума  
 
Непрочитано 16.07.2024, 11:20
1 | 1 #28
koMon


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
чтобы текст после вставки в атрибут не удалялся
закомментировал строку 29.
__________________
K Lisp
koMon вне форума  
Ответ
Вернуться   Форум 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