120120
发表于 2007-8-18 13:19:00
本帖最后由 作者 于 2007-8-18 13:23:25 编辑 <br /><br /> <p>楼上的不错.但是就有一点,选择剪切边时不能像CAD内的剪切功能这样.可以按空格键!加上就完美了!</p>
英雄无敌
发表于 2007-8-18 15:35:00
<p>再试试这个,不过,暂不提供源码。</p><p> </p>
120120
发表于 2007-8-19 18:25:00
谢了。楼主的朋友。 我去看看。。
120120
发表于 2007-8-20 09:09:00
<p><strong><font face="Verdana" color="#61b713">英雄无敌 兄弟的程序不错,很好用。谢谢</font></strong></p><p><strong><font face="Verdana" color="#61b713"> 不知能不能提供源码?</font></strong></p>
zml84
发表于 2007-8-20 09:50:00
楼上的不错.但是就有一点,选择剪切边时不能像CAD内的剪切功能这样.可以按空格键!加上就完美了!
按下空格的话,就是说选择全部对象作为边界了。加上一个判断即可。
要老是吃鱼的话,那卖鱼者就发大了。
英雄无敌
发表于 2007-8-20 10:39:00
<p>修正了一个小的BUG,就是当选择边界时,单剪会有问题。至于源码,暂不提供,你可以自己试编一下,不懂的可以问我,我会乐于解答。</p><p> </p>
zml84
发表于 2007-8-20 16:25:00
;;;==========================================
;;;功能:可以框选的修剪
;;;日期:ZML84 于 2007-08-20
;;;==========================================
(defun C:TT (/ S1 S2 PT1 PT2 CMDECHO_OLD I XX)
(princ "\n★★可以框选的修剪★★")
(setq CMDECHO_OLD (getvar "CMDECHO"))
(setvar "CMDECHO" 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 "CMDECHO" CMDECHO_OLD)
(princ "\n★正常结束。谢谢使用。")
(princ)
) ;_结束 defun
;;;===========================================================
(alert (princ "\n★可以框选的修剪。\n键入命令\"TT\"执行。"))
(princ)
120120
发表于 2007-8-20 19:00:00
谢谢各位!
qinxiangzhou
发表于 2009-5-28 21:27:00
请问各位大侠,能不能不用这个小工具,真接修改2005的TR编程,把2006TR对应该的编程复制到对应的2005TR中,可不可以实现,那样是不是好些,如果能成功,请大侠说明详细修改方法,谢谢!
qinxiangzhou
发表于 2009-5-28 21:33:00
132