本帖最后由 yxp 于 2013-7-9 02:55 编辑
调用 (command "DBLCLKEDIT" "OFF") 可以关闭双击编辑,
但是回调函数里是不允许有command存在的。
简化后仍有内部错误的存在 - (setvar "cmdecho" 0)
- ;;程序加载时建立鼠标反应器,or 结构可避免重复加载时产生多重回调
- (or *ss_Mouse_Reactor* (setq *ss_Mouse_Reactor*
- (vlr-mouse-Reactor nil '((:vlr-beginDoubleClick . DoubleCallback)))))
- ;;鼠标动作-回调函数
- (defun DoubleCallback (retr pt / en)
- (and (setq *entsel_owen* (nentselp (trans (car pt) 0 1)))
- (setq en (cdr (assoc 0 (entget (car *entsel_owen*))))))
- (cond ((= en "CIRCLE")
- (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "(print_circle_area) ")
- ;(dcl_SendString "(print_circle_area) ")
- ))
- (princ)
- )
- ;;鼠标动作回调函数的-被调函数
- (defun print_circle_area( / dxf r pt a)
- ;(command "DBLCLKEDIT" "OFF")
- (setq dxf (entget(car *entsel_owen*))
- r (cdr (assoc 40 dxf))
- pt (cdr (assoc 10 dxf))
- a (* pi r r))
- (alert (strcat "\n圆的半径: " (rtos r 2) "\n圆的面积: " (rtos a 2)))
- (command "Line" (getvar "VIEWCTR") pt "")
- (princ "\n被调函数完成")
- ;(command "DBLCLKEDIT" "ON")
- (princ)
- )
|