Glen1980 发表于 2022-7-6 06:21:47

LISP统计镜像块。

上周,我为我们的新办公室布局(约160个座位)制定了一系列选项,现在有人问我是否可以数一数有手的桌子。
 
由于我的时间表是手动完成的,我选择相似或使用Lee Macs块计数器来计算嵌套块,我无法轻松做到这一点,因为我只是镜像桌子,而不是使用单独的块。
 
有人有计算镜像块的代码吗?

GP_ 发表于 2022-7-6 06:31:02

尝试
 

(defun c:cmb ()
   (princ
       (strcat "N. "
               (itoa (sslength (ssget "_X" (list '(0 . "INSERT") (cons 41 -1.0)))))
               " mirrored blocks in dwg"
       )
   )
   (princ)
)

Glen1980 发表于 2022-7-6 06:36:50

谢谢,效果很好!
 
它确实选择了我可能看到的所有镜像块,如果我可以将其插入现有的LISP中,那么我可以计算特定的镜像块。我还刚刚意识到,我可以使用快速选择->块->比例x=-1,它突出显示了所有这些(此外,它给了我与您的代码相同的答案,所以我肯定是一个赢家。)
 
不过,不要告诉我完整的答案,我想学习

Tharwat 发表于 2022-7-6 06:39:47

 
尝试此代码,并在运行例程后检查命令行。
 

(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)
)

Stefan BMR 发表于 2022-7-6 06:42:33

...只考虑其他情况:
(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)
)

Glen1980 发表于 2022-7-6 06:50:36

</blockquote>

Tharwat 发表于 2022-7-6 06:55:44

@GP_如果将任何选定块缩放到任何其他比例因子,则编码不会在选择集中获得该块。

GP_ 发表于 2022-7-6 06:57:47

格伦,不客气。
 
塔瓦,你说得对,我写得太快了。。。

Tharwat 发表于 2022-7-6 07:05:52

 
你还因为速度太快把我的名字写错了

GP_ 发表于 2022-7-6 07:10:31

已更正。
页: [1] 2
查看完整版本: LISP统计镜像块。