<p>还有一个问题要请教,</p><p>可不可以实现在修剪的时候,</p><p>裁减边界可以亮显啊</p><p>谢谢。</p>
;; 可能还有 bug ,不是太好用
(defun c:tr (/ trerror trerror_end olderr ssRedraw cm os ss1 ss2 ssn lst pb)
(defun trerror (x) (trerror_end))
(defun trerror_end ()
(if ss1 (ssRedraw ss1 4))
(setq *error* olderr)
)
(setq olderr *error* *error* trerror)
(defun ssRedraw (ss mode)
(mapcar '(lambda (x) (redraw x mode))
(vl-remove-if-not '(lambda (x) (= (type x) 'ename)) (mapcar 'cadr (ssnamex ss)))
)
)
(setq cm (getvar "cmdecho")
os (getvar "osmode")
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(princ "\n选择剪切边或 <全部选择>...")
(setq ss1 (ssget))
(if ss1 (ssRedraw ss1 3))
(princ "\n选择要修剪的对象...")
(setq ss2 (ssget))
(if ss2
(progn
(setq ssn (ssnamex ss2))
(cond
((= (caar ssn) 3);;框选
(setq lst (mapcar '(lambda (x) (mapcar' cadr x))
(mapcar 'cdr (vl-remove-if-not '(lambda (x) (< (car x) 0)) ssn))
)
lst (mapcar '(lambda (x) (append x (list (car x)))) lst)
)
)
((= (caar ssn) 1);;单选
(setq lst (mapcar 'cadr (mapcar 'last ssn))
pb(abs (/ (* (/ (getvar "pickbox") (cadr (getvar "screensize")))
(getvar "viewsize")
)
(sin (/ pi 4))
)
)
lst (mapcar '(lambda (x)
(list (polar x (* 0.25 pi) pb)
(polar x (* 0.75 pi) pb)
(polar x (* 1.25 pi) pb)
(polar x (* 1.75 pi) pb)
(polar x (* 0.25 pi) pb)
)
)
lst
)
)
)
)
(if lst
(progn
(command "_.trim")
(if ss1
(command ss1 "")
(command "")
)
(mapcar '(lambda (x)
(command "_f")
(apply 'command x)
(command "")
)
lst
)
(command "")
)
)
)
)
(if ss1 (ssRedraw ss1 4))
(setvar "cmdecho" cm)
(setvar "osmode" os)
(trerror_end)
(princ)
)
<p>很好用,</p><p>感激的话 我也不知道怎么说了,</p><p>论坛里有你这么热心的人</p><p>我感到很温暖,谢谢!</p><p></p>
<p>谢谢楼主,辛苦了!!!</p>
<p>请问你们可不可以帮我改好延伸命令啊....因为我是个完全不懂编程的菜鸟..</p><p>也是找了好久才找到你们的那个剪切命令..多谢你们啊...</p>
<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=58824&replyID=&skin=1">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=58824&replyID=&skin=1</a>
你们太好人了...好感动啊...
<p>用了一下还不错的 谢谢</p>
<p>延伸命令是不是也可以啊?还有高手宝宝写个吧,</p>
非常感谢