找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lijiao

[原创]:别开生面的TRIM

[复制链接]
发表于 2005-3-4 00:53:43 | 显示全部楼层
我倒是觉得楼主的程序已经非常好用了
实际画图时经常遇到先trim,然后e掉不能再trim的线段
楼主这个小程序把这些问题简化到了极至,只需要在屏幕上划一圈,该trim的trim,trim不了的删除,太方便了
唯一的缺点是会把红线碰到的text等不该被删的对象一起删除,这就导致应用过程中要十分小心误删除有用的东西了
哪位高手能解决这个bug就堪称完美了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 01:29:59 | 显示全部楼层
好贴,但参数太多,鼠标回车不能推出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 07:55:59 | 显示全部楼层
最初由 狂刀 发布
[B]改进了26楼的程序,除去一些bug,增加“c”框选功能,这可是trim里面没有的,还有一次redo功能,注意用u回退的时候,不用回车
下一个版本,增加选边功能
[php]
;| xtr = 超级剪切--by狂刀
   思路from lijiao ... [/B]


刀哥这个用来代替tr很不错啊~!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 21:45:41 | 显示全部楼层
哇,真是佩服啊
得好好学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 22:51:25 | 显示全部楼层
出学着的提问!
代码是什么??
CAD不是画就好了吗?
还什么代码啊? 哦哦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 23:14:34 | 显示全部楼层
1tre便
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-4 23:43:48 | 显示全部楼层
楼主的程序好啊!
我有此想法已经好久了.
因为工作忙而没能写出.
在此谢了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-5 13:57:49 | 显示全部楼层
31楼狂刀的程序,是不是有意不加入“鼠标回车功能”,如果需要加入这一功能,要将程序中的几句改一改:
((member gr '((11 0) (2 32)(2 13)))
       ;; 敲空格键 or 敲enter键
       (setq roop nil)
      )
      ((= ga 25) (setq roop nil));_鼠标右键回车
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 01:19:48 | 显示全部楼层
在我的电脑上,(11 0) 已经包括“鼠标回车”了,  ga =25 的依据是?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 06:40:16 | 显示全部楼层
好程序,这样用曲线来选取比直范围大,方便、快捷。看来现在流行玩“刀”了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 08:17:33 | 显示全部楼层
31楼的程序如果中途用esc退出的话,就会失去对象捕捉的初始设置。
呵呵,我菜,自己改了几次都没成功。
大家能否帮忙改改呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 11:37:48 | 显示全部楼层
呵呵,我来改吧
[php]


;| xtr = 超级剪切--狂刀
   思路from lijiao  http://www.xdcad.net/forum/showt ... 1686237#post1686237
   可替代trim.
   参数详解:
   默认选择方式: 点中曲线,单点剪切;点于空位,启动自由画笔(sketch)方式.
   U-undo: 取消上次剪切操作,一键执行无须回车!
   R- redo: 恢复一次undo操作.
   E-edgemode开关: 控制剪切边是否延伸,含义同trim参数. 为开关型,有状态提示!
   P-投影模式 [0 无 / 1 UCS / 2 视图]
   C-框选: 框选实体边方式.
     (按住Shift键延伸):同时按shift为延伸命令,而非剪切.
|;
(defun c:xtr (/ cmd os roop dis un ss gr ga gb sel pt pt2 pts eg)
  (defun *myerr* (msg)  (setvar "cmdecho" cmd) (setvar "osmode" os) (setq *error* oe))
  (setq        cmd  (getvar "cmdecho")
        os   (getvar "osmode")
        oe   *error*
        *error* *myerr*
        roop T
        dis  (* 0.01 (getvar "viewsize"))
        un   0
  )
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (princ "\n 选择剪切边< all >")
  (setq ss (ssget))
  (while roop
    (princ"\n U-undo/ R-redo/ E-edgemode开关/ P-投影模式/ 选择模式:C-框选/ 修剪对象(按Shift键延伸)<退出>: ")
    (if        (= 0 (getvar "edgemode"))
      (princ "\n边界延伸状态:*边界不延伸*")
      (princ "\n边界延伸状态:*边界延伸*")
    )
    (setq gr (grread nil 4 2)
          ga (car gr)
          gb (cadr gr))
    (cond
      ((= ga 3)
       (cond
         ((setq sel (nentselp gb))(command ".trim") (if ss (command ss))(command "")(command sel ""));;单选.
         (T (setq pts (getpts dis))
          (if (setq pts2(cdr pts))
            (progn (command ".trim") (if ss (command ss))(command "")
              (mapcar '(lambda(x y)(command "f" x y "")) pts pts2)
              (command "")
            )
           )
          )
       )(setq un (1+ un))
      )
      ((member gr '((2 117) (2 85)));; "U"
        (if (> un 0)
          (progn (command ".u") (setq un (1- un)))
          (princ "\n!没有可undo的内容了!")
        )
      )
      ((member gr '((2 114)(2 82)));; "R"
        (setq un (1+ un))
        (command ".redo")
       )
      ((member gr '((2 101)(2 69)));; "E"
        (setvar "edgemode" (abs(- (getvar "edgemode") 1)))
       )
      ((member gr '((2 99)(2 67)));; "C"
        (if (and(setq pt (getpoint "\n框选第一点<回车退出>:"))(setq pt2 (getcorner pt "\n框选第二点<回车退出>:")))
          (progn
            (setq pts (list pt (list (car pt)(cadr pt2)) pt2 (list (car pt2)(cadr pt))))
            (command ".trim") (if ss (command ss))(command "")
            (mapcar '(lambda(x y)(command "f" x y "")) pts (cons (last pts) pts))
            (command "")
            (setq un (1+ un))
          )
        )
       )
      ((member gr '((2 112)(2 80)));; "P"
        (initget "0 1 2")
        (setvar "PROJMODE" (atoi (getkword "[0 无 / 1 UCS / 2 视图]:"))))
      ((member gr '((11 0)(2 32)));; "" or enter
        (setq roop nil))
   )
  )
  (setvar "cmdecho" cmd)
  (setvar "osmode" os)
  (setq *error* oe)
  (princ)
)
;; (getpts) = 取得grread跟踪点表,dis为控制精度的距离.
(defun getpts (dis / gr pt pt0 pts)
   (while (= 5 (car (setq gr (grread t 4 0))))
     (setq pt (cadr gr))
     (if (not pt0)(setq pt0 pt pts (cons pt0 pts)))
     (if (> (distance pt pt0) dis)
       (progn
         (grdraw pt pt0 1 1)
         (setq pts (cons pt pts)
               pt0 pt)
       )
     )
   )
  (redraw)
  (reverse pts)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 16:55:08 | 显示全部楼层
狂刀大侠把这个程序的功能加强了好多
但同时操作也变复杂了
不如原程序操作起来连贯顺手
象我这样的懒人还是倾向于使用楼主的程序的
希望楼主在工作之暇修正一些小bug,这样就完美了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 19:11:32 | 显示全部楼层
按狂刀的做法,那也可以做个出来代替ex命令的。
只要把lsp里面的trim代替成extend就行了,中文再改改。
偶说得对不对呀?呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-6 22:37:44 | 显示全部楼层
程序借鉴了lijiao和aeo的方法思路
步骤上,选择剪切边实体我觉得还是必要的
默认的方式是点中曲线剪切曲线,点于空位按鼠标跟踪,如果你不需要其它的选取方式,完全可以不看提示。
trim和extend是一样的,extend的时候按shift就是trim
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 20:15 , Processed in 0.413827 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表