Тема: Прошу помощи.

Есть лисп DIMRR. Его задача проставить по выбранным размерам размер в знаменатель с поправкой в указанном диапазоне. При его запуске предлагается выбрать диапазон, далее предлагает выбрать размер, жму интер в ком строке "no function definition: VK_RANDNUM". В чем может быть проблема? AutoCAD 2008 rus. Спасибо.
код:

(defun c:DIMRR (/ *actdoc* selset item temp_text i To From +Sign Diff Num)
  (vl-load-com)
  (setq *actdoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *actdoc*)
(initget 5)
(setq To (getreal "Max величина разброса значений: "))
(setq From (- 0 To))
(setq +Sign (if (< From 0)
"+"
""
)
)
(setq Diff (- To From))
  (setq selset (ssget "_:L" '((0 . "DIMENSION"))) i '-1)
  (while (and selset
         (setq item (ssname selset (setq i (1+ i))))
         ) ;_ end of and
    (if   (and (member '(100 . "AcDbAlignedDimension") (entget item))
     (setq item (vlax-ename->vla-object item))
     (member (vla-get-textoverride item) '("" "<>"))
        )   
      (progn
   (setq dmob (vla-copy item))
   (vlax-put-property dmob "textcolor" 1)
   (setq dimtext
   (rtos (vla-get-measurement dmob)
      (vla-get-UnitsFormat dmob) (vla-get-PrimaryUnitsPrecision dmob)))
   (setq dimtext (atof dimtext))
        (setq Num (- To (* Diff (vk_RandNum))))
   (setq dimtext (+ dimtext Num))
   (setq dimtext (rtos dimtext
      (vla-get-UnitsFormat dmob) (vla-get-PrimaryUnitsPrecision dmob)))
   (if (/= (vla-get-DecimalSeparator dmob) ".")
     (setq dimtext
       (vl-string-subst (vla-get-DecimalSeparator dmob) "."  dimtext)
      )
     )
   (vla-put-TextOverride dmob (strcat "\\X" dimtext))
   (entmod
     (subst (cons 8 "Фактический размер")
       (assoc 8 (setq item (entget(vlax-vla-object->ename dmob))))
       item)
     )
   ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of while
  (vla-endundomark *actdoc*)
  (princ)
  ) ;_ end of defun

Re: Прошу помощи.

Вопрос снят, проблема решилась добавлением в код функции VK_RANDNUM:

(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)
)
)

(изменено: geo_rva, 25 апреля 2015г. 09:50:31)

Re: Прошу помощи.

Нельзя ли создать аналогичный лисп, который бы проставлял случайные фактические размеры с поправкой в указанном диапазоне в знаменатель оригинального размера, не создавая дубликат размера?
Сам, к сожалению, программировать на LISP не умею.

Re: Прошу помощи.

geo_rva пишет:

Нельзя ли создать аналогичный лисп, который бы проставлял случайные фактические размеры с поправкой в указанном диапазоне  в знаменатель оригинального размера , не создавая дубликат размера?

Сам, к сожалению, программировать на LISP не умею.

http://geodesist.ru/forum/threads/ПОДГО … ocad.4614/

(изменено: geo_rva, 28 апреля 2015г. 11:19:59)

Re: Прошу помощи.

К сожалению, ПОДГОНОМЕТРИЯ не оставляет оригинальный размерный текст, заменяя или изменяя его.
Задача - в простановке факта по принципу: числитель - проект, знаменатель - факт. Факт (в знаменателе) равен проекту (т.е. оригинальному размерному тексту) плюс-минус указанный диапазон. DIMRR подходит хорошо. Я добавил "<>\\X" вместо "\\X", получая проект/факт в дублированном размере, а оригинальный размер стираю вручную. Вот стирания оригинала вручную я и хотел избежать.
Проще говоря, нужно чтобы обычный размер превратился в размер с числителем  и знаменателем. В числителе - <>, в знаменателе - факт, равный <> + случайное число в указанном диапазоне.