dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Случайные числа в тексте

Случайные числа в тексте

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 06.10.2011, 13:54 #1
Случайные числа в тексте
gugaoy
 
Регистрация: 06.10.2011
Сообщений: 2

gugaoy вне форума Вставить имя

На плане нужно проставить большое число вертикальных отклонений. Они колеблются примерно в промежутке от -7 до +7. В общем,хорошо бы было чтобы я копировал текст(с заведомо заданной формулой),а значение было случайным в нужном мне промежутке. Я нашел код который добавил в AutoCad и теперь при введение команды (random 199 nil) он в командной строке выдает случайно число из промежутка с 1 по 199. Но как прикрутить это к тексту? Или может есть приложение для расширенной работы с текстом. Или какнеть привернуть формулы из ворда или икселя. Помогите ускорить рабочий процесс =)
Просмотров: 7143
 
Непрочитано 06.10.2011, 16:18
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,542
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(defun C:TR1 ()(vk_EntNumSubst))
(defun vk_EntNumSubst (/ From To Diff SS Ent +Sign Num)
 ;;; url http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=23&TID=32763&MID=187089#message187089
  (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)
)
(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)
  )
)


Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; *http://dwg.ru/f/showthread.php?p=218772
;;; *
;;; * _dwgru-random
;;; *
;;;  На основе vk_RandNum
;;;  http://www.caduser.ru/forum/index.php...&TID=32763
;;; *
;;; *
;;; * 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/forum/index.php...&TID=37867
(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)
)

Замена имеющегося числа - случайным
генератор случайных чисел ОЧЕНЬ НУЖЕН
Отклонения в исполнительных семах (строительство)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 06.10.2011, 21:42
#3
gugaoy


 
Регистрация: 06.10.2011
Сообщений: 2


Спасибо!!!!!!!!!! Просто огромное спасибо!!!!!!!!
gugaoy вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 16:30
#4
white_cat


 
Регистрация: 20.06.2013
Сообщений: 7


Может, поможет мне кто с решением моего вопроса.
Нужно, чтобы случайные числа генерировались в пределах от -0,002 до +0,002 с шагом в 0,001. Возможно ли это? Причем знаки + и - тоже должны ставиться, а если будет попадать на 0,000 то без знака. Заранее благодарен.
white_cat вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 16:41
#5
twilight


 
Регистрация: 17.10.2009
Сообщений: 1,109


Цитата:
Сообщение от white_cat Посмотреть сообщение
Может, поможет мне кто с решением моего вопроса.
Нужно, чтобы случайные числа генерировались в пределах от -0,002 до +0,002 с шагом в 0,001. Возможно ли это? Причем знаки + и - тоже должны ставиться, а если будет попадать на 0,000 то без знака. Заранее благодарен.
Это к геодезистам.
twilight вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 16:44
#6
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 9,441


Это вообще к программистам на бейсике (без описания ситуации в АКАД)
__________________
Век живи, век учись - ...
Bull вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 17:25
#7
twilight


 
Регистрация: 17.10.2009
Сообщений: 1,109


Цитата:
Сообщение от Bull Посмотреть сообщение
Это вообще к программистам на бейсике (без описания ситуации в АКАД)
Не. Тема постоянно всплывает в свете выдать липовую исполнительную.
Неоднократно видел с решениями и здесь и не здесь.
twilight вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 17:26
#8
white_cat


 
Регистрация: 20.06.2013
Сообщений: 7


Цитата:
Сообщение от twilight Посмотреть сообщение
Не. Тема постоянно всплывает в свете выдать липовую исполнительную.
Неоднократно видел с решениями и здесь и не здесь.
Это не липовая исполнительная. Это обычное состояние исполнительной
white_cat вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 19:33
1 | #9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,542
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от white_cat Посмотреть сообщение
Может, поможет мне кто с решением моего вопроса.
Нужно, чтобы случайные числа генерировались в пределах от -0,002 до +0,002 с шагом в 0,001. Возможно ли это? Причем знаки + и - тоже должны ставиться, а если будет попадать на 0,000 то без знака. Заранее благодарен.
Указываешь диапазон минимум = -2
максимум=2
делитель = 1000
Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; *http://dwg.ru/f/showthread.php?p=218772
;;; *
;;; * _dwgru-random
;;; *
;;;  На основе vk_RandNum
;;;  http://www.caduser.ru/forum/index.php...&TID=32763
;;; *
;;; *
;;; * 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://forum.dwg.ru/showthread.php?t=73576
(defun c:TRN (/ From To SS Ent Num i Kf dz)
(initget 1)
(setq From (getint "Укажите диапазон. Минимум: "))
(while
  (progn
    (initget 1)
    (not (> (setq To (getint "Укажите диапазон. Максимум: ")) From))
    )
)
  (initget 3)
(setq Kf (getdist "\nУкажите делитель: "))  
(and
(setq SS (ssget "_:L" '((0 . "*TEXT"))))
(setq dz (getvar "DIMZIN"))
(setvar "DImZIN" 0)
(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
                       (cond ((zerop Num)(rtos (/ Num Kf) 2 3))
                             ((minusp NUM)(rtos (/ Num Kf) 2 3))
                             (t (strcat "+" (rtos (/ Num Kf) 2 3)))
                             )
                       )
                 (assoc 1 Ent)
                 Ent
                 )
          )
) ;_ end repeat
(setvar "DImZIN" dz)
)
(princ)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.09.2013, 19:45
#10
white_cat


 
Регистрация: 20.06.2013
Сообщений: 7


Цитата:
Сообщение от VVA Посмотреть сообщение
Указываешь диапазон минимум = -2
максимум=2
делитель = 1000
Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; *http://dwg.ru/f/showthread.php?p=218772
;;; *
;;; * _dwgru-random
;;; *
;;;  На основе vk_RandNum
;;;  http://www.caduser.ru/forum/index.php...&TID=32763
;;; *
;;; *
;;; * 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://forum.dwg.ru/showthread.php?t=73576
(defun c:TRN (/ From To SS Ent Num i Kf dz)
(initget 1)
(setq From (getint "Укажите диапазон. Минимум: "))
(while
  (progn
    (initget 1)
    (not (> (setq To (getint "Укажите диапазон. Максимум: ")) From))
    )
)
  (initget 3)
(setq Kf (getdist "\nУкажите делитель: "))  
(and
(setq SS (ssget "_:L" '((0 . "*TEXT"))))
(setq dz (getvar "DIMZIN"))
(setvar "DImZIN" 0)
(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
                       (cond ((zerop Num)(rtos (/ Num Kf) 2 3))
                             ((minusp NUM)(rtos (/ Num Kf) 2 3))
                             (t (strcat "+" (rtos (/ Num Kf) 2 3)))
                             )
                       )
                 (assoc 1 Ent)
                 Ent
                 )
          )
) ;_ end repeat
(setvar "DImZIN" dz)
)
(princ)
)
Это именно то, что мне нужно спасибо огромное! Но появился еще один вопрос как сделать случайные числа от -0,020 до +0,020 с шагом в 0,005?

Последний раз редактировалось white_cat, 11.09.2013 в 14:43.
white_cat вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.05.2016, 13:26
#11
Fiz


 
Регистрация: 18.12.2015
Сообщений: 16


Подскажите как доработать чтобы он вставлял числа в таблицы Autocad в указанном диапазоне ячеек.
Fiz вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.04.2017, 09:28
#12
Sobir


 
Регистрация: 16.11.2012
Сообщений: 2


Цитата:
Сообщение от white_cat Посмотреть сообщение
Это именно то, что мне нужно спасибо огромное! Но появился еще один вопрос как сделать случайные числа от -0,020 до +0,020 с шагом в 0,005?
какой командой запускается этот лисп?
Sobir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.04.2017, 21:14
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,542
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Sobir Посмотреть сообщение
какой командой запускается этот лисп?
Красной
Цитата:
...
;Text Random number
;;http://forum.dwg.ru/showthread.php?t=73576
(defun c:TRN (/ From To SS Ent Num i Kf dz)
...
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 29.04.2017, 11:23
#14
Sobir


 
Регистрация: 16.11.2012
Сообщений: 2


Цитата:
Сообщение от VVA Посмотреть сообщение
Красной
ОГРОМНЕЙШЕЕ СПАСИБО.
Sobir вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Случайные числа в тексте

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание автоматически обновляемых номеров таблиц в Word и сылок на эти таблицы в тексте МишаИнженер Прочее. Программное обеспечение 11 11.11.2016 14:05
размеры - числа после запятой soulkeeper AutoCAD 9 11.03.2008 11:17
Случайные динамические нагрузки loje4ka Конструкции зданий и сооружений 10 25.01.2008 09:04

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы