Autocad lisp中帮忙写一段,可以随机产生整数的代码
1个回答
展开全部
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程序,现在我想把批量的断点坐标一次性的导入进去,有没有办法呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |