Ai sysvar

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年6月3日 (金) 10:53時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (ai_sysvar ''vars'') ; 機能 : 変更するシステム変数の設定と現在の設定を保存。 ; 引数 :* vars … システム変...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(ai_sysvar vars)


機能
変更するシステム変数の設定と現在の設定を保存。


引数
  • vars … システム変数のリスト
  • 戻す : (ai_sysvar NIL)
  • システム変数を一つ設定: '("cmdecho" . 0)
  • システム変数を複数設定: '(("cmdecho" . 0)("gridmode" . 0)))


戻り値
保存した変数値のリスト または nil


  • MEMO : エラー時は *MERR* でシステム設定を復元する。


サンプル
(ai_sysvar '("cmdecho" . 0))
; なんかの処理
(ai_sysvar nil)

;-----
(ai_sysvar '(("cmdecho" . 0)("gridmode" . 0)))
; なんかの処理
(ai_sysvar nil)


;-----
; 関数の定義は以下のとおり(古いタイプ)
(defun-q ai_sysvar (vars / savevar pair varname varvalue varlist)
(setq varlist nil) ;; place holder for varlist

  (defun savevar (varname varvalue / pair)
    (cond
      ;; if new value is NIL, save current setting
      ((not varvalue)
        (setq varlist
          (cons 
            (cons varname (getvar varname))
            varlist)))
      ;; change sys'var only if it's different
      ((/= (getvar varname) varvalue)
        ;; add current setting to varlist, change setting
        (setq varlist
          (cons
            (cons varname (getvar varname))
            varlist))
        (setvar varname varvalue))
      (T nil)
    );_cond
  );_defun

  (cond
    ;; reset all values
    ((not vars)
      (foreach pair varlist
        (setq varname (car pair)
              varvalue (cdr pair))
        (setvar varname varvalue) )
      (setq varlist nil))
    ((not (eq 'LIST (type vars)))
      (princ "\nAI_SYSVAR: Bad argument type.\n"))
    
    ;; set a single system variable
    ((eq 'STR (type (car vars)))
      (savevar (car vars) (cdr vars))
    )
  
    ;; set multiple system variables
    ((and
      (eq 'LIST (type (car vars)))
      (eq 'STR (type (caar vars)))
     )
      (foreach pair vars
        (setq varname (car pair)
              varvalue (cdr pair)
        )
        (if (not (eq 'STR (type varname)))
          (princ "\nAI_SYSVAR: Bad argument type.\n")
          (savevar varname varvalue)
        ))
    )
  
    (T (princ "\nAI_SYSVAR: Error in first argument.\n"))
  );cond

  ;; redefine ai_sysvar function to contain the value of varlist
  (setq ai_sysvar
          (cons 
            (car ai_sysvar)
            (cons (list 'setq 'varlist (list 'quote varlist))
                  (cddr ai_sysvar))))
varlist ;; return the list
);_sysvar



関連事項

  • [[]]
  • [[]]