acad-arx-wizard について
acad-arx-wizard は、PowerShell スクリプトで ObjectARX の C++ プロジェクトやクラスを生成するスキルです。Visual Studio 2026 を使う AutoCAD 2027 開発者向けで、従来のウィザードの代替にもなります。
主な機能
- 01ARX、DBX、CRX プロジェクトの生成
- 02一般的な ObjectARX クラスの生成
- 03スクリプトに必要な引数の収集
- 04ビルド設定リファレンスの提供
- 05生成やビルドの問題の調査
活用シーン
- 01ObjectARX プロジェクトの新規作成
- 02Jig または Reactor クラスの追加
- 03MFC、.NET、COM ラッパーの生成
- 04SDK やリンカー設定の問題を診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ autodesk-platform-services/ skills --skill acad-arx-wizardインストール後、Claude Code で/acad-arx-wizardを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mddocs/arx-dev-guide.mdlearnings.mdprops/Autodesk.arx-2027-net.propsAutodesk.arx-2027.propscrx.propsscripts/Invoke-TemplateExpansion.ps1New-ArxApp.ps1New-ArxComWrapper.ps1New-ArxCustomObject.ps1New-ArxDynProp.ps1New-ArxJig.ps1New-ArxMFCSupport.ps1New-ArxNETWrapper.ps1New-ArxReactors.ps1templates/arx-app/acrxEntryPoint.cppAssemblyInfo.cppAutodesk.arx-2027-net.propsAutodesk.arx-2027.propscrx.propsDocData.cppDocData.hReadMe.txtResource.hroot.cpproot.idlroot.rcroot.rgsStdAfx.cppStdAfx.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からこのスキルのテンプレートファイルに取り込んでください。