この掲示板は 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
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
Re: 関数が間違っています:
Hamu様

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

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

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

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

それか、こんな風に完全に別アプリとして作るとか。
https://yu-soft.com/a-piping/


追記)
この次に書いていたDCLのコードは、動かない様でしたので削除しました。
  • Hamu
  • 2025/07/18 (Fri) 17:34:03
Re: 関数が間違っています:
Hamu様

>(setq fit (strcat wst "エルボ " (get_my_ViewPoint))))
エルボと視点の間に口径サイズが入るのでこれだと引数fitにwstとvpointが結合されてしまうので分けました。
念の為(setq fit (strcat wst "エルボ " (get_my_ViewPoint))))に変更しましたがやはり同じエラーメッセージが出ました。


>((= whichFitting "Blind")(setq kf (getstring "[(10KF)/(5KF)]"))(setq fit (strcat "BLIND " kf " ")vpoint "-正面"))
のvpointの前にはスペースが必要では?
ここは気付きませんでした。ありがとうございます。
  • mappy
  • 2025/07/22 (Tue) 11:10:55
Re: 関数が間違っています:
Hamu様

色々ありがとうございます。
残念ながら私にはVBAの知識が全く無いので(数回挑戦しましたが難しすぎて挫折しました)厳しいです。すみません。

また、今作成中のLSPをツールパレットに登録して、フランジ、エルボなどをそれぞれ口径サイズを入力(前回値引用して同じ口径ならEnter)するだけで挿入できるようなイメージでLSPを書いておりますので弊社としましてはダイアログ入力の方が配管図作図の時に手間が掛かってしまうということで、ダイアログ入力は考えておりませんでした。(DCLでダイアログ作成も挑戦しましたがこれも難しくて断念しました)

P.S 書いていただいたDCLとLispコードを試してみましたが、うまく動きませんでした。お手間を取らせてしまい申し訳ありませんでした。
  • mappy
  • 2025/07/22 (Tue) 11:20:21
Re: 関数が間違っています:
何をどうしたいプログラムなのか説明が有りませんし、提示されているコードは部分的な物。
呼び出すファイル名が、どんな規則で命名されているのかの説明もない。
全て、回答者が想像しなさい。という前提で質問されていましたので、
とりあえず文法的に間違っている部分を間違っていない状態にしただけでした。

>エルボと視点の間に口径サイズが入るのでこれだと引数fitにwstとvpointが結合されてしまうので分けました。

なら、
(setq fit (strcat wst "エルボ ") vpoint (get_my_ViewPoint))


>DCLとLispコードを試してみましたが、うまく動きませんでした
動かない物をそのままにしておくのは嫌なので、消しました。
  • Hamu
  • 2025/07/22 (Tue) 12:19:18
Re: 関数が間違っています:
Hamu様

大変失礼いたしました。
説明が足りずお手間を取らせてしまいご迷惑お掛けしてしまいました。

>(setq fit (strcat wst "エルボ ") vpoint (get_my_ViewPoint))
こちらの回答を見て、本当に説明が足りていなかったことに気付きました。

お忙しい中対応いただいたのに中途半端な質問をしてしまい申し訳ありませんでした。
もっともっと検証してから、誰が見ても、読んでもわかるように説明文を入れて質問するべきでした。
以後気を付けます。
  • mappy
  • 2025/07/22 (Tue) 15:59:33

返信フォーム






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