mcpField
A
acad-arx-wizard

acad-arx-wizard

github.com/autodesk-platform-services開発3153 回インストール4 週間前に更新
リポジトリ

acad-arx-wizard について

acad-arx-wizard は、PowerShell スクリプトで ObjectARX の C++ プロジェクトやクラスを生成するスキルです。Visual Studio 2026 を使う AutoCAD 2027 開発者向けで、従来のウィザードの代替にもなります。

主な機能

  1. 01ARX、DBX、CRX プロジェクトの生成
  2. 02一般的な ObjectARX クラスの生成
  3. 03スクリプトに必要な引数の収集
  4. 04ビルド設定リファレンスの提供
  5. 05生成やビルドの問題の調査

活用シーン

  1. 01ObjectARX プロジェクトの新規作成
  2. 02Jig または Reactor クラスの追加
  3. 03MFC、.NET、COM ラッパーの生成
  4. 04SDK やリンカー設定の問題を診断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autodesk-platform-services/skills --skill acad-arx-wizard

インストール後、Claude Code で/acad-arx-wizardを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
docs/
arx-dev-guide.md
learnings.md
props/
Autodesk.arx-2027-net.props
Autodesk.arx-2027.props
crx.props
scripts/
Invoke-TemplateExpansion.ps1
New-ArxApp.ps1
New-ArxComWrapper.ps1
New-ArxCustomObject.ps1
New-ArxDynProp.ps1
New-ArxJig.ps1
New-ArxMFCSupport.ps1
New-ArxNETWrapper.ps1
New-ArxReactors.ps1
templates/arx-app/
acrxEntryPoint.cpp
AssemblyInfo.cpp
Autodesk.arx-2027-net.props
Autodesk.arx-2027.props
crx.props
DocData.cpp
DocData.h
ReadMe.txt
Resource.h
root.cpp
root.idl
root.rc
root.rgs
StdAfx.cpp
StdAfx.h

詳細

ObjectARX Wizard Skill — AutoCAD 2027 / VS 2026

AI との会話と PowerShell ジェネレーターを使用して、ObjectARX C++ プロジェクトとクラスをスキャフォールドします。

スキルの場所

スクリプトは、この SKILL.md と同じフォルダーにあります。

<skill-root>/
├── SKILL.md
├── docs/
│   ├── arx-dev-guide.md              ← ObjectARX 2027 build configuration reference
│   └── learnings.md                  ← live wiki: gotchas, workarounds, verified API behaviors
├── scripts/
│   ├── Invoke-TemplateExpansion.ps1   ← shared token engine (do not call directly)
│   ├── New-ArxApp.ps1                 ← full ARX/DBX/CRX project
│   ├── New-ArxCustomObject.ps1        ← custom ObjectDBX entity class
│   ├── New-ArxReactors.ps1            ← transient reactor class
│   ├── New-ArxJig.ps1                 ← AcEdJig subclass
│   ├── New-ArxMFCSupport.ps1          ← MFC dialog / palette / control
│   ├── New-ArxNETWrapper.ps1          ← managed .NET wrapper
│   ├── New-ArxComWrapper.ps1          ← ATL COM wrapper object
│   └── New-ArxDynProp.ps1             ← ATL dynamic property class
├── templates/                         ← source template files (do not edit)
└── props/                             ← Autodesk.arx-2027.props, crx.props

使用するタイミング

  • 開発者が VS 2026 で新しい AutoCAD 2027 ARX/DBX/CRX C++ プロジェクトを開始したい場合
  • 開発者が既存のプロジェクトに Jig、Reactor、Custom Object などのクラスを追加したい場合
  • 従来の VS ウィザード(File → New → Project → ObjectARX)が動作しない場合(VS 2026 のリグレッション — MS Developer Community #11071541 を参照)

ウィザードの種類

ユーザーの発言...実行するスクリプト
"ARX app", "new plugin", "create project"New-ArxApp.ps1
"custom object", "custom entity", "AcDbEntity subclass"New-ArxCustomObject.ps1
"reactor", "database reactor", "entity reactor"New-ArxReactors.ps1
"jig", "AcEdJig", "interactive input"New-ArxJig.ps1
"MFC dialog", "palette", "dockbar", "MFC class"New-ArxMFCSupport.ps1
".NET wrapper", "managed wrapper", "C++/CLI"New-ArxNETWrapper.ps1
"COM wrapper", "ATL object", "IDispatch"New-ArxComWrapper.ps1
"dynamic property", "AcDbDynBlockReference", "dynprop"New-ArxDynProp.ps1

手順

ステップ 1 — スキルのルートを特定する

この SKILL.md があるディレクトリの絶対パスを解決します。 すべてのスクリプトは次の場所にあります:<skill-root>\scripts\


ステップ 2 — ウィザードの種類を特定する

ユーザーの意図を、上記 8 種類のウィザードのいずれかに対応付けます。不明な場合は、次のように尋ねます。

"どのウィザードが必要ですか? 新しい ARX/DBX/CRX プロジェクトですか、それとも追加クラス(Jig、Reactor、Custom Object、MFC、.NET Wrapper、COM Wrapper、Dynamic Property)ですか?"


ステップ 3 — パラメーターを収集する

不足している必須パラメーターだけを尋ねます。ユーザーが言及しない限り、任意パラメーターについては尋ねないでください。

New-ArxApp — プロジェクト全体
パラメーター必須値不足している場合に尋ねる内容
-ProjectNameはい有効な C++ 識別子"プロジェクト名は何ですか?"
-OutputPathはいフォルダーパス"プロジェクトはどこに作成しますか?"
-AppTypeいいえarx / dbx / crx既定値:arx(ユーザーが迷っている場合は尋ねる)
-MfcModeいいえnone / shared / ext既定値:none
-UseAtlいいえスイッチユーザーが COM に言及した場合のみ尋ねる
-UseDotNetいいえスイッチユーザーが .NET または CLR に言及した場合のみ尋ねる
-RdsPrefixいいえ3 文字のシンボル既定値:Adk
New-ArxCustomObject — カスタムエンティティ
パラメーター必須既定値
-ClassNameはい—
-OutputPathはい—
-BaseClassいいえAcDbEntity
-Protocolsいいえ2(Object + Entity)
-ProjectNameいいえMyProject
New-ArxReactors — リアクター
パラメーター必須備考
-ClassNameはい—
-ReactorTypeはい下記のリアクタータイプ一覧を参照
-OutputPathはい—
-ProjectNameいいえMyProject

一般的なリアクタータイプ:AcDbDatabaseReactor、AcDbObjectReactor、AcDbEntityReactor、 AcEdInputContextReactor、AcApDocManagerReactor、AcDbLayoutManagerReactor、 AcDbAnnotationScaleReactor、AcDMMReactor

New-ArxJig — ジグクラス
パラメーター必須既定値
-ClassNameはい—
-OutputPathはい—
-ObjectNameいいえAcDbEntity
-NumberOfInputsいいえ1
-ProjectNameいいえMyProject
New-ArxMFCSupport — MFC クラス
パラメーター必須既定値
-ClassNameはい—
-OutputPathはい—
-MfcTypeいいえDialog
-IddDialogいいえIDD_DIALOG1
-ProjectNameいいえMyProject

MFC の種類:Dialog、ChildDialog、TabDialog、Palette、PaletteSet、 DockControlBar、Control、FileDialog、FileNavDialog、 FieldDialog、FieldFormatDialog、FieldOptionDialog

New-ArxNETWrapper — マネージドラッパー
パラメーター必須デフォルト
-WrapperNameはい—
-OutputPathはい—
-CustomObjectNameいいえAcDbEntity
-CompanyNamespaceいいえAutodesk
-ObjectNamespaceいいえAutoCAD
-ManagedDerivationいいえEntity
-ProjectNameいいえMyProject
New-ArxComWrapper — ATL COM ラッパー
パラメーター必須デフォルト
-ShortNameはい—
-OutputPathはい—
-ConnectionPointsいいえスイッチ
-InterfaceDualいいえスイッチ
-ProjectNameいいえMyProject
New-ArxDynProp — 動的プロパティ
パラメーター必須デフォルト
-ClassNameはい—
-OutputPathはい—
-InterfaceNameいいえClassName から派生
-ConnectionPointsいいえスイッチ
-ProjectNameいいえMyProject

ステップ 4 — スクリプトを実行する

PowerShell ターミナルで、<skill-root>\scripts\ から適切なスクリプトを実行します。

ARX プロジェクト全体を作成する例:

& powershell.exe -ExecutionPolicy Bypass -NoProfile -File "<skill-root>\scripts\New-ArxApp.ps1" `
    -ProjectName MyPlugin `
    -OutputPath  "C:\Dev" `
    -AppType     arx `
    -MfcMode     shared

Jig アドオンを作成する例:

& powershell.exe -ExecutionPolicy Bypass -NoProfile -File "<skill-root>\scripts\New-ArxJig.ps1" `
    -ClassName      CMyJig `
    -ObjectName     AcDbLine `
    -NumberOfInputs 2 `
    -ProjectName    MyPlugin `
    -OutputPath     "C:\Dev\MyPlugin"

ステップ 5 — 出力を確認する

スクリプトの実行後、出力フォルダーの内容を一覧表示して、生成されたファイルを確認します。

Get-ChildItem "C:\Dev\MyPlugin" | Select-Object Name, Length

ファイル一覧をユーザーに報告し、次の手順も伝えます。

New-ArxApp の場合:

"C:\Dev\MyPlugin\MyPlugin.vcxproj にプロジェクトを作成しました。Visual Studio 2026 で開きます。Autodesk.arx-2027.props の ObjectARX SDK パスを確認してから、Build → x64 Debug を実行してください。"

アドオンウィザードの場合:

"OutputPath に ClassName.h と ClassName.cpp を生成しました。Visual Studio で、プロジェクトを右クリック → Add → Existing Item → ファイルを選択してください。"


トラブルシューティング

問題対処方法
Destination already exists別の -OutputPath を指定するか、既存のフォルダーを先に削除してください
ReactorType not found完全な一覧を表示するには、Get-ChildItem <skill-root>\templates\reactors\*_tmpl.h | ForEach-Object { $_.Name -replace '_tmpl\.h$','' } を実行してください
ビルドエラー:Cannot open include file 'acdb.h'ARXSDK 環境変数を設定するか、Autodesk.arx-2027.props を編集して ObjectARX 2027 SDK のパスを指定してください
.NET ラッパーで CLRSupport エラーが発生するプロジェクトの .vcxproj に <CLRSupport>NetCore</CLRSupport> が含まれていることを確認してください
VS 2026 ウィザードがまだ動作しないこのスキルがウィザードに代わるものです。動作しない File→New ウィザードは無視し、代わりにこのスキルを使用してください。

スキャフォールディング後:ビルド構成のリファレンス

プロジェクトのスキャフォールディング後、開発者(または AI エージェントであるあなた)はプラグインコードの作成を続けます。ビルド設定、ライブラリの選択、プリプロセッサ定義、またはリンカー/ランタイムエラーの診断を支援する場合は、<skill-root>/docs/arx-dev-guide.md を読んでください。このドキュメントでは、次の内容を説明しています。

  • 必須のコンパイラーフラグ(/MD、/EHsc、/GR など)と、それぞれが重要な理由
  • プロパティシートの継承チェーン(rxsdk_common → debug/release → dbx/arx/crx)
  • プロジェクトの種類(DBX、ARX、CRX)およびオプションの API(B-Rep、AEC Modeler)ごとにリンクする .lib ファイル
  • Debug 構成と Release 構成の違い
  • よくある落とし穴 — 特に /MD と /MDd の規則(AutoCAD は常に Release バイナリです。プラグインでは Debug 構成でも /MD を使用する必要があります)

重要な規則: AutoCAD は Release ビルドとして出荷されます。プラグイン DLL は常に /MD(MultiThreadedDLL)でリンクし、/MDd は使用しないでください。/MDd を使うと、CRT の不一致、ヒープ破損、クラッシュが発生します。/MDd が有効なのは、Autodesk 内部用の Debug ビルド版 AutoCAD を使う場合のみです。


現場で得た知見

<skill-root>/docs/learnings.md は、実際の作業で遭遇した問題をまとめた更新中の Wiki です。VS 2026 + MFC + ARX SDK 2027 のビルドに関する落とし穴、DllMain の競合、MFC のモジュール状態に関する規則、スキャフォールディングの癖などを記載しています。次の場合に参照してください。

  • CRT/STL/RTC の不一致に見えるビルド/リンクエラーを診断するとき
  • MFC 共有モードで、スキャフォールディングしたプロジェクトの初回ビルドに失敗するとき
  • 新しいテンプレートを追加するとき — 新たに検証した修正があれば、今後のスキャフォールディングにも反映されるよう、learnings.md からこのスキルのテンプレートファイルに取り込んでください。

コメント