本帖最后由 ljpnb 于 2011-6-26 21:37 编辑
yzr2002626 发表于 2011-6-26 19:49 
问下,那交叉线画完后怎样把自动那画的矩形删除

- ;;矩形框中加辅助“V”形线----by ljpnb
- (defun c:test ()
- (setq errtmp *error*)
- (setq *error* err)
- (setq k T)
- (setvar "cmdecho" 0)
- (command "undo" "be")
- (setq os (getvar "osmode"))
- (if (setq pta (getpoint "\n指定矩形的一个角点<回车直接选择矩形>:"))
- (progn
- (if (setq ptb (getcorner pta "\n指定第二角点<回车直接退出>:"))
- (progn
- (command "_.rectang" pta ptb)
- (setq ent (entlast))
- (setvar "osmode" 0)
- (if (setq pt (getpoint "\n选定方向<回车直接退出>:"))
- (progn
- (setq obj (vlax-ename->vla-object ent))
- (setq pt (vlax-curve-getclosestpointto obj pt))
- )
- (progn
- (setq k nil)
- (vla-delete (vlax-ename->vla-object ent))
- ;如果保留矩形框,直接删除这一句
- )
- )
- )
- (setq k nil)
- )
- )
- (progn
- (if (setq en (entsel "\n请选择一矩形<回车直接退出>:"))
- (setq ent (car en)
- pt (osnap (cadr en) "nea")
- )
- (setq k nil)
- )
- )
- )
- (if k
- (progn
- (setq pt_lst
- (mapcar
- 'cdr
- (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))
- )
- )
- (setq obj (vlax-ename->vla-object ent))
- (setq n (fix (vlax-curve-getparamatpoint obj pt)))
- (setq p1 (nth n pt_lst))
- (if (= n 3)
- (setq p2 (nth 0 pt_lst))
- (setq p2 (nth (1+ n) pt_lst))
- )
- (setq p-mid (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2))
- (setq pt_lst1 (vl-remove p1 pt_lst))
- (setq pt_lst1 (vl-remove p2 pt_lst1))
- (setq p3 (car pt_lst1)
- p4 (cadr pt_lst1)
- )
- (command "line" "non" p3 "non" p-mid "non" p4 "")
- (vla-delete obj) ;如果保留矩形框,直接删除这一句
- )
- )
- (setvar "osmode" OS)
- (command "undo" "e")
- (setvar "cmdecho" 1)
- (setq *error* errtmp)
- (princ)
- )
- ;;;取消恢复处理
- (defun err (msg)
- (setvar "osmode" os)
- (if ent
- (vla-delete (vlax-ename->vla-object ent)))
- (setq *error* errtmp)
- )
|