Тема: Замена чисел случайным образом в указанных пределах

Здравствуйте!
Вот ведь задачка: на исполнительной схеме поменять числа, обозначающие размеры на 1,2,3 миллиметра на плюс или минус.
Сижу как ...блондинка, блин, и перебиваю..
Помогите макросиком, а? Короче, так: Я выделяю все нужные числа быстрым выбором и включаю кнопочку с будущим макросом. Он спрашивает - в каких пределах делать замену?. Я ввожу 1 или 2 или... короче до 20 мм.
И макрос переписывает все выделенные числа случайным образом на плюс или на минус в указанных пределах. То есть если очередное число 3520, а мой предел 2, то новое число должно быть 3518 или 3519 или 3520 (то же число оставлять не возбраняется) или 3521 или 3522.
Большое спасибо всем, кто мне и раньше помогал и сейчас откликнется.

Re: Замена чисел случайным образом в указанных пределах

совесем забыла подчеркнуть - это не размеры, а именно числа около размерных линий. То есть обычные тексты.

Re: Замена чисел случайным образом в указанных пределах

> Малявка
Интересно просто. Зачем это все нужно?

Re: Замена чисел случайным образом в указанных пределах

> Makson
Всё просто: Заказчик требует хотя бы минимального отклонения размеров фундаментов от проекта, и одновременно закрывает глаза на реальные измерения. Короче, легально шиампуем "липу", хотя съемка показала - все отклонения мизерные. А вот набить на исполнительную схему реальные отклонения геодезисту уже не судьба. Поэтому это "ответственное" дело поручили "блондинке"

Re: Замена чисел случайным образом в указанных пределах

Сказали типа "набивай, что в голову взбредет, но в пределах 2-3 мм"

Re: Замена чисел случайным образом в указанных пределах

> Малявка
А что представляют собой "числа"???

Re: Замена чисел случайным образом в указанных пределах

> Makson
обычный текст, не мультитекст, четырехзначные числа, в отдельном слое.

Re: Замена чисел случайным образом в указанных пределах

> Makson
Короче, в модели есть куча фундаментов с проектными размерами. У геодезиста хватило сил проставить под размерными линиями число, которое должно быть по проекту, а вот на изменение чисел у него уже сил не хватило. Зато хватило наглости оказаться вдруг очень занятым и слинять на участок. Жертва этой наглости - перед вами.

Re: Замена чисел случайным образом в указанных пределах

> Малявка
Вот здесь посмотри
https://www.caduser.ru/forum/topic37867.html

Re: Замена чисел случайным образом в указанных пределах

> Makson
почему-то ни один генератор не работает. Ком. строка пишет недостаточно аргументов.

Re: Замена чисел случайным образом в указанных пределах

Одна заработала! (Это я тормознула)
Всем спасибо!

Re: Замена чисел случайным образом в указанных пределах

А как бы сделать в нижеприведенном коде, чтобы после нажатия на текст он становился бы зеленым. Ну, чтобы не путать с другими, которые еще не редактировала.
(defun vk_RandNum (/ 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:tr (/ From To Diff SS Ent +Sign Num)
(initget 0)
(setq From (getint "From: "))
(while (progn (initget 0) (not (> (setq To (getint "To: ")) From)))
)
(setq +Sign (if (< From 0)
"+"
""
)
)
(setq Diff (- To From))
(while (setq SS (ssget ":S" (list (cons 0 "TEXT"))))
(setq Num (- To (atoi (rtos (* Diff (vk_RandNum)) 2 0))))
(setq Ent (entget (ssname SS 0)))
(entmod
(subst
(cons 1
(if (<= Num 0)
(itoa Num)
(strcat +Sign (itoa Num))
)
)
(assoc 1 Ent)
Ent
)
)
)
(princ)
)
)
Спасибо.

Re: Замена чисел случайным образом в указанных пределах

> Малявка

(defun vk_RandNum (/ 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:tr (/ From To Diff SS Ent +Sign Num)
(initget 0)
(setq From (getint "From: "))
(while (progn (initget 0) (not (> (setq To (getint "To: ")) From)))
)
(setq +Sign (if (< From 0)
"+"
""
)
)
(setq Diff (- To From))
(while (setq SS (ssget "_:S:E:L" (list (cons 0 "TEXT"))))
(setq Num (- To (atoi (rtos (* Diff (vk_RandNum)) 2 0))))
(setq Ent (entget (ssname SS 0)) SS nil)
(setq Ent
(if (assoc 62 Ent)
  (subst
    (cons 62 3) ;_ 3 - зеленый цвет
    (assoc 62 Ent)
    Ent
    )
    (append Ent
    (list
      (cons 62 3) ;_ 3 - зеленый цвет
      )
      )
  )
      )
(entmod
(subst
(cons 1
(if (<= Num 0)
(itoa Num)
(strcat +Sign (itoa Num))
)
)
(assoc 1 Ent)
Ent
)
)
)
(princ)
)

Re: Замена чисел случайным образом в указанных пределах

Так наверное будет ближе к твоей задаче. Можно выбирать рамкой/секрамкой

(defun vk_RandNum (/ 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:tr2 (/ From To Diff SS Ent +Sign Num lst i)
(initget 5)
(setq To (getint "Max величина разброса значений: "))
(setq From (- 0 To))
(setq +Sign (if (< From 0)
"+"
""
)
)
(setq Diff (- To From))
(while (setq SS (ssget "_:S:L" (list (cons 0 "TEXT"))))
(setq Num (- To (atoi (rtos (* Diff (vk_RandNum)) 2 0))))
(setq i '-1)
(while (< (setq i (1+ i))(sslength SS))
  (setq Ent (entget (ssname SS i)))
  (setq Ent
(if (assoc 62 Ent)
  (subst
    (cons 62 3) ;_ 3 - зеленый цвет
    (assoc 62 Ent)
    Ent
    )
    (append Ent
    (list
      (cons 62 3) ;_ 3 - зеленый цвет
      )
      )
  )
      )
(entmod
(subst
(cons 1
      (itoa (+ (atoi(cdr(assoc 1 Ent))) Num))
)
(assoc 1 Ent)
Ent
)
)
  )
)
(princ)
)

Re: Замена чисел случайным образом в указанных пределах

> VVA
Ой, спасибо огромное! Всё работает здОрово!
Только последний макрос не красит числа зеленкой, хотя и можно выделять рамкой. А вот предпоследний - просто чудо! Спасибо.

Re: Замена чисел случайным образом в указанных пределах

А у меня красит. Ну да бог с ним.

Re: Замена чисел случайным образом в указанных пределах

И у меня теперь последний макрос красит. (Опять тормознула с правильной загрузкой).
Последний макрос - то, что доктор прописал.
Чмоки тя в разные приятные места))

Re: Замена чисел случайным образом в указанных пределах

Ребята, можно продолжить тему?
Проблема та же – установка случайных числовых значений в указанных пользователем пределах, но работаем уже не с текстовыми примитивами, а с размерами.
Необходимо сделать так: после нажатия кнопки будущего макроса точно так же, как в прошлый раз, устанавливаем разброс значений относительно проектных (например -3 и +4, именно так, потому что сами размеры-то разные), а потом тыкаем по проектным размерам или выделяем рамкой целые группы размеров, и под размерной линией появляется заветное случайное число красного цвета (проектный существующий размер остается на прежнем слое прежним цветом). Ну типа как будто вручную в свойствах размера сделали так: например проектный размер 1025, то в свойствах добавляем <>\X1024
Надеюсь, всё понятно. Заранее всем откликнувшимся спасибо.

Re: Замена чисел случайным образом в указанных пределах

Совсем забыла: AutoCAD 2004.

Re: Замена чисел случайным образом в указанных пределах

Тэээээк-с...
Вот это я затупила народ...
Три дня молчания - для блондинки - катастрофа!
ОК, если невозможно два числа в одном размере раскрасить в два разных цвета, может такой вариант пройдет: на существующем размере нарисовать новый, красного цвета с числом под размерной линией и, как слой, опустить его вниз, под существующий размер, ну, для того, чтобы размерные линии остались прежнего цвета.

Re: Замена чисел случайным образом в указанных пределах

Мастера в задумчивости. ОК. Тогда может быть можно сделать такой вариант:
вставлять текстовый примитив под размерной чертой со стилем шрифта размерного текста, только красного цвета и в слое, например "Факт"?

Re: Замена чисел случайным образом в указанных пределах

Меня терзают смутные сомнения...
Похоже я в игноре...

Re: Замена чисел случайным образом в указанных пределах

> Малявка
Мастера иногда бывают заняты работой.

Re: Замена чисел случайным образом в указанных пределах

> Makson
Угу, понимаю... Я тоже занята работой, вот сижу как...блондинка, блин, и копирую эти самые цифИри под размерными линиями, а потом (спасибо мастерам) использую их прошлый макрос.
Наш геодезист совсем обнаглел - увидел, как я быстро справилась с предыдущим чертежом, так он на шею сел и ножки свесил - уже через шефа дал следующий чертеж безо всякой подготовки, как раньше сам делал.
Мда, инициатива наказуема даже в 21 веке...

Re: Замена чисел случайным образом в указанных пределах

Повод заняться изучением Лиспа самостоятельно.
P.S. Это я не от имени мастеров:)
Бесплатный совет: может взорвать размеры два раза и воспользоваться предыдущей программой от мастеров?