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

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

Тема в разделе "Autocad", создана пользователем Nov.pashin, 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)
    )
    --- Сообщения объединены, 20 фев 2019, Оригинальное время сообщения: 20 фев 2019 ---
    Лучше так
     

    Вложения:

    • TR.lsp
      Размер файла:
      2,6 КБ
      Просмотров:
      124
    Qvinto и agajohn нравится это.
  4. burvil

    burvil Форумчанин

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

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

    landmaling Форумчанин

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

    borik Форумчанин

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

    borik Форумчанин

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

    Qvinto Форумчанин

    Или

    http://www.dxf-workshop.com/ExtraTools/#C.1

    [​IMG]
     
  12. landmaling

    landmaling Форумчанин

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

    Qvinto Форумчанин

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

    borik Форумчанин

    Я - пас...
     
    agajohn нравится это.
  16. agajohn

    agajohn Форумчанин

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

    landmaling Форумчанин

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

    Qvinto Форумчанин

    Так точки нужно переделывать или сам текст?
     
  20. Текст. Есть точки, но в их координатах полная хрень, менять надо текст рядом с ними. Снимок.JPG
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление