![]() |
本人想学习这种情况是怎么写的,望会的教教我
本人想学习这种情况是怎么写的,望会的教教我
www.dimcax.com 本人想学习这种情况是怎么写的,望会的教教我 (defun c:csd(/ ss mode i lst) (if (and (setq ss (ssget '((0 . "*polyline")))) (setq mode (getstring "\n剪掉多段线的内部(in)还是外部(qut)<i>"))) (progn (setvar "cmdecho" 0) (command "._undo" "be") (command "._zoom" "o" ss "") (setq i 0) (repeat (sslength ss) (if (or (= mode "") (= (strcase mode) "i")) (progn (setq lst (ko-get->list-offsetpline (ssname ss i) t 3)) (command "._trim" (ssname ss i) "" "f") (foreach x lst (command "non" x)) (command (car lst) "" "") ) (progn (setq lst (ko-get->list-offsetpline (ssname ss i) nil 3)) (command "._trim" (ssname ss i) "" "f") (foreach x lst (command "non" x)) (command (car lst) "" "") ) ) (setq i (1+ i)) ) ) ) (command "._undo" "e") (setvar "cmdecho" 1) (princ) ) ;各位大哥,上面的程序共有两步提示, 命令: csd 选择对象: 找到 1 个 选择对象: 剪掉多段线的内部(in)还是外部(out)<i> 本人很想学习这种提示方式是怎么写的,就是想程序一运行就提示: 命令: csd 剪掉多段线的内部(in)还是外部(out)<i>选择对象: 就是上面的样子,如果选择对象后,回车就结束程序,按默认的选项i来处理程序 如果这时不选择对象,而输入o则变成这样子 剪掉多段线的内部(in)还是外部(out)<o>选择对象: 再次提示选择对象,如果回车就按o选项的来处理, 本人这样做的目的是一般用i比较多,所以想省掉一步,这样就提高效果啦, 望大哥们教教小弟,谢谢 d ;改了一下,只不过就能选择一个实体了。在网吧写的未调试。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ( c:csd( ss mode lst) ( mode "i" ss nil) ( ( ( ( ( ss) ( ((assoc((car ss)))) "*polyline")) ; ( "i o") ( ss ( ( "\n剪掉多段线的内部(in)还是外部(out)<" mode ">"))) ( ( ( ss "o") ( ss "i")) ( ss nil)) ) ( ss nil) ) ( ( "cmdecho" 0) ( "._undo" "be") ( "._zoom" "o" ss "") ( i 0) ( ( mode "i") ( ( lst (ko-get->list-offsetpline ( ss) t 3)) ( "._trim" ( ss) "" "f") ( x lst ( "non" x)) ( ( lst) "" "") ) ( ( lst (ko-get->list-offsetpline ( ss) nil 3)) ( "._trim" ( ss i) "" "f") ( x lst ( "non" x)) ( ( lst) "" "") ) ) ) ) ( "._undo" "e") ( "cmdecho" 1) () ) 踅摸 d ( ( ( ss ( '((0 . "*polyline"))));空选为o ( ss2 ( '((0 . "*polyline"))))) ( ( ss ( k t)) ( lst (ko-get->list-offsetpline ss k 3)) ( "._trim" ( ( k ss ss2) i) "" "f") ( x lst ( "non" x)) ( ( lst) "" "") ) ) d 还有人帮帮我吗,上面的还有点问题呢 d zzxx 稍稍改了一下,看看能不能达到你要求。 上面几楼的那种贴代码的方式怎么弄的?我怎么也做不出来,晕了~ (defun c:csd (/ ss mode i lst olderr oldcmd rtn pt1 pt2) (defun myerr (s) (command "._undo" "e") (setq *error* olderr) (setvar "cmdecho" oldcmd) (prompt "*取消*") (princ) ) (setq oldcmd (getvar "cmdecho")) (setvar "cmdecho" 0) (setq olderr *error* *error* myerr ) (setq ss (ssget "i")) (command "._undo" "be") (if ss (sssetfirst nil ss) ) (setq mode (chr 73) ss nil ) (prompt (strcat "\n剪掉多段线的内部(in)还是外部(out)<" mode ">选择对象: " ) ) (setq rtn (grread nil 14 2)) (while (and (= (car rtn) 2) (and (/= (last rtn) 79) (/= (last rtn) 111) (/= (last rtn) 73) (/= (last rtn) 105) (/= (last rtn) 13) (/= (last rtn) 32) ) ) (prompt "\n*无效选择*") (prompt (strcat "\n剪掉多段线的内部(in)还是外部(out)<" mode ">选择对象: " ) ) (setq rtn (grread nil 14 2)) (while (and (= (car rtn) 2) (or (= (last rtn) 79) (= (last rtn) 111) (= (last rtn) 73) (= (last rtn) 105) ) ) (if (or (= (last rtn) 73) (= (last rtn) 105)) (setq mode (chr 73)) (setq mode (chr 79)) ) (prompt (strcat "\n剪掉多段线的内部(in)还是外部(out)<" mode ">选择对象: " ) ) (setq rtn (grread nil 14 2)) ) ) (while (and (= (car rtn) 2) (or (= (last rtn) 79) (= (last rtn) 111) (= (last rtn) 73) (= (last rtn) 105) ) ) (if (or (= (last rtn) 73) (= (last rtn) 105)) (setq mode (chr 73)) (setq mode (chr 79)) ) (prompt (strcat "\n剪掉多段线的内部(in)还是外部(out)<" mode ">选择对象: " ) ) (setq rtn (grread nil 14 2)) ) (if (or (= (car rtn) 11) (and (= (car rtn) 2) (or (= (last rtn) 13) (= (last rtn) 32)) ) ) (progn (setq ss (ssget "i" '((0 . "*polyline")))) (setq mode (chr 73)) ) ) (if (= (car rtn) 3) (progn (setq pt1 (last rtn)) (if (setq pt2 (getcorner pt1)) (progn (command "._select" "_box" pt1 pt2 pause) (setq ss (ssget "p" '((0 . "*polyline")))) (setq mode (chr 73)) ) ) ) ) (if ss (progn (command "._zoom" "o" ss "") (setq i 0) (repeat (sslength ss) (if (= mode "i") (progn (setq lst (ko-get->list-offsetpline (ssname ss i) t 3)) (command "._trim" (ssname ss i) "" "f") (foreach x lst (command "non" x)) (command (car lst) "" "") ) (progn (setq lst (ko-get->list-offsetpline (ssname ss i) nil 3)) (command "._trim" (ssname ss i) "" "f") (foreach x lst (command "non" x)) (command (car lst) "" "") ) ) (setq i (1+ i)) ) ) ) (command "._undo" "e") (setq *error* olderr) (setvar "cmdecho" oldcmd) (princ) ) |
所有的时间均为北京时间。 现在的时间是 02:48 AM. |