liminnet 发表于 2008-10-24 14:41:00

ZZXXQQ 发表于 2008-10-25 11:06:00

本帖最后由 作者 于 2008-10-25 11:07:43 编辑

;改了一下,只不过就能选择一个实体了。在网吧写的未调试。
(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)
)

狂刀无痕 发表于 2008-10-25 12:00:00

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

liminnet 发表于 2008-10-25 23:39:00

liminnet 发表于 2008-11-2 12:05:00

sym123321 发表于 2008-11-19 00:59:00

<p>稍稍改了一下,看看能不能达到你要求。</p><p>上面几楼的那种贴代码的方式怎么弄的?我怎么也做不出来,晕了~</p><p>(defun c:csd (/ ss mode i lst olderr oldcmd rtn pt1 pt2)<br/>&nbsp; (defun myerr (s)<br/>&nbsp;&nbsp;&nbsp; (command "._undo" "e")<br/>&nbsp;&nbsp;&nbsp; (setq *error* olderr)<br/>&nbsp;&nbsp;&nbsp; (setvar "cmdecho" oldcmd)<br/>&nbsp;&nbsp;&nbsp; (prompt "*取消*")<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp; )<br/>&nbsp; (setq oldcmd (getvar "cmdecho"))<br/>&nbsp; (setvar "cmdecho" 0)<br/>&nbsp; (setq&nbsp;olderr&nbsp;*error*<br/>&nbsp;*error*&nbsp;myerr<br/>&nbsp; )<br/>&nbsp; (setq ss (ssget "I"))<br/>&nbsp; (command "._undo" "be")<br/>&nbsp; (if ss<br/>&nbsp;&nbsp;&nbsp; (sssetfirst nil ss)<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;mode (chr 73)<br/>&nbsp;ss&nbsp;&nbsp; nil<br/>&nbsp; )<br/>&nbsp; (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)&lt;"<br/>&nbsp;&nbsp;&nbsp; mode<br/>&nbsp;&nbsp;&nbsp; "&gt;选择对象: "<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq rtn (grread nil 14 2))<br/>&nbsp; (while (and (= (car rtn) 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (and (/= (last rtn) 79)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (/= (last rtn) 111)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (/= (last rtn) 73)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (/= (last rtn) 105)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (/= (last rtn) 13)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (/= (last rtn) 32)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (prompt "\n*无效选择*")<br/>&nbsp;&nbsp;&nbsp; (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)&lt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&gt;选择对象: "<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq rtn (grread nil 14 2))<br/>&nbsp;&nbsp;&nbsp; (while (and&nbsp;(= (car rtn) 2)<br/>&nbsp;&nbsp;(or (= (last rtn) 79)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (last rtn) 111)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (last rtn) 73)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (last rtn) 105)<br/>&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (or (= (last rtn) 73) (= (last rtn) 105))<br/>&nbsp;(setq mode (chr 73))<br/>&nbsp;(setq mode (chr 79))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)&lt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&gt;选择对象: "<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rtn (grread nil 14 2))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (while (and (= (car rtn) 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (or (= (last rtn) 79)<br/>&nbsp;&nbsp;&nbsp; (= (last rtn) 111)<br/>&nbsp;&nbsp;&nbsp; (= (last rtn) 73)<br/>&nbsp;&nbsp;&nbsp; (= (last rtn) 105)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(or (= (last rtn) 73) (= (last rtn) 105))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq mode (chr 73))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq mode (chr 79))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (prompt (strcat "\n剪掉多段线的内部(In)还是外部(Out)&lt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&gt;选择对象: "<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq rtn (grread nil 14 2))<br/>&nbsp; )<br/>&nbsp; (if (or (= (car rtn) 11)<br/>&nbsp;&nbsp; (and (= (car rtn) 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (or (= (last rtn) 13) (= (last rtn) 32))<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ss (ssget "I" '((0 . "*polyline"))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq mode (chr 73))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if (= (car rtn) 3)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt1 (last rtn))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (setq pt2 (getcorner pt1))<br/>&nbsp;(progn<br/>&nbsp;&nbsp; (command "._select" "_box" pt1 pt2 pause)<br/>&nbsp;&nbsp; (setq ss (ssget "P" '((0 . "*polyline"))))<br/>&nbsp;&nbsp; (setq mode (chr 73))<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if ss<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "._zoom" "o" ss "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;(if (= mode "I")<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq lst (ko-get-&gt;list-offsetpline (ssname ss i) t 3))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command "._trim" (ssname ss i) "" "f")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (foreach x lst (command "non" x))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command (car lst) "" "")<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq lst (ko-get-&gt;list-offsetpline (ssname ss i) nil 3))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command "._trim" (ssname ss i) "" "f")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (foreach x lst (command "non" x))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command (car lst) "" "")<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (command "._undo" "e")<br/>&nbsp; (setq *error* olderr)<br/>&nbsp; (setvar "cmdecho" oldcmd)<br/>&nbsp; (princ)<br/>)</p><p></p>

xgr 发表于 2008-11-19 08:31:00

本帖最后由 作者 于 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]
查看完整版本: 本人想学习这种情况是怎么写的,望会的教教我