LISP统计镜像块。
上周,我为我们的新办公室布局(约160个座位)制定了一系列选项,现在有人问我是否可以数一数有手的桌子。由于我的时间表是手动完成的,我选择相似或使用Lee Macs块计数器来计算嵌套块,我无法轻松做到这一点,因为我只是镜像桌子,而不是使用单独的块。
有人有计算镜像块的代码吗? 尝试
(defun c:cmb ()
(princ
(strcat "N. "
(itoa (sslength (ssget "_X" (list '(0 . "INSERT") (cons 41 -1.0)))))
" mirrored blocks in dwg"
)
)
(princ)
) 谢谢,效果很好!
它确实选择了我可能看到的所有镜像块,如果我可以将其插入现有的LISP中,那么我可以计算特定的镜像块。我还刚刚意识到,我可以使用快速选择->块->比例x=-1,它突出显示了所有这些(此外,它给了我与您的代码相同的答案,所以我肯定是一个赢家。)
不过,不要告诉我完整的答案,我想学习
尝试此代码,并在运行例程后检查命令行。
(defun c:Test (/ j ss i e)
(if (setq j 0 ss (ssget "_X" (list '(0 . "INSERT")(cons 410 (getvar 'CTAB)))))
(repeat (setq i (sslength ss))
(setq e (entget (ssname ss (setq i (1- i)))))
(if (minusp (cdr (assoc 41 e)))
(setq j (1+ j)))
)
)
(princ (strcat "\n Total of Mirrored Block : ( " (itoa j) " )"))
(princ)
)
...只考虑其他情况:
(defun C:TEST ( / ss1 ss i en n ob a l)
(if
(setq ss1 (ssadd) ss (ssget '((0 . "INSERT"))))
(repeat (setq i (sslength ss))
(setq i (1- i)
en (ssname ss i)
ob (vlax-ename->vla-object en)
)
(if
(minusp (* (vla-get-XScaleFactor ob) (vla-get-YScaleFactor ob)))
(progn
(setq n (vla-get-EffectiveName ob)
ss1 (ssadd en ss1)
)
(if
(setq a (assoc n l))
(setq l (subst (cons n (1+ (cdr a))) a l))
(setq l (cons (cons n 1) l))
)
)
)
)
)
(foreach x l
(princ "\n")
(princ (car x))
(princ " --> ")
(princ (cdr x))
(princ " pcs.")
)
(sssetfirst nil ss1)
(princ)
) </blockquote> @GP_如果将任何选定块缩放到任何其他比例因子,则编码不会在选择集中获得该块。 格伦,不客气。
塔瓦,你说得对,我写得太快了。。。
你还因为速度太快把我的名字写错了 已更正。
页:
[1]
2