bono05 发表于 2022-7-5 19:47:21

可以做额外的东西

你好
 
此例程删除属于相同组名的重复块。
那太好了,但我想在他删除之前先看看哪一个是重复的!
 
事实上,他只说了“删除x块”,但你不知道在计划的哪里。
 
因此,在发出命令后,可以执行以下操作:
1) 通过选择,可以看到所有重复块的位置
2) 然后删除
 
非常感谢。

BIGAL 发表于 2022-7-5 20:00:15

您可能在这个命令(vla delete objc)之前放了一些东西,比如未测试的(getstring“press enter”)。

bono05 发表于 2022-7-5 20:07:58

我只是复制/粘贴。。。我不懂lisp代码。
这就是我寻求帮助的原因。

Tharwat 发表于 2022-7-5 20:17:17

试试这个程序,让你知道事情进展如何。
 

(defun c:Test (/ b nm bks ss i sn e l lst g n)
;;------------------------------------;;
;;        Tharwat 20.05.2015                ;;
;;        Highligh Duplicated blocks        ;;
;;------------------------------------;;
(while (setq b (tblnext "BLOCK" (not b)))
   (if (and (not (assoc 1 b))
            (not (wcmatch (setq nm (cdr (assoc 2 b))) "*|*"))
       )
   (setq bks (cons nm bks))
   )
)
(princ
   "\nSelect Blocks to highligh duplicates in position :"
)
(if (setq g(ssadd)
         ss (ssget
                "_:L"
                (list
                  '(0 . "INSERT")
                  (cons
                  2
                  (apply 'strcat (mapcar '(lambda (u) (strcat u ",")) bks))
                  )
                )
            )
   )
   (progn
   (repeat (setq i (sslength ss))
       (setq sn (ssname ss (setq i (1- i)))
             e(entget sn)
             l(cons (list sn (cdr (assoc 10 e))) l)
       )
   )
   (mapcar '(lambda (p)
                (if (vl-some '(lambda (q)
                              (and
                                  (equal (cadr p) (cadr q) 1e-4)
                                  (not (eq (car p) (car q)))
                                  (not (member (cadr q) lst))
                              )
                              )
                           l
                  )
                  (progn
                  (setq lst (cons (cadr p) lst))
                  (ssadd (car p) g)
                  )
                )
            )
             l
   )
   (if (< 0 (setq n (sslength g)))
       (princ (strcat "\nNumber of Duplicated Blocks found [ "
                      (itoa n)
                      " ] :"
            )
       )
       (princ "\nNo duplicate Blocks found !")
   )
   )
)
(sssetfirst nil g)
(princ)
)

bono05 发表于 2022-7-5 20:24:26

塔尔瓦特。。。。再一次
 
此lisp还会选择一个在我的平面中不重复的外部参照。
是否可以仅对块使用此选项,而不使用外部参照选项?
谢谢

Tharwat 发表于 2022-7-5 20:38:37

一次又一次
 
以上代码已更新。

bono05 发表于 2022-7-5 20:43:34

再一次。。。太棒了!!!
下次见
 
非常感谢。

Tharwat 发表于 2022-7-5 20:54:38

 
 
不客气。
页: [1]
查看完整版本: 可以做额外的东西