GET_AECBOSMODE_v3_00................................free

This function gets current AECBOSMODE value. This variable is native to Autocad MEP.
The Lisp program checks if this variable exists - in this way the main routine where GET_AECBOSMODE is a subroutine will be universal for any lisp supproting software.

 

Code:

;;; =================================================
;;;        GET_AECBOSMODE_v3_00.LSP                                                 
;;;
;;;        Written by Andrzej Kalinowski,     www.autolisps.blogspot.com
;;;        v1.00 - 02.08.2015 - first release
;;;        v1.01 - 19.02.2019 - adjusting to work with alternative to autocad programs
;;;        v2.00 - 28.07.2020 - adding (getcname   ) to hide "unknown command" error if command is unknown
;;;        v3.00 - 23.07.2022 - misc code improvements
;;;
;;;        Function gets AECBOSMODE value 
;;;        Program checks if this variable exists - in this way the main routine will not be  limmited to work only in Autocad MEP, where this variable is native
;;; =================================================
(vl-load-com)
(defun GET_AECBOSMODE ( / AecbOM old_cmdecho998)
    (if (getcname "AECBOSMODE")
        (progn
            (setq old_cmdecho998 (getvar "CMDECHO"))
            (setvar "CMDECHO" 1);necessary to read last prompt with the urrent AECBOSMODE
            (command "AECBOSMODE" )
            (command);breaks command
            (setq AecbOM (getvar "lastprompt") ) ; returns fe. "Enter new value for AECBOSMODE <1023>:"
            (setvar "CMDECHO" old_cmdecho998);restoring cmdecho
            (atoi (substr AecbOM (+ (vl-string-search "<" AecbOM) 2) (- (vl-string-search ">" AecbOM) (vl-string-search "<" AecbOM) 1) ) )
        );progn
    );if
);defun
;;; =================================================
;|
;;;this line you put in your program to save AECBOSMODE before changing it 
    (setq old_aecbosmode (GET_AECBOSMODE) )

;;;this line you put in your program to change AECBOSMODE to f.e. 0
    (if old_aecbosmode    (command "AECBOSMODE" 0)  )

;;;this line you put in your program to restore the previous aecbosmode
    (if old_aecbosmode    (command "AECBOSMODE" old_aecbosmode)  )

;;;optionally - this line you put in your program in the error trapper to restore the previous aecbosmode
;;;checks if command-s is recognised to work with older autocad versions. Prevents error:  Cannot invoke (command) from *error*
    (if old_aecbosmode (if (not command-s)    (command "aecbosmode" old_aecbosmode)    (command-s "aecbosmode" old_aecbosmode) ) )
|;


Example:



Download file: GET_AECBOSMODE_v3_00.LSP

1 comment:

  1. The line, (not (= (getcname "AECBOSMODE") nil) ) with getcname doesn't work in AutoCAD MEP 2023.1 Instead, use (getvar "lastprompt") and then (/= AecbOM "Command: 0") in the if statement.

    ReplyDelete