Autocad lisp中帮忙写一段,可以随机产生整数的代码

 我来答
悄悄de爱上
2017-11-10 · TA获得超过2050个赞
知道小有建树答主
回答量:597
采纳率:66%
帮助的人:342万
展开全部

AUTOLISP立面是没有真正意义上的随机数算法的,所以如果要在lisp使用随机数只有利用其他数值获得伪随机数,常用的就是获取时间,即

(getvar "cdate")

以此来获取当前时间(整数部分为年月日,小数部分为时分秒,精确到0.01秒),cad中直接输入cdate也可以获取数值。一般情况会取秒及秒以后的一共三位数作为随机数(只能取这三位,因为十秒位是六进一,即每60秒直接进到分位,该位不会出现6 7 8 9这四个数,所以一般不考虑。)

如果你需要的随机整数刚好小于1000,则可以用这种方法。详细:

(defun random(@site / @date @random);@site作为随机数位数,定义为1,2,3分别对应0-9,0-99,0-999
    (if(or(< 1 @site)(> 3 @site))(exit));如果@site大于3或小于3则函数停止
    (setq @date(* 100000000 (getvar "cdate")));获取当前时间并去掉小数点赋值到@date
    (setq @remValue 1);赋值除数为1
    (repeat @site
        (setq @remValue(* 10 @remValue))
    );循环次数等于保留位数,如果三次则@remValue等于1000,两次100,一次10
    (setq @random (rem @date @remValue));将@date保留最后若干位,赋值到@random
)

之后,如果要获取随机数只需要(random 1)或者(random2)、(random 3)即可获取一位、两位、三位伪随机数。

追问
我自己写了一个画固定样式多段线的lisp程序,现在我想把批量的断点坐标一次性的导入进去,有没有办法呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式