您可以使用两个命令和AcDb反应器。例如,通过GRON命令转动电抗器,并对某些对象进行夹点旋转(GROFF关闭):
- (defun c:gron()
- (vl-load-com)
- (if(not grip:reactor)
- (setq grip:reactor
- (vlr-Command-Reactor nil
- '((:vlr-CommandEnded . GripReaction))
- ); end vlr-Command-Reactor
- ); end setq
- ); end if
- (if(not acdb:reactor)
- (setq acdb:reactor
- (vlr-AcDb-Reactor nil
- '((:vlr-objectModified . GripModified))
- ); end vlr-Command-Reactor
- ); end setq
- ); end if
- (princ)
- ); end of c:gron
- (defun c:groff()
- (if grip:reactor
- (progn
- (vlr-remove grip:reactor)
- (setq grip:reactor nil)
- (vlr-remove acdb:reactor)
- (setq acdb:reactor nil)
- ); end progn
- ); end if
- (princ)
- ); end of c:groff
- (defun GripModified(Reac Args / lEnt)
- (setq lEnt(vlax-ename->vla-object(cadr Args))
- gron:lastent(strcat(vla-get-ObjectName lEnt)
- " ID: "(itoa(vla-get-ObjectID lEnt)))
- ); end setq
- (princ)
- ); end of GripModified
- (defun GripReaction(Reac Args)
- (if(equal "GRIP_ROTATE"(car Args))
- (if gron:lastent
- (alert
- (strcat "You have just rotated:\n" gron:lastent))
- ); end if
- ); end if
- (princ)
- ); end of GripReaction
|