错误函数求助
本帖最后由 myjping 于 2012-9-18 13:02 编辑做了个动态移动的东东,基本达到了要求,比MOVE少一步,有时候挺方便的,但问题有两外:
1,按下ESC 时不能返回初始状态
2,(grdraw pt2 ptg1 -1 1)如果换成(grdraw pt2 ptg1 1 1)即要用红线就会显示出很多线,按说我上面有 (if (/= pt3 nil)(grdraw pt2 pt3 -1 1))会把线反显的啊,为什么不起做用
(defun c:mm ( / ent i mouse pt1 ptg ss pt2 pt3 ptg1 *error*_Old *error*_New)
(princ "\n 选取要移动的多个对象[右击退出]...")
(setq *error*_Old *error*) ;保存出错处理函数
(setq *error* *error*_New)
(if (null CurDoc)
(setq CurDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(setq ent (ssget))
(RedrawSel ent 3)
(while (and(/= ent nil)(= (car (setq mouse (grread mouse 5 2))) 5))
(setq i 0)
(setq ptg1 (cadr mouse) )
(setq ptg (trans (cadr mouse) 1 0))
;(princ ptg)
(if (= pt1 nil) (setq pt1 ptg))
(if (= pt2 nil) (setq pt2 ptg1))
(if (/= pt3 nil)(grdraw pt2 pt3 -1 1));反显
(while (setq ss (ssname ent i))
(vla-move (vlax-ename->vla-object ss) (vlax-3d-point pt1)(vlax-3d-point ptg))
(setq i (1+ i))
)
(setq pt1 ptg )
(setq pt3 ptg1 )
(grdraw pt2 ptg1 -1 1);反显
)
; )
(RedrawSel ent 4)
(redraw)
(vla-EndUndoMark curdoc)
(princ)
)
;;;重画选择集
;;;出错处理
(defun *error*_New (msg)
(setq *error* *error*_Old)
(if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
(if (= (getvar "LOCALE") "CHS")
(princ "\n你按了强制退出")
(princ "\nYou cancelled The operation!")
)
(princ (strcat "\n" msg))
)
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object))) ;回退,为什么会没用呢
(princ)
)
(defun RedrawSel (Sel mode / i ent)
(setq i 0)
(repeat (sslength Sel)
(setq ent (ssname Sel i))
(redraw ent mode)
(setq i (1+ i))
)
)
顶啊,这个问题应该不难吧 帮忙顶一下!~~ myjping 发表于 2012-9-18 09:13 static/image/common/back.gif
顶啊,这个问题应该不难吧
已更新,少了一个函数
页:
[1]