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>&nbsp;</p>

120120 发表于 2007-8-19 18:25:00

谢了。楼主的朋友。 我去看看。。

120120 发表于 2007-8-20 09:09:00

<p><strong><font face="Verdana" color="#61b713">英雄无敌&nbsp; 兄弟的程序不错,很好用。谢谢</font></strong></p><p><strong><font face="Verdana" color="#61b713">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不知能不能提供源码?</font></strong></p>

zml84 发表于 2007-8-20 09:50:00

楼上的不错.但是就有一点,选择剪切边时不能像CAD内的剪切功能这样.可以按空格键!加上就完美了!
按下空格的话,就是说选择全部对象作为边界了。加上一个判断即可。
要老是吃鱼的话,那卖鱼者就发大了。

英雄无敌 发表于 2007-8-20 10:39:00

<p>修正了一个小的BUG,就是当选择边界时,单剪会有问题。至于源码,暂不提供,你可以自己试编一下,不懂的可以问我,我会乐于解答。</p><p>&nbsp;</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
页: 1 [2] 3
查看完整版本: [求助]谁会写一个像2006这样的剪切功能?