实例图纸 我从你的dwg上看出来,你也想修剪一下。试着去theSwamp。组织并搜索CookieCutter2或使用Express Tools Extrim。 我很担心。
是的,CookieCutter2可能是最好的选择。 不,这是一个例子。
我需要一个操作,包括extrim和擦除闭合多段线中的所有对象。 所以只需执行extrim,然后使用提供的例程。
在同样的情况下,我只执行extrim,然后我编写了一个小例程,它将删除我没有选择的所有内容。我们只讨论了两个步骤。
这是:http://www.cadtutor.net/forum/showpost.php?p=305140&postcount=70 谢谢你的关注。
这是一个好主意:首先运行extrim命令,然后删除多段线内外的所有对象。
但主要问题是,当闭合多段线的形状不规则时,如何选择多段线内外的对象。 探索选择选项:
(defun c:EIO (/ _p2ss o ent ssIn ssOut)
;; Erase Inside/Outside of selected LWPolyline (objects touching LWPolyline are deleted)
;; Alan J. Thompson, 04.02.10
(or *EIO:Opt* (setq *EIO:Opt* "Inside"))
(setq _p2ss (lambda (ename)
(ssget "_CP"
((lambda (e / l)
(foreach x e (and (eq 10 (car x)) (setq l (cons (cdr x) l))))
(reverse l)
) ;_ lambda
(entget ename)
)
) ;_ ssget
) ;_ lambda
) ;_ setq
(and (setq o (car (entsel "\nSelect LWPolyline: ")))
(or (eq "LWPOLYLINE" (cdr (assoc 0 (setq ent (entget o)))))
(alert "Invalid object!")
) ;_ or
(not (initget 0 "Inside Outside"))
(setq *EIO:Opt*
(cond
((getkword (strcat "\nSpecify erase option <" *EIO:Opt* ">: ")))
(*EIO:Opt*)
) ;_ cond
) ;_ setq
(cond
((and (eq *EIO:Opt* "Inside") (setq ssIn (_p2ss o)))
((lambda (i)
(while (setq e (ssname ssIn (setq i (1+ i))))
(or (eq o e) (vl-catch-all-apply (function entdel) (list e)))
) ;_ while
) ;_ lambda
-1
)
)
((eq *EIO:Opt* "Outside")
(setq ssIn(_p2ss o)
ssOut (ssget "_X" (list (cons 410 (getvar 'ctab))))
) ;_ setq
((lambda (i)
(while (setq e (ssname ssOut (setq i (1+ i))))
(if ssIn
(or (ssmemb e ssIn) (eq o e) (vl-catch-all-apply (function entdel) (list e)))
(or (eq o e) (vl-catch-all-apply (function entdel) (list e)))
) ;_ if
) ;_ while
) ;_ lambda
-1
)
)
) ;_ cond
) ;_ and
(princ)
) ;_ defun
见鬼,我们为你提供了三个独立的例程。 谢谢大家对我的关心。
我试着以最好的方式利用你的日常生活。
我感谢所有人。
页:
1
[2]