CAD在大面积的填充中,如何检查有没有重复填充?

如题所述

用手工检查的话,有点不适合,效率低,可以使用autoLISP来查找填充是否重叠。

(defun C:ZX69查找填充是否重复 ( / #k1 #os1 #p2 &k1 &k2 &kw1 &kw2 i p1 ss x)
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (setvar "dimzin" 0)
 (vl-load-com) ;;加载vlax扩展函数
 (setq #os1 (getvar "osmode"))
 (princ "\n请选择填充")
 (setq &kw1 (ssget '((0 . "HATCH"))))
 (if (/= &kw1 nil)
  (progn
   (setvar "osmode" 0)
   (setq &k1 (ssname &kw1 0) ss (ssadd))
   (while &k1
    (setq &kw1 (ssdel &k1 &kw1);取得填充对象
          #k1 (entget &k1);取得填充属性
          #p2 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 11 (car x)) ) #k1))
          ;取得填充各个端点
          p1 (car #p2)
          #p2 (reverse #p2)
          #p2 (cons p1 #p2)
    )
    (setq &kw2 (ssget "f" #p2 '((0 . "HATCH"))));根据端点搜索填充
    (if (and (/= &kw2 nil) (> (sslength &kw2) 1));如果找到的填充超过两个那么就选择出来。
     (progn
      (setq i 0)
      (repeat (sslength &kw2)
       (setq &k2 (ssname &kw2 i)
             ss (ssadd &k2 ss)
             i (+ i 1)
       )
      )
     )
    )
    (setq &k1 (ssname &kw1 0))
   )
   (setvar "osmode" #os1)
   (if (> (sslength ss) 0) (sssetfirst nil ss))
  )
 )
 (prin1)
);复制到记事本,以【.lsp】为后缀命名,autoLISP程序加载了,命令:ZX69,就可以查找重叠的填充了。追问

加载你编辑的程序,但是输入命令出现“未知。怎么解决呢?

追答

文件命名?你文件是怎么命名的,autoLISP文件后缀是【.lsp】,

只有这个后缀才可以加载。

温馨提示:答案为网友推荐,仅供参考
相似回答