この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

関数が間違っています: "-側面"
度々すみません。

使用CAD:AutoCAD2025


フランジとエルボのブロックをファイル名指定して挿入するlispを作っております。(このあとチーズ、ニップルなど多岐にわたって同じように作っていきたい)
フランジはうまく動くのですがエルボが引数fitの関数が間違っていますと言われているようです。
今まで色々改造しながら作ってうまくいっていたのですが、今日突然エラーメッセージがでてしまいました。
FILEという型が想定されているらしいのですが、よく意味がわかりません。
ご教授いただけないでしょうか?


;■ロングorショートorHT
(defun get_my_Elbow_LongShort_HT()
(initget 1 "No Short Ht SHt")
(setq whichFitting (getkword "[No / Short / Ht / SHt ショートHT]"))
(cond ((= whichFitting "No")(setq LS "" HT ""))
((= whichFitting "Short")(setq LS "ショート" HT ""))
((= whichFitting "Ht")(setq LS "" HT "HT"))
((= whichFitting "SHt")(setq LS "ショート" HT "HT"))
(t)
);cond
(princ)
);defun
;(get_my_Elbow_LongShort_HT)

;■視点
(defun get_my_ViewPoint()
(initget 1 "El Side Front IL Top Bottom Cut Oku No")
(setq whichFitting (getkword "[El エルボ付き / Side 側面 / Front 正面 / IL I&L / Top 平面 / Bottom 下面 / Cut 断面 / Oku 奥側 / No 視点なし]"))
(cond ((= whichFitting "El")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "エルボ付き" LS)))
((= whichFitting "Side")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "側面" LS)))
((= whichFitting "Front")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "正面" LS)))
((= whichFitting "IL")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "I&L" LS)))
((= whichFitting "Top")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "平面" LS)))
((= whichFitting "Bottom")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "下面" LS)))
((= whichFitting "Cut")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "断面" LS)))
((= whichFitting "Oku")(get_my_Elbow_LongShort_HT)(setq vpoint (strcat "-" HT "奥側" LS)))
((= whichFitting "No")(get_my_Elbow_LongShort_HT)(setq vpoint ""))
(t)
);cond
(princ)
);defun
;(get_my_ViewPoint)


;■フランジ種類
(defun get_my_Flange()
(initget 1 "Welded Screwed Ts Blind Lapjyoint")
(setq whichFitting (getkword "[Welded / Screwed / Ts / Blind / Lapjyoint]"))
(cond ((= whichFitting "Welded")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "溶接フランジ " kf " "))(get_my_ViewPoint))
((= whichFitting "Screwed")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "ねじ込みフランジ " kf " "))(get_my_ViewPoint))
((= whichFitting "Ts")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "塩ビフランジ " kf " "))(get_my_ViewPoint))
((= whichFitting "Blind")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "BLIND " kf " ")vpoint "-正面"))
((= whichFitting "Lapjyoint")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "LAPJYOINT " kf " ") vpoint ""))
(t)
);cond
(princ)
);defun
;(get_my_Flange_name)

;■エルボ種類
(defun get_my_Elbow()
(initget 1 "Els 45 Street Kei Water")
(setq whichFitting (getkword "[Els / 45 / Street / Kei 径違いエルボ / Water 給水栓エルボ]"))
(cond ((= whichFitting "Els")(setq wst (getstring "[(W)/(S)/(T)]"))(if (= wst "W")(setq wst "溶接"))(if (= wst "S")(setq wst "ねじ込み"))(if (= wst "T")(setq wst "塩ビ"))(setq fit (strcat wst "エルボ "))(get_my_ViewPoint))
((= whichFitting "45")(setq wst (getstring "[(W)/(S)/(T)]"))(if (= wst "W")(setq wst "溶接"))(if (= wst "S")(setq wst "ねじ込み"))(if (= wst "T")(setq wst "塩ビ"))(setq fit (strcat wst "45°エルボ "))(get_my_ViewPoint))
((= whichFitting "Street")(setq fit "ストリートエルボ ")(get_my_ViewPoint))
((= whichFitting "Kei")(setq fit "径違いエルボ ")(get_my_ViewPoint))
((= whichFitting "Water")(setq fit "給水栓エルボ ")(get_my_ViewPoint))
(t)
);cond
(princ)
);defun
;(get_my_Elbow)



実行ファイル(この実行ファイルはファイル名fit 視点vportの名前を決定するまでの途中のものです)
;■フランジ挿入
(defun c:insert_flange (/ Psize VPsize fit vpoint filename)
(get_my_Flange);フランジ種類選択
(princ)
);defun

;■エルボ挿入
(defun c:insert_elbow (/ Psize VPsize fit vpoint filename)
(get_my_Elbow)
(princ)
);defun



コマンドの流れです
コマンド: INSERT_ELBOW
[Els / 45 / Street / Kei 径違いエルボ / Water 給水栓エルボ]E
[(W)/(S)/(T)]W
[El エルボ付き / Side 側面 / Front 正面 / IL I&L / Top 平面 / Bottom 下面 / Cut 断面 / Oku 奥側 / No 視点なし]S
[No / Short / Ht / SHt ショートHT]N
; エラー: 関数が間違っています: "-側面"


以上ですがよろしくお願いします。
  • mappy
  • 2025/07/18 (Fri) 14:15:40 New
Re: 関数が間違っています:
((= whichFitting "Els")(setq wst (getstring "[(W)/(S)/(T)]"))(if (= wst "W")(setq wst "溶接"))(if (= wst "S")(setq wst "ねじ込み"))(if (= wst "T")(setq wst "塩ビ"))(setq fit (strcat wst "エルボ " (get_my_ViewPoint))))

ここの最後の部分、
(setq fit (strcat wst "エルボ "))(get_my_ViewPoint))
じゃなくて、
(setq fit (strcat wst "エルボ " (get_my_ViewPoint))))

じゃないのかな? 他も全部。

あと、
((= whichFitting "Blind")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "BLIND " kf " ")vpoint "-正面"))
のvpointの前にはスペースが必要では?
  • Hamu
  • 2025/07/18 (Fri) 16:28:44 New
Re: 関数が間違っています:
Hamu様

いつもいつもありがとうございます。

また今日も時間無くなってしまいましたので来週早々修正してみます。

  • mappy
  • 2025/07/18 (Fri) 17:09:01 New
Re: 関数が間違っています:
キーワード入力が多いので、毎回入力するのが大変そうですね。
ダイアログ作ると便利ですよ。
ダイアログの構造を理解するまでは発狂するかもしれませんがwww

VBAの知識が有るなら、ダイアログだけVBAで作ると簡単に見栄えの良い物ができます。
(作図処理までVBAでやらせても良いですが、そこはLISPの方が簡単)

それか、こんな風に完全に別アプリとして作るとか。
https://yu-soft.com/a-piping/
  • Hamu
  • 2025/07/18 (Fri) 17:34:03 New
Re: 関数が間違っています:
動くか判りませんが、ダイアログにするとこんな感じ。
(感じだけ感じ取ってもらえれば。)

// ファイル名:myfittingdialog.dcl ダイアログを設定するdclコード。

my_fitting_dialog : dialog {
label = "継手選択";
: row {
: column {
: boxed_radio_column {
label = "エルボの種類 (Elbow Type)";
key = "elbow_type_group";
: radio_button {
label = "エルボ (Els)";
key = "rb_els";
value = "1"; // デフォルトで選択
}
: radio_button {
label = "45°エルボ (45)";
key = "rb_45";
}
: radio_button {
label = "ストリートエルボ (Street)";
key = "rb_street";
}
: radio_button {
label = "径違いエルボ (Kei)";
key = "rb_kei";
}
: radio_button {
label = "給水栓エルボ (Water)";
key = "rb_water";
}
} // end boxed_radio_column

spacer; // スペーサーで間隔を空ける

: boxed_radio_column {
label = "溶接/ねじ込み/塩ビ (W/S/T)";
key = "wst_type_group";
: radio_button {
label = "溶接 (W)";
key = "rb_w";
value = "1";
}
: radio_button {
label = "ねじ込み (S)";
key = "rb_s";
}
: radio_button {
label = "塩ビ (T)";
key = "rb_t";
}
is_enabled = false; // 初期状態では無効
} // end boxed_radio_column
} // end column

: column {
: boxed_radio_column {
label = "視点 (View Point)";
key = "viewpoint_group";
: radio_button {
label = "エルボ付き (El)";
key = "rb_el";
value = "1";
}
: radio_button {
label = "側面 (Side)";
key = "rb_side";
}
: radio_button {
label = "正面 (Front)";
key = "rb_front";
}
: radio_button {
label = "I&L (IL)";
key = "rb_il";
}
: radio_button {
label = "平面 (Top)";
key = "rb_top";
}
: radio_button {
label = "下面 (Bottom)";
key = "rb_bottom";
}
: radio_button {
label = "断面 (Cut)";
key = "rb_cut";
}
: radio_button {
label = "奥側 (Oku)";
key = "rb_oku";
}
: radio_button {
label = "視点なし (No)";
key = "rb_view_no";
}
} // end boxed_radio_column

spacer;

: boxed_radio_column {
label = "ロング/ショート/HT (Long/Short/HT)";
key = "ls_ht_group";
: radio_button {
label = "なし (No)";
key = "rb_ls_no";
value = "1";
}
: radio_button {
label = "ショート (Short)";
key = "rb_short";
}
: radio_button {
label = "HT (Ht)";
key = "rb_ht";
}
: radio_button {
label = "ショートHT (SHt)";
key = "rb_sht";
}
is_enabled = false; // 初期状態では無効
} // end boxed_radio_column
} // end column

: column {
: boxed_radio_column {
label = "フランジ種類 (Flange Type)";
key = "flange_type_group";
: radio_button {
label = "溶接フランジ (Welded)";
key = "rb_welded";
}
: radio_button {
label = "ねじ込みフランジ (Screwed)";
key = "rb_screwed";
}
: radio_button {
label = "塩ビフランジ (Ts)";
key = "rb_ts";
}
: radio_button {
label = "BLIND (Blind)";
key = "rb_blind";
}
: radio_button {
label = "LAPJYOINT (Lapjyoint)";
key = "rb_lapjyoint";
}
value = "0"; // 初期値なし
} // end boxed_radio_column

spacer;

: boxed_radio_column {
label = "KFタイプ (KF Type)";
key = "kf_type_group";
: radio_button {
label = "10KF";
key = "rb_10kf";
value = "1";
}
: radio_button {
label = "5KF";
key = "rb_5kf";
}
is_enabled = false; // 初期状態では無効
} // end boxed_radio_column
} // end column
} // end row

ok_cancel; // OK と Cancel ボタン
} // end dialog

***********************************************************************************

;ファイル名を作成するlispコード

(defun c:MyFittingGUI ( / dcl_id result selected_elbow selected_wst
selected_viewpoint selected_ls_ht
selected_flange selected_kf
fit vpoint LS HT kf)
(vl-load-com) ; VL関数をロード

;; DCLファイルの読み込み
(setq dcl_id (load_dialog "myfittingdialog.dcl"))
(if (not dcl_id)
(progn
(alert "DCLファイル 'myfittingdialog.dcl' をロードできませんでした。")
(exit)
)
)

;; ダイアログ初期化
(new_dialog "my_fitting_dialog" dcl_id)

;; 初期状態で無効にする
(mode_tile "wst_type_group" 1)
(mode_tile "ls_ht_group" 1)
(mode_tile "kf_type_group" 1)

;; エルボ種類によって WST を有効化
(action_tile "rb_els" "(mode_tile \"wst_type_group\" 0)")
(action_tile "rb_45" "(mode_tile \"wst_type_group\" 0)")
(action_tile "rb_street" "(mode_tile \"wst_type_group\" 1)")
(action_tile "rb_kei" "(mode_tile \"wst_type_group\" 1)")
(action_tile "rb_water" "(mode_tile \"wst_type_group\" 1)")

;; 視点によって LS_HT を切り替える
(action_tile "rb_view_no" "(mode_tile \"ls_ht_group\" 1)")
(action_tile "rb_el" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_side" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_front" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_il" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_top" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_bottom" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_cut" "(mode_tile \"ls_ht_group\" 0)")
(action_tile "rb_oku" "(mode_tile \"ls_ht_group\" 0)")

;; フランジの選択で KF を有効化
(action_tile "rb_welded" "(mode_tile \"kf_type_group\" 0)")
(action_tile "rb_screwed" "(mode_tile \"kf_type_group\" 0)")
(action_tile "rb_ts" "(mode_tile \"kf_type_group\" 0)")
(action_tile "rb_blind" "(mode_tile \"kf_type_group\" 0)")
(action_tile "rb_lapjyoint" "(mode_tile \"kf_type_group\" 0)")

;; ダイアログ表示
(setq result (start_dialog))

;; OKボタン押下時
(if (= result 1)
(progn
(setq selected_elbow (get_tile "elbow_type_group"))
(setq selected_wst (get_tile "wst_type_group"))
(setq selected_viewpoint (get_tile "viewpoint_group"))
(setq selected_ls_ht (get_tile "ls_ht_group"))
(setq selected_flange (get_tile "flange_type_group"))
(setq selected_kf (get_tile "kf_type_group"))

(setq fit "")
(cond
((= selected_elbow "rb_els")
(setq wst (cond ((= selected_wst "rb_w") "溶接")
((= selected_wst "rb_s") "ねじ込み")
((= selected_wst "rb_t") "塩ビ")
(t "")
)
)
(setq fit (strcat wst "エルボ "))
)
((= selected_elbow "rb_45")
(setq wst (cond ((= selected_wst "rb_w") "溶接")
((= selected_wst "rb_s") "ねじ込み")
((= selected_wst "rb_t") "塩ビ")
(t "")
)
)
(setq fit (strcat wst "45°エルボ "))
)
((= selected_elbow "rb_street") (setq fit "ストリートエルボ "))
((= selected_elbow "rb_kei") (setq fit "径違いエルボ "))
((= selected_elbow "rb_water") (setq fit "給水栓エルボ "))
)

;; ロング/ショート/HTの処理
(setq LS "")
(setq HT "")
(cond
((= selected_ls_ht "rb_short") (setq LS "ショート"))
((= selected_ls_ht "rb_ht") (setq HT "HT"))
((= selected_ls_ht "rb_sht") (setq LS "ショート" HT "HT"))
)

;; 視点の処理
(setq vpoint "")
(cond
((= selected_viewpoint "rb_el") (setq vpoint (strcat "-" HT "エルボ付き" LS)))
((= selected_viewpoint "rb_side") (setq vpoint (strcat "-" HT "側面" LS)))
((= selected_viewpoint "rb_front") (setq vpoint (strcat "-" HT "正面" LS)))
((= selected_viewpoint "rb_il") (setq vpoint (strcat "-" HT "I&L" LS)))
((= selected_viewpoint "rb_top") (setq vpoint (strcat "-" HT "平面" LS)))
((= selected_viewpoint "rb_bottom") (setq vpoint (strcat "-" HT "下面" LS)))
((= selected_viewpoint "rb_cut") (setq vpoint (strcat "-" HT "断面" LS)))
((= selected_viewpoint "rb_oku") (setq vpoint (strcat "-" HT "奥側" LS)))
((= selected_viewpoint "rb_view_no") (setq vpoint ""))
)

;; KF処理
(setq kf (cond ((= selected_kf "rb_10kf") "10KF")
((= selected_kf "rb_5kf") "5KF")
(t "")
)
)
(cond
((= selected_flange "rb_welded") (setq fit (strcat "溶接フランジ " kf " ")) (setq vpoint (if (eq selected_flange "rb_blind") "-正面" vpoint)))
((= selected_flange "rb_screwed") (setq fit (strcat "ねじ込みフランジ " kf " ")) (setq vpoint (if (eq selected_flange "rb_blind") "-正面" vpoint)))
((= selected_flange "rb_ts") (setq fit (strcat "塩ビフランジ " kf " ")) (setq vpoint (if (eq selected_flange "rb_blind") "-正面" vpoint)))
((= selected_flange "rb_blind") (setq fit (strcat "BLIND " kf " ") vpoint "-正面"))
((= selected_flange "rb_lapjyoint") (setq fit (strcat "LAPJYOINT " kf " ") vpoint ""))
)

;; 結果表示(ログ)
(princ (strcat "\n継手: " fit))
(princ (strcat "\n視点: " vpoint))
(princ (strcat "\nLS: " LS))
(princ (strcat "\nHT: " HT))
(princ (strcat "\nKF: " kf))
(princ)
)
(princ "\nユーザーによってキャンセルされました。")
)

;; ダイアログをアンロード
(unload_dialog dcl_id)
(princ)
)
  • Hamu
  • 2025/07/19 (Sat) 06:50:01 New

返信フォーム






プレビュー (投稿前に内容を確認)