Sponsored links

【AutoLISP サンプル】最後のチェック

Sponsored links
AutoLISP
Sponsored links
Jagaimo
Jagaimo

CAD作業が終わった時のルーティン作業をするコマンドです。

チェックボックス付きのダイアログボックスを使用しています。

Sponsored links

コマンドの内容

CAD作業が終わった時のルーティン作業例

  • モデルスペースのUCSをワールドにする。
  • モデルスペース、各レイアウトで全体ズームする。
  • 現在画層を0にする。
  • 保存

を実行するコマンドです。

ダイアログボックス

このコマンドにはダイアログボックスが付いています。

コマンドを実行するとダイアログボックスが出てきます。

チェックを外すとその項目は実行されません。

ダイアログボックスの項目

World

モデルスペースのUCSをワールドにします。

Zoom Extent

モデルスペース、全てのレイアウトタブで全体ズームをします。

Layer 0

現在画層を”0″にします。

Save

保存します。

DCL

JagaDCL.dcl という名前で、検索パスにあるサポートフォルダに保存してください。
AutoLISPで呼び出します。

Done_Check :dialog
      {label = "Done Check"; 
//-------------------------------------------------------- 
   :toggle {label = "World"; key="WLD";}
   :toggle {label = "Zoom Extent"; key="ZE";}
   :toggle {label = "Layer 0"; key="Ly0";}
   :toggle {label = "Save"; key="SV";}
//--------------------------------------------------------   q 
        ok_cancel;
      }

AutoLISP

;/////////////////////////////////////////////
;|
Jagaimo Lisp 
  チェック 20200710
(チェックボックス使用例)
|;
;/////////////////////////////////////////////


(defun c:Done (/ dcl_id Act)

   (setq dcl_id (load_dialog "JagaDCL.dcl")) ;
   
      (if (not (new_dialog "Done_Check" dcl_id))
	      (progn
            (princ "***ダイアログボックスが見つかりません***")
            (exit)
      ));if  
;-----------------------------------------------------------
            (if (null g00WLD) (setq g00WLD "1"))
            (if (null g00XE) (setq g00XE "1"))
            (if (null g00Ly0) (setq g00Ly0 "1"))
            (if (null g00SV) (setq g00SV "1"))
  ;-----------------------
  
            (set_tile "WLD" g00WLD )
            (set_tile "ZE" g00XE)	
            (set_tile "Ly0" g00Ly0)	
            (set_tile "SV" g00SV)	
          ;-----------------------------------------------------------
            (action_tile "accept" "(Jaga00Done_GetVar)(done_dialog 1)")
            (action_tile "cancel" "(done_dialog 0)")
          ;-----------------------------------------------------------
            (setq Act (start_dialog))
            (unload_dialog dcl_id)
          ;-----------------------------------------------------------
            (cond 
              ((= Act 0) (princ "ユーザーキャンセル")(exit))
              ((= Act 1) (Jaga00Done))
            );cond
;----------------------------------------------------------				
(princ));defun

;================================
(defun Jaga00Done_GetVar ()
  	(setq g00WLD (get_tile "WLD"))
  	(setq g00XE (get_tile "ZE"))
  	(setq g00Ly0 (get_tile "Ly0"))
  	(setq g00SV (get_tile "SV"))
)
;================================
;====================================================== 
;======================================================
(defun Jaga00Done ()
(Jaga00START)
  
  (if (= g00WLD "1")
    (Jaga00World)
    (princ "\n === World 選択されていません === \n")
  );if 
    
    (if (= g00XE "1")
      (Jaga00ZoomExAll)
    (princ "\n === 全体ズーム 選択されていません === \n")
  );if 
    
    (if (= g00Ly0 "1")
     (progn (setvar "CLAYER" "0") (princ "\n +++ 画層 0 +++ \n"))
    (princ "\n === 画層0 選択されていません ===/n")
  );if 
    
    (if (= g00SV "1")
      (progn (command-s "._QSAVE")(princ "\n +++ 保存 +++ \n"))
     (princ "\n === 上書き保存 選択されていません === \n")
  );if 
  
 
       (setvar "CLAYOUT" (car (layoutlist)))
(Jaga00END)
(princ))


;=====================================================================================
(defun Jaga00World ( / *error* u)
  (setvar "tilemode" 1)
  
	(if (= 0 (getvar "WORLDUCS"))
   	(progn
      
      (defun *error* (msg)
      (if u (setvar "UCSFOLLOW" u))
        (princ msg)
      (princ))
      
      (setq u (getvar "UCSFOLLOW"))
				(setvar "UCSFOLLOW" 1)
					(command-s "._UCS" "_W")
			(setvar "UCSFOLLOW" u)
	));prognif
  
   (princ "\n +++ USC World +++ \n")
);defun

  ;---------------------------------------  
  (defun Jaga00ZoomExAll ()

     (foreach n (layoutlist)
       (setvar "CLAYOUT" n)
        (command-s "._ZOOM" "_E")
     );foreach
    
       (setvar "tilemode" 1)
       (command-s "._ZOOM" "_E")
    
     (princ "\n +++ 全体ズーム +++ \n")
    
  );defun
  
  
;=====================================================================================
;=====================================================================================
(defun Jaga00START ()
  (setq DefErr *error* *error* Jaga00ERR) 
;--------------------------------------- 
  (setq DefCmdEcho (getvar "CMDECHO")) 
    (setvar "CMDECHO" 0)
  (setq DefDynMode (getvar "DYNMODE")) 
    (setvar "DYNMODE" 3)
;-----------------------------------------
(princ "\nJaga00START\n") 
(princ));defun
;=====================================================================================
(defun Jaga00END ()
  (setvar "DYNMODE" DefDynMode)
  (setvar "CMDECHO" DefCmdEcho)
 ;-----------------------------------------	 
   (setq *error* DefErr) 
(princ "\nJaga00END\n")
(princ));defun
;=====================================================================================
(defun Jaga00ERR (msg)	
   (Jaga00END)
(princ (strcat"\nJaga00ERR\n " msg))
(princ));defun
;=====================================================================================

設定の保存

チェックボックスの設定は保存されないので、図面ファイルを閉じると、初期設定に戻ります。

チェックボックスの設定を繰り返し使いたい場合は、変数 g00WLD g00XE g00Ly0 g00SV をレジストリに保存すると、同じパソコンであれば閉じても他の図面ファイルでも、同じ設定でダイアログボックスが出てきます。

変数の保存方法についてはこちらの記事を参考にしてください。

参考記事

チェックボックスのダイアログボックスについて

Comments