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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Заменить значения диаметров

Заменить значения диаметров

Ответ
Поиск в этой теме
Непрочитано 28.05.2023, 12:09 #1
Заменить значения диаметров
MrBrown
 
ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361

Здравствуйте!
Вынужден обратиться к форумчанам, так как не получается макросом (#6) менять часть в Мтекстах, выделенных рамкой.
В приложении простая исполнительная схема демонтажа системы канализации. Здесь диаметры чугунных труб указаны 100мм.
Другая исполнительная схема (монтажа) один-в-один, как и демонтаж, только диаметры труб ПВХ 110мм.
Помогите мне, пожалуйста, поменять "стадом" значения диаметров, оставив нетронутыми длины труб.
Спасибо.
p.s. В модели есть ещё другие схемы с такими же Мтекстами и другими диаметрами, поэтому должны меняться только те, которые я выделяю рамкой.

Вложения
Тип файла: dwg
DWG 2007
КАН-демонтаж.dwg (449.1 Кб, 15 просмотров)


Последний раз редактировалось MrBrown, 29.05.2023 в 12:28.
Просмотров: 1007
 
Непрочитано 28.05.2023, 13:06
1 | #2
Сергей812


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


Offtop: MrBrown, подчищайте внешние ссылки в файле - там и название организации, и адрес объекта.. могли бы и штампы оставить с тем же успехом)

----- добавлено через ~22 мин. -----
хм, даже писал похожее в свое время
Сергей812 вне форума  
 
Автор темы   Непрочитано 28.05.2023, 16:21
#3
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Сергей812, благодарю за offtop, весьма ценный урок. Всё удалил и обновил свой пост.
Разбираюсь с Вашим кодом. Надеюсь, что получится.

Последний раз редактировалось MrBrown, 28.05.2023 в 16:36.
MrBrown вне форума  
 
Автор темы   Непрочитано 28.05.2023, 16:53
#4
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Нет, не получается. Не знаю, как запустить в работу.
А можно ли что-то поменять в приложенном макросе подсчёта длин определённого диаметра? Он ведь понимает и разделяет диаметр от длины трубопровода. И, если существующий макрос суммирует значения длин, то, изменив что-то в коде, можно с его помощью заменить и диаметры во всех выделенных Мтекстах, оставив длины неизменными. ИМХО.
Вложения
Тип файла: lsp SumD.lsp (5.7 Кб, 8 просмотров)
MrBrown вне форума  
 
Непрочитано 28.05.2023, 22:35
1 | #5
koMon


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


MrBrown,
не, ну если в тексте присутствует диаметр %%С, то однократную замену в выбранных рамкой или ещё как мтекстах можно сделать так:
Код:
[Выделить все]
 
(defun c:multiple_mtext_diameter_replace (/ init)
	(if (null find_diameter) (setq find_diameter "100"))
	(if (null replace_with_diameter) (setq replace_with_diameter "110"))
	(setq init (initget 7) find_diameter (itoa (getint (strcat "\nВведите диаметр для замены <" find_diameter ">: ")))
	      init (initget 7) replace_with_diameter (itoa (getint (strcat "\nВведите заменяющий диаметр <" replace_with_diameter ">: ")))
	)
	(foreach mtext (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget (list '(0 . "mtext") (cons 1 (strcat "*%%C" find_diameter "*")))))))
		(if (vl-string-search (strcat "%%C" find_diameter) (cdr (setq mtext_value_group (assoc 1 (entget mtext)))))
			(entmod (subst (cons 1 (vl-string-subst (strcat "%%C" replace_with_diameter) (strcat "%%C" find_diameter) (cdr mtext_value_group)))
				       mtext_value_group
				       (entget mtext)
			        )
			)
	  	)
	)
	(princ)
)
__________________
K Lisp

Последний раз редактировалось koMon, 29.05.2023 в 13:03.
koMon вне форума  
 
Автор темы   Непрочитано 29.05.2023, 09:55
#6
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


koMon, Спасибо за участие, при вставке кода в ком. строку всё работает. Только замена - не однократная. Есть исполнительные схемы по ГВС, ХВС, где нужно диаметр, например 50, менять на 63, 25-й на 32-й ну и другие диаметры. Было бы удобно, если бы ком. строка приглашала указать:
- какой существующий диаметр
- на какой новый менять.
К сожалению, мои знания в LISP начинаются и заканчиваются на "Ctrl+C" - "Ctrl+V". Поэтому пока буду пользоваться Вашим макросом, клонируя его с разными значениями "itoa".
MrBrown вне форума  
 
Автор темы   Непрочитано 29.05.2023, 12:34
#7
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Кулик Алексей aka kpblc, Offtop: благодарю за перенос моей темы в соответствующую ветку форума
MrBrown вне форума  
 
Непрочитано 29.05.2023, 12:35
1 | #8
koMon


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


MrBrown, не вопрос). см. #5. я имел в виду однократную замену в мтексте. в смысле если в мтексте несколько диаметров для замены, то заменится только однократно первый встретившийся.
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 29.05.2023, 14:59
#9
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


koMon, то, что "доктор прописал". Моя благодарность.
MrBrown вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Заменить значения диаметров



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор правильного значения усилия затяжки для высокопрочных болтов М30 dik-son Металлические конструкции 11 24.10.2024 12:08
Как вставить в текстовое поле первые символы значения свойства чертежа (подшивки)? KiisteN Программирование 5 21.10.2017 14:46
Большие значения частот при расчете на пульсационНое ветровое воздействие в ЛИРА САПР 2013 Kurt1994 Лира / Лира-САПР 3 10.08.2017 10:40
Как при отрытии файла Acad автоматически заменить шрифт ? mvart AutoCAD 12 25.01.2013 11:28
Как заменить деревянную балку, которая является частью стропильной системы? Евгений 86 Обследование зданий и сооружений 8 13.01.2013 11:42