日志正文
|
||
可以框选的修剪.lsp;;;========================================== ;;;功能:可以框选的修剪 ;;;日期:ZML84 于 2007-08-20 ;;;========================================== (defun C:TT (/ S1 S2 PT1 PT2 CMDECHO_OLD OSMODE_OLD I XX) (princ "\n★★可以框选的修剪★★") (setq CMDECHO_OLD (getvar "CMDECHO") OSMODE_OLD (getvar "OSMODE") ) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (princ (strcat "\n当前设置:投影=" (nth (getvar "PROJMODE") '("不投影" "当前UCS" "当前视图")) ",边=" (nth (getvar "EDGEMODE") '("不延伸" "延伸")) ) ) (princ "\n选择剪切边...") ;;若没有选取边界,就将全部对象作为边界 (if (setq S1 (ssget)) () (setq S1 (ssget "all")) ) (while (progn (initget 4 "P E U") (setq PT1 (getpoint "\n选择要修剪的对象,或 [投影(P)/边(E)/放弃(U)]:" ) ) ) (cond ;;分支一:投影选项设置 ((= PT1 "P") (progn (initget 4) (setq XX (getint (strcat "\n输入投影选项 [无(0)/UCS(1)/视图(2)] <" (itoa (getvar "PROJMODE")) ">:" ) ) ) (if (or (= XX 0) (= XX 1) (= XX 2)) (setvar "PROJMODE" XX) ) ) ) ;;分支二:边延伸选项设置 ((= PT1 "E") (progn (initget 4) (setq XX (getint (strcat "\n输入隐含边延伸模式 [不延伸(0)/延伸(1)] <" (itoa (getvar "EDGEMODE")) ">:" ) ) ) (if (or (= XX 0) (= XX 1)) (setvar "EDGEMODE" XX) ) ) ) ;;分支四:撤销上一步操作 ((= PT1 "U") (command "_.undo" 1) ) ;;分支五:对选中的对象进行修剪操作 ((listp PT1) (progn (if (setq S2 (ssget PT1)) (progn (command "_.undo" "be") (command "_.trim" S1 "" S2 "") (command "_.undo" "e") ) (if (and (setq PT2 (getcorner PT1 " >>>第二角点: " ) ) (setq S2 (ssget "c" PT1 PT2)) ) (progn (command "_.undo" "be") (command "_.trim" S1 "") (setq I 0) (repeat (sslength S2) (command (list (ssname S2 I) PT1) ) (setq I (1+ I)) ) (command "") (command "_.undo" "e") ) (princ "\n★未选择到对象。") ) ) ) ) ;_结束 分支五 ) ;_结束 cond 结束分支 ) ;_结束 while (setvar "OSMODE" OSMODE_OLD) (setvar "CMDECHO" CMDECHO_OLD) (princ "\n★正常结束。谢谢使用。") (princ) ) ;_结束 defun ;;;=========================================================== (alert (princ "\n★可以框选的修剪。\n键入命令\"TT\"执行。")) (princ)
最后修改于 2008-02-15 19:12
阅读(?)评论(0)
|
||
评论 想第一时间抢沙发么?