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

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

Замена содержимого (текстовой части) линейного размена по шаблону.

Ответ
Поиск в этой теме
Непрочитано 24.07.2024, 21:54 #1
Замена содержимого (текстовой части) линейного размена по шаблону.
zvezdochiot
 
маркшейдер
 
Москва
Регистрация: 25.09.2021
Сообщений: 189

Уважаемые форумчане.

Нужен простой лисп для замены содержимого (текстовой части) линейного размера (по умолчанию "<>") на шаблон "<>\X{SIZE+RND}", где{SIZE+RND} - число, получаемое путём добавления к действительному размеру некоей "случайной поправки" в диапазоне, задаваемом параметрами команды.

Искал, но нашёл только отдельные компоненты для такой "задумки". При этом никак не уверен, что смогу справится с форматированием этого доп. значения (ведь оно нужно в том же формате, что и верхнее значение, использующее для форматирования свойства размера).

Такие вот дела.
__________________
Keep it simple, stupid.

Последний раз редактировалось zvezdochiot, 24.07.2024 в 23:41. Причина: опечатки
Просмотров: 1050
 
Автор темы   Непрочитано 26.07.2024, 09:43
#2
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 189


Пока слепил "винегрет" из "отдельных компонент", dimprand.lsp:
Код:
[Выделить все]
 
(defun rnd (/ modulus multiplier increment random)
  (if (not seed)
    (setq seed (getvar "DATE"))
  )
  (setq modulus    65536
        multiplier 25173
        increment  13849
        seed  (rem (+ (* multiplier seed) increment) modulus)
        random     (/ seed modulus)
  )
)

(defun c:dimprand ()
  (setq dim (entget (car (entsel "\nSelect dimension object: "))))
  (setq rl (getreal "\nEnter rand limits:  "))
  (setq orig (cdr (assoc 42 dim)))
  (setq dest (+ orig (- (* (+ rl rl) (rnd)) rl)))
  (setq text (strcat "<>\\X" (rtos dest 2 0) " "))
  (entmod (subst (cons 1 text) (assoc 1 dim) dim))
  (princ)
)
Использование свойства 42 позволяет не беспокоиться о масштабном коэффициенте размера.
Но!
Недостатки скрипта:
  1. команда обрабатывает один размер
  2. нет проверки, является ли объект размером
  3. округление до целого, а не как в свойствах размера
Пока же использую:
Код:
и пытаюсь разобрать, какое же свойство является этим самым "округлением".
Вложения
Тип файла: lsp dimprand.lsp (639 байт, 3 просмотров)
__________________
Keep it simple, stupid.

Последний раз редактировалось zvezdochiot, 26.07.2024 в 09:51. Причина: опечатки
zvezdochiot вне форума  
 
Автор темы   Непрочитано 26.07.2024, 14:55
#3
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 189


Изменил порядок параметров и завёл выбор и замену размера в бесконечный цикл. Стало значительно удобнее:
Код:
[Выделить все]
 
(defun rnd (/ modulus multiplier increment random)
  (if (not seed)
    (setq seed (getvar "DATE"))
  )
  (setq modulus    65536
        multiplier 25173
        increment  13849
        seed  (rem (+ (* multiplier seed) increment) modulus)
        random     (/ seed modulus)
  )
)

(defun c:dimprand ()
 (setq rl (getreal "\nEnter rand limits:  "))
 (while 1
  (setq dim (entget (car (entsel "\nSelect dimension object: "))))
  (setq orig (cdr (assoc 42 dim)))
  (setq dest (+ orig (- (* (+ rl rl) (rnd)) rl)))
  (setq text (strcat "<>\\X" (rtos dest 2 0) " "))
  (entmod (subst (cons 1 text) (assoc 1 dim) dim))
 )
 (princ)
)
Вложения
Тип файла: lsp dimprand.lsp (652 байт, 12 просмотров)
__________________
Keep it simple, stupid.
zvezdochiot вне форума  
 
Автор темы   Непрочитано 05.08.2024, 09:29
#4
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 189


И до кучи небольшой лисп _dimpin для ручного ввода нужного значения:
Код:
[Выделить все]
 
(defun c:dimpin ()
 (while 1
  (setq dim (entget (car (entsel "\nSelect dimension object: "))))
  (setq dest (getreal "\nEnter used size:  "))
  (setq text (strcat "<>\\X" (rtos dest 2 0) " "))
  (entmod (subst (cons 1 text) (assoc 1 dim) dim))
 )
 (princ)
)
Вложения
Тип файла: lsp dimpin.lsp (268 байт, 4 просмотров)
__________________
Keep it simple, stupid.
zvezdochiot вне форума  
Ответ
Вернуться   Форум DWG.RU > Поиск литературы, чертежей, моделей и прочих материалов > Замена содержимого (текстовой части) линейного размена по шаблону.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Развитие технологий и норм в части "опасные зоны грузоподъёмных устройств" Tyhig Технология и организация строительства 5 02.07.2019 16:07
Является ли замена плит покрытия капремонтом или реконструкцией sergkuz Прочее. Архитектура и строительство 44 07.04.2017 18:29
Создание вкладки листа в неактивном документе по шаблону protorgovec LISP 2 11.05.2016 08:10
Выбрать текст по части содержимого nynokne AutoCAD 9 21.02.2014 02:26
Поиск и замена символов в текстовой строке DEMOGOG Программирование 10 09.09.2009 11:46