Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

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

Тема в разделе "Autocad", создана пользователем Nov.pashin, 20 фев 2019.

  1. Nov.pashin

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

    Форумчанин

    Регистрация:
    3 апр 2013
    Сообщения:
    473
    Симпатии:
    208
    Адрес:
    Москва
    Вы не могли бы написать как и с чем это можно есть? Для чего оно вообще?
     
    #2
  3. landmaling

    Форумчанин

    Регистрация:
    18 май 2015
    Сообщения:
    429
    Симпатии:
    451
    Адрес:
    То тама, то тута
    Лови

    ;;; ************************************************************************
    ;;; * Библиотека 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 КБ
      Просмотров:
      96
    #3
    Qvinto и agajohn нравится это.
  4. burvil

    Форумчанин

    Регистрация:
    15 июл 2013
    Сообщения:
    252
    Симпатии:
    73
    Адрес:
    Москва
    Иногда такое бывает, когда надо замаскировать чужие топопланы и выдать их за свои.
     
    #4
    agajohn нравится это.
  5. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Этот лисп к сожалению не подходит, он просто выдает рандомные числа в диапазоне, а нужно что бы он опирался на уже имеющееся число.

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

    Форумчанин

    Регистрация:
    18 май 2015
    Сообщения:
    429
    Симпатии:
    451
    Адрес:
    То тама, то тута
    Что мешает умножить каждое число на 1000, потом использовать лисп, потом поделить на 1000 ?
     
    #6
  7. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Разброс отметок очень большой и если просто взять максимальное число и минимальное получится солянка.
     
    #7
  8. borik

    Форумчанин

    Регистрация:
    29 июн 2011
    Сообщения:
    894
    Симпатии:
    578
    Адрес:
    Витебск
    Nov.pashin,
    МенюГео - подгонометрия...
     
    #8
    agajohn нравится это.
  9. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Подгонометрия это то же самое, тоже выдает рандом от минимума до максимума.
     
    #9
  10. borik

    Форумчанин

    Регистрация:
    29 июн 2011
    Сообщения:
    894
    Симпатии:
    578
    Адрес:
    Витебск
    Nov.pashin,
    ::rolleyes24.gif::
    Ну, тогда МенюГео - арифметические действия с числами...
     
    #10
  11. Qvinto

    Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    5.681
    Симпатии:
    4.223
    Адрес:
    Украина, г.Калуш
    Или

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

    [​IMG]
     
    #11
  12. landmaling

    Форумчанин

    Регистрация:
    18 май 2015
    Сообщения:
    429
    Симпатии:
    451
    Адрес:
    То тама, то тута
    #12
  13. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Там можно вычесть или прибавить одно и то же число ко всем исходным, а нужно все исходные числа изменить на различную величину в заданных пределах.
     
    #13
  14. Qvinto

    Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    5.681
    Симпатии:
    4.223
    Адрес:
    Украина, г.Калуш
    Там автоматом, выделенные числа и дает.
     
    #14
  15. borik

    Форумчанин

    Регистрация:
    29 июн 2011
    Сообщения:
    894
    Симпатии:
    578
    Адрес:
    Витебск
    Я - пас...
     
    #15
    agajohn нравится это.
  16. agajohn

    Форумчанин

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

    Форумчанин

    Регистрация:
    18 май 2015
    Сообщения:
    429
    Симпатии:
    451
    Адрес:
    То тама, то тута
    Только что попробовал в подгонометрии, всё работает согласно 1-му сообщению в теме.
     
    #17
  18. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Есть масса точек, подгонометрией приходилось бы для каждой точки отдельно выставлять +- 0.02 т.е. 95.174 >> минимум 95.154, максимум 95.194. Для следующей точки 95.252 эти значения минимум и максимум уже не подходят, опять придется перебивать и так с каждой точкой, быстрее вручную.
     
    #18
  19. Qvinto

    Форумчанин

    Регистрация:
    10 дек 2008
    Сообщения:
    5.681
    Симпатии:
    4.223
    Адрес:
    Украина, г.Калуш
    Так точки нужно переделывать или сам текст?
     
    #19
  20. Nov.pashin

    Регистрация:
    19 фев 2019
    Сообщения:
    7
    Симпатии:
    0
    Текст. Есть точки, но в их координатах полная хрень, менять надо текст рядом с ними. Снимок.JPG
     
    #20

Поделиться этой страницей

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