【AutoCAD】GUIカスタマイズ入門3 シリンダーを作る(dcl) -20分-

AutoCAD

概要

DCL

//--------------------------------------
// MySweepDialog
//--------------------------------------
MySweepDialog : dialog {
  key = "Title";
  label = "";
  initial_focus = "Edit1";
  spacer;
  : row {
    fixed_width = true;
    : column {
      width = 24.76;
      fixed_width = true;
      spacer;
      : text {
        key = "Text1";
        label = "";
      }
    }
    : edit_box {
      key = "Edit1";
      edit_width = 9.42;
      fixed_width = true;
    }
  }
  : row {
    fixed_width = true;
    : column {
      width = 24.76;
      fixed_width = true;
      spacer;
      : text {
        key = "Text2";
        label = "";
      }
    }
    : edit_box {
      key = "Edit2";
      edit_width = 9.42;
      fixed_width = true;
    }
  }

  spacer;
  ok_cancel;
}

AutoLisp

;-----------------------------------------------
; Syntax: MySweep01
;-----------------------------------------------
(defun c:MySweep01 (/ Dcl_Id% Edit1$  Edit10$ Edit2$ Return# circ lin p1 p2 )
  (print "MySweep01")

  (setq Dcl_Id% (load_dialog "sweep01.dcl"))
  (new_dialog "MySweepDialog" Dcl_Id%)
     
  (set_tile "Title" "円柱を作成")
  (set_tile "Text1" "長さ(mm)")
  (set_tile "Edit1" "3000")
  (set_tile "Text2" "半径(mm)")
  (set_tile "Edit2" "100")
  
  (action_tile "cancel" "(done_dialog 0)")  
  (action_tile "accept" "(getVariable)(done_dialog 1)")

  (setq Return# (start_dialog))
  
  (if (= Return# 1) 
    (progn
        (setq p1 (getpoint "pick point:")   p2 (polar p1 (/ pi 2)  (atof Edit1$ )))  
        (command "._line" p1 p2 "")
        (setq lin (entlast))
        (command "._circle" p1  Edit2$ )
        (setq circ (entlast))
        (command "._sweep" circ "" lin)
        (unload_dialog Dcl_Id%) 
        (print  (strcat "len = " Edit1$) )
        (print  (strcat "r =   " Edit2$) )
    )  
  )   
)

(defun getVariable()
	(setq Edit1$ (get_tile "Edit1"))
	(setq Edit2$ (get_tile "Edit2"))
)

実行方法

  • 全ソース(DCL)を、sweep.dclとして保存し、AutoCADのパスの通っているフォルダーの入れます。例えば、C:\Program Files\Autodesk\AutoCAD 2022\Support です。
  • 全ソース(autolisp)をsweep01.lspとして保存します。
  • sweep01.lspをAutoCADにD&D(ドラック&ドロップ)します。以下のようなメッセージが出力されますので、”常にロードする”を選択します。
  • AutoCADのコマンドにMySweep01と打ち込み、実行します。
  • ダイアログが表示されます。
  • 長さ、半径を入力して、「OK」ボタンを押します。
  • ”MySweep01″ pick point:と表示されますので、画面上をピックします。
  • スイープを使って円柱が作成されます。