概要
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:と表示されますので、画面上をピックします。
- スイープを使って円柱が作成されます。