flopo 发表于 2022-7-6 10:19:26

随机选择

大家好,
可以随机选择吗?假设我有一个包含所有可能在二维图形中的实体的图形,我想从所有实体中随机选择10%?也许可以选择给出随机选择的百分比?
谢谢

David Bethel 发表于 2022-7-6 10:29:05

我会尝试这样的方式:
 

(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


 
-大卫

flopo 发表于 2022-7-6 10:33:37

谢谢你,大卫!

David Bethel 发表于 2022-7-6 10:42:53

不客气。
 
我建议你不要用同一个请求在各种论坛上“捣乱”。我们很多人都参加了多个团体,这并不是一个好兆头-大卫

marmo 发表于 2022-7-6 10:45:31

您好:)
我还没有想出如何操作Lisp程序。
我认为这会创建一个选择集,但如何选择一组对象呢?
例如,我需要在一个有100个块的图形中随机选择20个块。
这个lisp提供了选择集的名称,但是如何选择它们呢?
谢谢
马可

Lee Mac 发表于 2022-7-6 10:51:52

你好,Marco,
 
查看sssetfirst函数

marmo 发表于 2022-7-6 10:56:25

嗨,李!
 
集合的名称如下:
使用“sssetfirst”选择它的正确语法是什么?
谢谢
马可

Lee Mac 发表于 2022-7-6 11:01:54

我建议您首先阅读SSSET上的VLIDE帮助文件,因为这些文件将回答您的所有问题,但是:
 
(sssetfirst nil (c:randset))
 
应该有效。

marmo 发表于 2022-7-6 11:11:20


 
作品
 
完美的
 
谢谢李!
 
马可

David Bethel 发表于 2022-7-6 11:16:11

或者如果您正在使用命令行
 

Command:_.Select
SELECT
Select objects: !rs
<Selection set: 2>
20 found

Select objects:

 
在你跑完randset之后-大卫
页: [1] 2
查看完整版本: 随机选择