Здравствуйте! Может кто подскажет lisp или что то подобное, но я сколько не искал не нашел. Нужно выбранные текстовые объекты автоматически изменить на +/- например 0.02 т.е. 95.174 => 95.178 95.208 => 95.219 95.252 => 95.232 и.т.д. Очень надеюсь на вашу помощь.
Лови ;;; ************************************************************************ ;;; * Библиотека DWLispLib Copyright ©2007 DW Programmers Group ;;; * ;;; *http://dwg.ru/f/showthread.php?p=218772 ;;; * ;;; * _dwgru-random ;;; * ;;; На основе vk_RandNum ;;; http://www.autocad.ru/cgi-bin/f1/board.cgi?t=32692Wn ;;; * ;;; * ;;; * 07/12/2007 Версия 0001. Редакция Владимир Азарко (VVA) ;;; ************************************************************************ (defun _dwgru-random (/ modulus multiplier increment) ;;; Генерирует случайное вещественное число в диапазоне от 0 до 1 ;;; Используется глобальная переменная *DWGRU_SEED* (if (not *DWGRU_SEED*) (setq *DWGRU_SEED* (getvar "DATE")) ) (setq modulus 65536 multiplier 25173 increment 13849 *DWGRU_SEED* (rem (+ (* multiplier *DWGRU_SEED*) increment) modulus)) (/ *DWGRU_SEED* modulus) ) ;;; ************************************************************************ ;;; * Библиотека DWLispLib Copyright ©2007 DW Programmers Group ;;; * ;;; * dwgru-random-range ;;; * ;;; *http://dwg.ru/f/showthread.php?p=218772 ;;; * ;;; * 07/12/2007 Версия 0001. Редакция Владимир Азарко (VVA) ;;; ************************************************************************ (defun dwgru-random-range (Minnum Maxnum ) ;;; Генерирует случайное число из указанного диапазона целых чисел ;;; Использует функцию библиотеки ;;; _dwgru-random ;;; Параметры: ;;; Minnum — минимальное целое число ;;; Maxnum — максимальное целое число ;;; Возврат: ;;; целое число из указанного диапазона ;;; Пример: ;| (DWGRU-NUM-RANDOM-RANGE 1 15) ;_Результат 3 (DWGRU-NUM-RANDOM-RANGE 1 15) ;_Результат 10 |; ;(- Maxnum (atoi (rtos (* (- Maxnum Minnum) (_dwgru-num-random)) 2 0))) ;_Comment VVA 07.12.2007 Было так (- Maxnum (fix (* (- Maxnum Minnum) (_dwgru-random)))) ;_Add VVA 07.12.2007 Так наверное быстрее ) ;;Text Random number ;;http://www.caduser.ru/cgi-bin/f1/board.cgi?t=37807zB (defun c:TR (/ From To SS Ent Num i) (initget 1) (setq From (getint "Укажите диапазон. Минимум: ")) (while (progn (initget 1) (not (> (setq To (getint "Укажите диапазон. Максимум: ")) From)) ) ) (and (setq SS (ssget "_:L" '((0 . "*TEXT")))) (repeat (setq i (sslength SS)) ;_ end setq (setq Ent (entget (ssname SS (setq i (1- i))))) (setq Num (dwgru-random-range From To)) (entmod (subst (cons 1 (if (<= Num 0)(itoa Num) (strcat "+" (itoa Num)))) (assoc 1 Ent) Ent ) ) ) ;_ end repeat ) (princ) ) --- Сообщения объединены, 20 фев 2019, Оригинальное время сообщения: 20 фев 2019 --- Лучше так
Этот лисп к сожалению не подходит, он просто выдает рандомные числа в диапазоне, а нужно что бы он опирался на уже имеющееся число. И в том лиспе требуется целое число.
Разброс отметок очень большой и если просто взять максимальное число и минимальное получится солянка.
Там можно вычесть или прибавить одно и то же число ко всем исходным, а нужно все исходные числа изменить на различную величину в заданных пределах.
Как вас понять ? Пишите что нужно на рандомную величину, и минимум максимум вас не устраивает Берем те же +92,100 92,150 92,200 задаем плюс/минус 5мм что что тут не так? --- Сообщения объединены, 20 фев 2019, Оригинальное время сообщения: 20 фев 2019 --- Закиньте сам файл с отметками. Может она лучше вас объяснит что к чему
Есть масса точек, подгонометрией приходилось бы для каждой точки отдельно выставлять +- 0.02 т.е. 95.174 >> минимум 95.154, максимум 95.194. Для следующей точки 95.252 эти значения минимум и максимум уже не подходят, опять придется перебивать и так с каждой точкой, быстрее вручную.