Flter非均匀缩放blo
使用“ssget”,我想过滤非均匀缩放块。(setq ss (ssget (list '(0 . "INSERT"))))
有什么好主意吗?谢谢 你好
您可能需要将1.0的值更改为所需的值。
(setq ss (ssget '((-4 . "<NOT")
(-4 . "<AND")
(0 . "INSERT")
(41 . 1.0)
(42 . 1.0)
(43 . 1.0)
(-4 . "AND>")
(-4 . "NOT>")
)
)
)
谢谢塔瓦。
但这不是我需要的。
我需要选择均匀缩放的块。
例(41.1.0)(42.1.0)(43.1.0)
(41 . 2.0)(42 . 2.0)(43 . 2.0)
(41 . 3.0)(42 . 3.0)(43 .3.0).... 等 我知道使用“entsel”函数可以做到这一点:
(setq blkref (car (entsel "\n>>>Choose a block:")))
(if (not(= (cdr(assoc 41 (entget blkref))) (cdr(assoc 42 (entget blkref))) (cdr(assoc 43 (entget blkref)))))
(progn
(alert "\nNOT support non-uniformly scaled block.")
t
)
(progn
我真的不确定你能用不同的X、Y和Z比例值过滤许多块,但你只能有一个,正如我在第一个回复中所演示的那样。
否则,您可以创建一个块选择集,然后在每个块对象之间循环,并在其比例X、Y、Z匹配时将对象添加到列表中。
可能需要编写一个子函数。
试试看,如果你需要帮助,请告诉我。
可能需要1天或更长时间。我会努力的。
不,很简单。
如果你不尝试给出至少75%的代码正确,我将不再回复你的任何帖子。
这有什么建议吗?谢谢
(defun newss(/ ss i ename )
(while
(if (null(setq ss (ssget (list '(0 . "INSERT")))))
(progn
(alert "\nNothing select. Try again.")
t
)
(progn
(repeat (setq i (sslength ss))
(setq ename (ssname ss (setq i (1- i))))
(if
(not
(= (cdr(assoc 41 (entget ename)))(cdr(assoc 42 (entget ename)))(cdr(assoc 43 (entget ename))))
)
(setq ename(ssdel ename ss))
)
)
nil
)
)
)
ename
)
因此,如果需要,请使用此新选择集。
; test
(setq en (newss))
(command "_.move" en "")
页:
[1]
2