vladimirzm 发表于 2005-12-20 01:09:15

取得随机数

我如何将随机数(通过RND生成)存储在用户1
该图中?set variable“useri 1”,((10 * Rnd) + 1)返回错误
**** Hidden Message *****

Arizona 发表于 2005-12-20 02:14:07

这是你想要的,但它冷得更好
Public Sub TESTRND()
Dim num As Double, e As Double
e = 0.25 ' MUST BE INITIALIZED TO SOMETHING, OR IT REPEATS THE SAME NUMBER
num = (10 * (Rnd(e)) + 1)
ThisDrawing.SetVariable "Userr1", num
End Sub

vladimirzm 发表于 2005-12-20 06:34:20

感谢
USERRx或USERIx返回相同的东西...错误
嗯,实际上我正在尝试从Vlisp存储。例如:
(defun msgbox (title button msg / useri1 r)   
(setq useri1 (getvar "useri1"))
(vla-eval
    (vlax-get-acad-object)
    (strcat
      "ThisDrawing.SetVariable \"USERI1\","
      "MsgBox (\""
      msg
      "\","
      (itoa button)
      ",\""
      title
      "\")"
    )
)
(setq r (getvar "useri1"))
(setvar "useri1" useri1)
r
)
这工作得很好,允许我在没有DCL的情况下显示基本界面... msgbox返回一个存储在USERI1中的值,那么我可以毫无麻烦地使用它。
以同样的方式,我认为
ThisDrawing.SetVariable "USERI1", ((10 * Rnd) + 1)
将起作用

Keith™ 发表于 2005-12-20 08:51:26

我看到的唯一问题是,useri1存储一个整数,而rnd(至少在vba中)生成一个实数(double)

vladimirzm 发表于 2005-12-20 10:01:51

如果您将RND调用的值放在一个变量中,您应该能够将它放在useri1中,而不会发生意外,或者至少将数据从一个变量移动到一个整型变量,然后再移动到useri1中

Kerry 发表于 2005-12-20 10:37:50

ThisDrawing.SetVariable “USERR1”, (CDbl ((10 * Rnd) + 1))
应该可以正常工作...

Kerry 发表于 2005-12-20 10:55:35

好!
技巧书的另一行!
谢谢!

Keith™ 发表于 2005-12-28 07:56:56

我不相信你必须转换calc结果,只要确保其中一个数字常量是真实的
ThisDrawing.SetVariable "USERR1", ((10.0 * Rnd) + 1)
页: [1]
查看完整版本: 取得随机数