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

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

AutoLISPについて
こんにちは。
AutoCAD Mechanical2025を使用しています。
AutoLISPを使ってコマンドを作成しています。
円の中心線を描く[AMCENCRINHOLE]コマンドですが
以下の様にコーディングしましたが
そのようなコマンドはありません!とAutoCADに怒られます。
どうしてでしょうか?

(command "._AMCENCRINHOLE" "F" "NONE" (list x_min y_min) "NONE" (list x_max y_max) "" "")
  • パン君
  • 2025/05/16 (Fri) 11:54:13
Re: AutoLISPについて
AMで始まるコマンドなので、mechanical独自のものですね。
おそらく、そのコマンドは通常使用される際にロードされるものなのだと思われます。
(多分、そのファイルで一度そのコマンドを普通に実行した後なら、Lispが使えると思います。)

なので、command関数を使う前にそのコマンドのファイルをロードできればいいんですが、Mechanicalを持ってないので、どのファイルをロードすればそのコマンドが使えるようになるかは、ちょっと分かりかねます。

  • LUNE
  • 2025/05/16 (Fri) 13:49:43
Re: AutoLISPについて
>おそらく、そのコマンドは通常使用される際にロードされるものなのだと思われます。

であるなら、ネイティブなコマンドではない事になりますので、command関数では実行できないかもしれません。
(Mechanicalを持ってないので想像です)

その場合、vla-SendCommandを使用することで可能になると思いますが、
AMCENCRINHOLEコマンドを実行した後にLISPの処理が続くのなら、適さないです。
(LISPがvla-SendCommandを実行して終了なら大丈夫)

(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))

(vla-SendCommand doc (strcat "._AMCENCRINHOLE F NONE " (rtos x_min) "," (rtos y_min) " NONE " (rtos x_max) "," (rtos y_max) " " " " " "))
  • さかな
  • 2025/05/17 (Sat) 06:44:12
Re: AutoLISPについて
LUNEさん、さかなさん貴重なアドバイスありがとうございます。

以下を実行したところお陰様でイメージ通りの処理ができました。
本当にありがとうございました。

(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-SendCommand doc (strcat "._AMCENCRINHOLE F NONE " (rtos x_min) "," (rtos y_min) " NONE " (rtos x_max) "," (rtos y_max) " " " " " "))


  • パン君
  • 2025/05/19 (Mon) 09:53:36

返信フォーム






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