;改了一下,只不过就能选择一个实体了。在网吧写的未调试。
(defun c:csd(/ ss mode lst)
(setq mode "I" ss nil)
(if (progn
(while (and (not ss) (wcmatch (cdr(assoc(entget(car ss)))) "*POLYLINE")) ;
(initget "I O")
(setq ss (entsel (strcat "\n剪掉多段线的内部(In)还是外部(Out)<" mode ">")))
(if (or (= ss "O") (= ss "I")) (setq ss nil))
)
(/= ss nil)
)
(progn
(setvar "cmdecho" 0)
(command "._undo" "be")
(command "._zoom" "o" ss "")
(setq i 0)
(if (= mode "I")
(progn
(setq lst (ko-get->list-offsetpline (car ss) t 3))
(command "._trim" (car ss) "" "f")
(foreach x lst (command "non" x))
(command (car lst) "" "")
)
(progn
(setq lst (ko-get->list-offsetpline (car ss) nil 3))
(command "._trim" (ssname ss i) "" "f")
(foreach x lst (command "non" x))
(command (car lst) "" "")
)
)
)
)
(command "._undo" "e")
(setvar "cmdecho" 1)
(princ)
)
(if (or (setq ss (ssget '((0 . "*polyline"))));空选为o
(setq ss2 (ssget '((0 . "*polyline")))))
(progn
(if ss (setq k T))
(setq lst (ko-get->list-offsetpline ss k 3))
(command "._trim" (ssname (if k ss ss2) i) "" "f")
(foreach x lst (command "non" x))
(command (car lst) "" "")
)
) <p>稍稍改了一下,看看能不能达到你要求。</p><p>上面几楼的那种贴代码的方式怎么弄的?我怎么也做不出来,晕了~</p><p>(defun c:csd (/ ss mode i lst olderr oldcmd rtn pt1 pt2)<br/> (defun myerr (s)<br/> (command "._undo" "e")<br/> (setq *error* olderr)<br/> (setvar "cmdecho" oldcmd)<br/> (prompt "*取消*")<br/> (princ)<br/> )<br/> (setq oldcmd (getvar "cmdecho"))<br/> (setvar "cmdecho" 0)<br/> (setq olderr *error*<br/> *error* myerr<br/> )<br/> (setq ss (ssget "I"))<br/> (command "._undo" "be")<br/> (if ss<br/> (sssetfirst nil ss)<br/> )<br/> (setq mode (chr 73)<br/> ss nil<br/> )<br/> (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)<"<br/> mode<br/> ">选择对象: "<br/> )<br/> )<br/> (setq rtn (grread nil 14 2))<br/> (while (and (= (car rtn) 2)<br/> (and (/= (last rtn) 79)<br/> (/= (last rtn) 111)<br/> (/= (last rtn) 73)<br/> (/= (last rtn) 105)<br/> (/= (last rtn) 13)<br/> (/= (last rtn) 32)<br/> )<br/> )<br/> (prompt "\n*无效选择*")<br/> (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)<"<br/> mode<br/> ">选择对象: "<br/> )<br/> )<br/> (setq rtn (grread nil 14 2))<br/> (while (and (= (car rtn) 2)<br/> (or (= (last rtn) 79)<br/> (= (last rtn) 111)<br/> (= (last rtn) 73)<br/> (= (last rtn) 105)<br/> )<br/> )<br/> (if (or (= (last rtn) 73) (= (last rtn) 105))<br/> (setq mode (chr 73))<br/> (setq mode (chr 79))<br/> )<br/> (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)<"<br/> mode<br/> ">选择对象: "<br/> )<br/> )<br/> (setq rtn (grread nil 14 2))<br/> )<br/> )<br/> (while (and (= (car rtn) 2)<br/> (or (= (last rtn) 79)<br/> (= (last rtn) 111)<br/> (= (last rtn) 73)<br/> (= (last rtn) 105)<br/> )<br/> )<br/> (if (or (= (last rtn) 73) (= (last rtn) 105))<br/> (setq mode (chr 73))<br/> (setq mode (chr 79))<br/> )<br/> (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)<"<br/> mode<br/> ">选择对象: "<br/> )<br/> )<br/> (setq rtn (grread nil 14 2))<br/> )<br/> (if (or (= (car rtn) 11)<br/> (and (= (car rtn) 2)<br/> (or (= (last rtn) 13) (= (last rtn) 32))<br/> )<br/> )<br/> (progn<br/> (setq ss (ssget "I" '((0 . "*polyline"))))<br/> (setq mode (chr 73))<br/> )<br/> )<br/> (if (= (car rtn) 3)<br/> (progn<br/> (setq pt1 (last rtn))<br/> (if (setq pt2 (getcorner pt1))<br/> (progn<br/> (command "._select" "_box" pt1 pt2 pause)<br/> (setq ss (ssget "P" '((0 . "*polyline"))))<br/> (setq mode (chr 73))<br/> )<br/> )<br/> )<br/> )<br/> (if ss<br/> (progn<br/> (command "._zoom" "o" ss "")<br/> (setq i 0)<br/> (repeat (sslength ss)<br/> (if (= mode "I")<br/> (progn<br/> (setq lst (ko-get->list-offsetpline (ssname ss i) t 3))<br/> (command "._trim" (ssname ss i) "" "f")<br/> (foreach x lst (command "non" x))<br/> (command (car lst) "" "")<br/> )<br/> (progn<br/> (setq lst (ko-get->list-offsetpline (ssname ss i) nil 3))<br/> (command "._trim" (ssname ss i) "" "f")<br/> (foreach x lst (command "non" x))<br/> (command (car lst) "" "")<br/> )<br/> )<br/> (setq i (1+ i))<br/> )<br/> )<br/> )<br/> (command "._undo" "e")<br/> (setq *error* olderr)<br/> (setvar "cmdecho" oldcmd)<br/> (princ)<br/>)</p><p></p> 本帖最后由 作者 于 2008-11-19 8:32:28 编辑 <br /><br /> <p>看看这里的,希望对你有帮助。</p><p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62464">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62464</a></p>
页:
[1]