我会尝试这样的方式:
- (defun c:randset (/ ss sl i en el ep pct qty); rs)
- ;;;SMadsen Random Number
- (defun 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)))
- (cond ((setq ss (ssget "X"))
- (setq sl (sslength ss)
- i -1)
- (while (setq en (ssname ss (setq i (1+ i))))
- (setq el (cons en el))))
- (T (alert "\nNo Entities Found")
- (exit)))
- (initget 7)
- (setq pct (getreal "\nPercentage To Randomly Choose: "))
- (setq qty (fix (* sl pct 0.01)))
- (setq rs (ssadd))
- (while (> qty (sslength rs))
- (setq ep (fix (* sl (randnum)))
- en (nth ep el))
- (if (not (ssmemb en rs))
- (ssadd en rs)))
- (eval rs))
- ;Return Set RS
-大卫 |