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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменение точности группы полей (изменение свойства нескольких полей сразу)

Изменение точности группы полей (изменение свойства нескольких полей сразу)

Ответ
Поиск в этой теме
Непрочитано 17.02.2023, 20:39 #1
Изменение точности группы полей (изменение свойства нескольких полей сразу)
shishoq
 
spb
Регистрация: 23.01.2005
Сообщений: 124

Уважаемые знатоки! Подскажите, пожалуйста, как отредактировать какую-нибудь настройку/свойство поля сразу во многих выбранных однотипных полях? Не разрывая связи полей с объектами. Конкретно: есть план со штриховками, от которых проставлена куча Мтекстов с полями, показывающими площадь штриховок (с определённым коэф., префиксом и т.д.). Не устраивает только точность показаний -- 2 цифры после запятой. Нужна одна цифра. Что бы такое прописать в лиспе, чтобы можно было изменить точность всех выбранных мтекстов-полей, не разрывая их живой связи с исходными штриховками? (а не щёлкать дикую кучу по одному вручную и не переставлять заново). Я покопался в свойствах, выданных entgetами-ssgetами, но что-то не разобрался

зы. и заодно: там же - как запятые поменять таким же макаром на точки или наоборот ? ))

Миниатюры
Нажмите на изображение для увеличения
Название: field-Dim.jpg
Просмотров: 43
Размер:	110.4 Кб
ID:	253473  

Просмотров: 1500
 
Непрочитано 17.02.2023, 22:37
#2
Кулик Алексей aka kpblc
Moderator


 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,500


ИМХО надо работать через vla-fieldcode: сначала получить, потом поменять %f2 на %f1 (если не ошибаюсь), и засунуть значеие обратно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.02.2023, 23:23
1 | #3
koMon


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


точность 2 -> 1, точка -> запятая
Код:
[Выделить все]
 (repeat (setq index (sslength (setq field_sset (ssget '((0 . "*text"))))))
	(setq field_code (vla-fieldcode (setq field_object (vlax-ename->vla-object (ssname field_sset (setq index (1- index)))))))
	(vla-put-textstring field_object (vl-string-subst "pr1%ds44" "pr2" field_code))
)
запятая -> точка
Код:
[Выделить все]
 (repeat (setq index (sslength (setq field_sset (ssget '((0 . "*text"))))))
	(setq field_code (vla-fieldcode (setq field_object (vlax-ename->vla-object (ssname field_sset (setq index (1- index)))))))
	(vla-put-textstring field_object (vl-string-subst "" "%ds44" field_code))
)
__________________
K Lisp

Последний раз редактировалось koMon, 17.02.2023 в 23:32.
koMon вне форума  
 
Автор темы   Непрочитано 22.02.2023, 23:31
#4
shishoq


 
Регистрация: 23.01.2005
spb
Сообщений: 124


Цитата:
Сообщение от koMon Посмотреть сообщение
точность 2 -> 1, точка -> запятая
Спасибо! Работает!!

Последний раз редактировалось shishoq, 26.02.2023 в 16:58.
shishoq вне форума  
 
Непрочитано 04.11.2025, 10:12
#5
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
1
(repeat (setq index (sslength (setq field_sset (ssget '((0 . "*text"))))))
****(setq field_code (vla-fieldcode (setq field_object (vlax-ename->vla-object (ssname field_sset (setq index (1- index)))))))
****(vla-put-textstring field_object (vl-string-subst "pr1%ds44" "pr2" field_code))
)
Коды отлично работают один раз для изменения точности нескольких полей, но если снова применить код к изменённым полям (с помощью этого кода, например,
изменить 1 на 2/ "pr2%" "pr1" , или 2 на 3 / "pr3%" "pr2"),
то появляются поля типа: 40.84%ds44 или 6214.75%. Это как-то лечится?

Последний раз редактировалось Ingpro, 07.11.2025 в 08:19.
Ingpro вне форума  
 
Непрочитано 04.11.2025, 21:37
#6
koMon


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


Ingpro,
замены должны быть парными (3 на 2):
"pr3" -> "pr2"
или
"%pr3" -> "%pr2"
__________________
K Lisp
koMon вне форума  
 
Непрочитано 05.11.2025, 07:35
#7
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
замены должны быть парными (3 на 2):
"pr3" -> "pr2"
или
"%pr3" -> "%pr2"
Это понятно, но повторное применение кода дает: 40.84%ds44 или 6214.75%. Может можно добавить в код удаление "%", если он добавляется?
А можно независимо от существующей точности нескольких полей (даже разных) задать указанную точность?
Миниатюры
Нажмите на изображение для увеличения
Название: точность 1-2, 2-3.png
Просмотров: 16
Размер:	12.0 Кб
ID:	270032  Нажмите на изображение для увеличения
Название: точность 2-3.png
Просмотров: 13
Размер:	12.9 Кб
ID:	270037  

Последний раз редактировалось Ingpro, 05.11.2025 в 11:39.
Ingpro вне форума  
 
Непрочитано 05.11.2025, 14:06
#8
Ingpro


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
появляются поля типа: 40.84%ds44 или 6214.75%
Если изменить точность поля вручную, % всё равно остается.
А замечал кто-нибудь, что если отредактировать точность любого поля вручную, а потом сделать отмену операции,
то текст с полем вообще удаляется... Это для text. С mtext изменение точности кодом из поста #3 не сработало ####???
Но, если в mtext отредактировать точность поля вручную, а потом сделать отмену операции,
то это работает и mtext с полем не удаляется.

Последний раз редактировалось Ingpro, 05.11.2025 в 14:20.
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Изменение точности группы полей (изменение свойства нескольких полей сразу)

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цыета слоя в нескольких файлах elena_din AutoCAD 16 01.12.2017 13:50
Изменение полей (fields) RomanM AutoCAD 20 24.08.2016 22:39
Не меняются свойства группы текстовых объектов Difference AutoCAD 9 03.10.2012 15:11
Изменение свойств группы объектов serg72 Программирование 12 10.04.2011 13:35
Изменение нескольких линий одновременно Alma3 AutoCAD 11 27.10.2010 12:42