1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны периодические перебои в работе.

Как изменить значения выбранного текста рандомную величину

Discussion in 'Autocad' started by Nov.pashin, Feb 20, 2019.

  1. Здравствуйте! Может кто подскажет lisp или что то подобное, но я сколько не искал не нашел. Нужно выбранные текстовые объекты автоматически изменить на +/- например 0.02 т.е.
    95.174 => 95.178
    95.208 => 95.219
    95.252 => 95.232 и.т.д.
    Очень надеюсь на вашу помощь.
     
  2. agajohn

    agajohn Форумчанин

    Вы не могли бы написать как и с чем это можно есть? Для чего оно вообще?
     
  3. landmaling

    landmaling Форумчанин

    Лови

    ;;; ************************************************************************
    ;;; * Библиотека DWGruLispLib Copyright ©2007 DWGru 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)
    )
    ;;; ************************************************************************
    ;;; * Библиотека DWGruLispLib Copyright ©2007 DWGru 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)
    )
    --- Сообщения объединены, Feb 20, 2019, Оригинальное время сообщения: Feb 20, 2019 ---
    Лучше так
     

    Attached Files:

    • TR.lsp
      File size:
      2.6 KB
      Views:
      124
    Qvinto and agajohn like this.
  4. burvil

    burvil Форумчанин

    Иногда такое бывает, когда надо замаскировать чужие топопланы и выдать их за свои.
     
    agajohn likes this.
  5. Этот лисп к сожалению не подходит, он просто выдает рандомные числа в диапазоне, а нужно что бы он опирался на уже имеющееся число.

    И в том лиспе требуется целое число.
     
  6. landmaling

    landmaling Форумчанин

    Что мешает умножить каждое число на 1000, потом использовать лисп, потом поделить на 1000 ?
     
  7. Разброс отметок очень большой и если просто взять максимальное число и минимальное получится солянка.
     
  8. borik

    borik Форумчанин

    Nov.pashin,
    МенюГео - подгонометрия...
     
    agajohn likes this.
  9. Подгонометрия это то же самое, тоже выдает рандом от минимума до максимума.
     
  10. borik

    borik Форумчанин

    Nov.pashin,
    ::rolleyes24.gif::
    Ну, тогда МенюГео - арифметические действия с числами...
     
  11. Qvinto

    Qvinto Форумчанин

  12. landmaling

    landmaling Форумчанин

  13. Там можно вычесть или прибавить одно и то же число ко всем исходным, а нужно все исходные числа изменить на различную величину в заданных пределах.
     
  14. Qvinto

    Qvinto Форумчанин

    Там автоматом, выделенные числа и дает.
     
  15. borik

    borik Форумчанин

    Я - пас...
     
    agajohn likes this.
  16. agajohn

    agajohn Форумчанин

    Как вас понять ? Пишите что нужно на рандомную величину, и минимум максимум вас не устраивает
    Берем те же +92,100 92,150 92,200 задаем плюс/минус 5мм что что тут не так?
    --- Сообщения объединены, Feb 20, 2019, Оригинальное время сообщения: Feb 20, 2019 ---
    Закиньте сам файл с отметками. Может она лучше вас объяснит что к чему
     
  17. landmaling

    landmaling Форумчанин

    Только что попробовал в подгонометрии, всё работает согласно 1-му сообщению в теме.
     
  18. Есть масса точек, подгонометрией приходилось бы для каждой точки отдельно выставлять +- 0.02 т.е. 95.174 >> минимум 95.154, максимум 95.194. Для следующей точки 95.252 эти значения минимум и максимум уже не подходят, опять придется перебивать и так с каждой точкой, быстрее вручную.
     
  19. Qvinto

    Qvinto Форумчанин

    Так точки нужно переделывать или сам текст?
     
  20. Текст. Есть точки, но в их координатах полная хрень, менять надо текст рядом с ними. Снимок.JPG
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice