A propos de l'utilisation d'AutoLISP pour définir une chaîne MODEMACRO

Permet de définir des valeurs MODEMACRO avec AutoLISP.

Remarque : AutoLISP n'est pas disponible dans AutoCAD LT for Mac OS et la variable système MODEMACRO n'est pas disponible sur Mac OS.

Vous pouvez utiliser AutoLISP pour attribuer une chaîne à la variable système MODEMACRO et afficher les résultats dans la barre d'état. Utilisez la fonction strcat d'AutoLISP pour rassembler les différentes chaînes qui composent la chaîne MODEMACRO.

(defun C:ACADMODE()
  (setvar "modemacro"
    (strcat
        "Layer $(substr,$(getvar,clayer),1,8)"
        "$(if,$(getvar,orthomode), Ortho)"
        "$(if,$(getvar,snapmode), Snap)"
        "$(if,$(=,$(getvar,tilemode),0),"
        "$(if,$(=,$(getvar,cvport),1), P)"
        ")"
    )
  )
)

L'exemple suivant utilise la fonction S::STARTUP pour charger un fichier AutoLISP nommé mode1.lsp et affecte une chaîne à la variable système MODEMACRO.

;;; S::STARTUP loads the file MODE1.LSP which defines a MODEMACRO string
(defun S::STARTUP ( )
  (load "mode1")
 (princ)
)
;;; Additional AutoLISP files can also be defined or loaded here

Une fois le fichier AutoLISP mode1.lsp chargé, il définit la variable système MODEMACRO de façon à afficher des informations sur la barre d'état. Le texte affiché commence par L:, suivi des huit premiers caractères du nom du calque courant, de celui du dessin et d'une partie du chemin, ainsi que la première lettre du nom de chacun des modes actifs. La position du nom du dessin est toujours la même, quelle que soit la longueur du nom du calque.

;;; MODE1.LSP
(setvar "modemacro" 
  (strcat
    "L:$(substr,$(getvar,clayer),1,30)"
    "$(substr,        ,1,$(-,30,$(strlen,$(getvar,clayer)))) "
    ;;            ^^^^^^^^ Note the 8 spaces here
    "<.."
      "$(if,$(eq,$(getvar,dwgname),UNNAMED),UNNAMED,"
        "$(substr,$(getvar,dwgname),"
          "$(if,$(>,$(strlen,$(getvar,dwgprefix)),29),"
            "$(-,$(strlen,$(getvar,dwgprefix)),29),1"
          "),"
          "$(strlen,$(getvar,dwgname))"
        ")"
      ")"
    ">"
    "$(if,$(getvar,orthomode), O, )"
    "$(if,$(getvar,snapmode), S, )"
    "$(if,$(and,"
    "$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)),P)"
  )
)

Les routines AutoLISP peuvent aussi utiliser la fonction AutoLISP menucmd pour évaluer les expressions DIESEL.