Visual LISP, AutoLISP and General Customization
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Is it possible to make the left mouse click initiate a zoom window?

5 REPLIES 5
SOLVED
Reply
Message 1 of 6
hypersonic
719 Views, 5 Replies

Is it possible to make the left mouse click initiate a zoom window?

i.e. I still want it to have its normal behavior while in a command, but when not in a command it still enters the selection mode, which does not help me much, but if it would enter a zoom window command, it might be a more useful command.

Does anyone have any thoughts on how to do this?

 

Thank you and Happy New Year!!

5 REPLIES 5
Message 2 of 6
Lee_Mac
in reply to: hypersonic


hypersonic wrote:

i.e. I still want it to have its normal behavior while in a command, but when not in a command it still enters the selection mode, which does not help me much, but if it would enter a zoom window command, it might be a more useful command.


 

This is the closest I believe you could get without resorting to a possible .NET solution:

 

(vl-load-com)
(if (null *mouse-reactor*)
    (setq *mouse-reactor* (vlr-mouse-reactor nil '((:vlr-begindoubleclick . zoomwindow))))
)
(if (null *editor-reactor*)
    (setq *editor-reactor* (vlr-editor-reactor nil '((:vlr-beginclose . releaseobjects))))
)
(defun zoomwindow ( reactor params / p2 )
    (if
        (and
            (zerop (getvar 'CMDACTIVE))
            (setq p1 (car params))
            (setq p2 (getcorner "\nSpecify Opposite Corner: " (trans p1 0 1)))
        )
        (progn
            (setq *app* (cond (*app*) ((vlax-get-acad-object)))
                  *wsh* (cond (*wsh*) ((vlax-create-object "WScript.Shell")))
            )
            (vlax-invoke *app* 'zoomwindow p1 (trans p2 1 0))
            (vlax-invoke *wsh* 'sendkeys "{ESC}")
        )
    )
    (princ)
)

(defun releaseobjects ( reactor params )
    (if (and *wsh* (eq 'VLA-OBJECT (type *wsh*)) (not (vlax-object-released-p *wsh*)))
        (vl-catch-all-apply 'vlax-release-object (list *wsh*))
    )
    (if (and *mouse-reactor* (eq 'VLA-OBJECT (type *mouse-reactor*)))
        (vlr-remove *mouse-reactor*)
    )
    (vlr-remove reactor)
    (princ)
)
(princ)

 

The above uses a Mouse Reactor triggered when the user Double-Clicks, and will subsequently prompt for another point to use for a ZoomWindow operation.

Message 3 of 6
hypersonic
in reply to: hypersonic

That is awesome Lee, can the same thing be done for the right mouse button i.e.. make a double click do a zoom previous?

Thanks Smiley Very Happy

Message 4 of 6
Lee_Mac
in reply to: hypersonic


hypersonic wrote:

can the same thing be done for the right mouse button i.e.. make a double click do a zoom previous?


No since the Mouse Reactor offers only two Events: BeginDoubleClick and BeginRightClick, so callback functions can only be evaluated following these two actions.

Message 5 of 6
hypersonic
in reply to: Lee_Mac

Ah, o.k. thank you very much for your help!

Message 6 of 6
Lee_Mac
in reply to: hypersonic

You're welcome hypersonic Smiley Happy

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost