本帖最后由 作者 于 2007-10-13 19:48:52 编辑
;;;;by lijiao (defun c:ff (/ PT0 PTLIST PTLIST0 ss CMDECHO OSMODE) (setq cmdecho (getvar "cmdecho") osmode (getvar "osmode") ) (setvar "osmode" 0) (while (and (setq ptlist0 (getpoint_list)) (> (length ptlist0) 1) ) (setvar "cmdecho" 0) (setq pt0 (car ptlist0) ptlist (cdr ptlist0) ) (command "trim" "") (foreach pt ptlist (command "f" pt0 pt "") (setq pt0 pt) ) (command "") (if (setq ss (ssget "f" ptlist0)) (command "erase" ss "") ) (setvar "osmode" osmode) (setvar "cmdecho" cmdecho) ) (princ) ) (defun getpoint_list ( / DIS OUT PT) (setq pt (getpoint "\n开始:")) (princ "\n按任意键结束:") (if (= (type pt) 'LIST) (progn (setq out (list pt) dis (* 0.01 (getvar "viewsize"))) (while (= 5 (car (setq pt (grread t 4 0)))) (setq pt (cadr pt)) (if (> (distance pt (car out)) dis) (progn (grdraw pt (car out) 1) (setq out (cons pt out)) ) ) ) ) ) (redraw) (reverse out) ) 这个程序是我前些时间在我们明经坛子找到的!在实际应用中,发现在它有一个不完善的地方!,就是在剪切XLINE时,如果旁边有其它的线!它就只能剪切框选的部分!被其它线阻隔到的地方就有残留!如下图1.2! 各位高手看能不能改进一下,如图3.4中的样子!在我们发出TRIM命令后,只要我们想要的图形A,B,C,D任意对角两点框选一下,就能得到一个我想要的矩形或者其它的图形!而且不管有没有其它的线阻隔就能干净彻底的剪掉多余的线条! 另:我在试用这个程序时,发现剪切完后,我的CAD的对象捕捉全被取消掉了!要用到对象捕捉时又要一个个的去勾选,很是麻烦! 这个是一个老问题了!我只是把它拿出来讨论一下!希望兄弟们不要骂我!  |