C++でCADアドインを開発する方法|カスタマイズ・自動化・ObjectARXを解説

 1. はじめに

建設・建築・土木業界では、図面の作成や編集など、日々多くのCAD作業が発生します。特にAutoCADを使用する現場では、決められたルールに沿った作図や繰り返し行う修正など、定型的な作業も少なくありません。

しかし、CADの標準機能だけでは、自社独自の作図ルールや業務フローに十分対応できない場合があります。こうした課題を解決する方法の一つが、CADアドインによるカスタマイズです。CADアドインを活用することで、独自コマンドの追加やデータ編集の自動化など、業務に合わせた機能を追加できます。

AutoCADでは、C++を用いた開発環境としてObjectARXが提供されています。Autodeskによると、ObjectARXではAutoCADのデータベース構造やグラフィックスシステム、ネイティブコマンド定義などへ直接アクセスできます(参照*1)。本記事では、C++でCADアドインを開発する基本的な流れやポイントについて、専門用語をわかりやすく解説します。 

2. CADアドインの基本理解

CADアドインとは、CADの標準機能を拡張し、独自のコマンドや自動化処理を追加するプログラムです。例えばAutoCADでは、アドインを読み込むことで、新しいコマンドの実行や図面データの一括編集が可能になります。

CADアドインの開発には、対象となるCADソフトウェアが提供するAPIやSDKを利用します。製品によって対応する言語やAPIが異なるため、使用するCADに合わせた開発方法を選ぶ必要があります。

2.1. C++での開発メリット

C++はネイティブコードとして実行されるため、処理性能が重視されるCADアドインを開発する際の選択肢となります。

AutoCADでは、C++向けの開発環境であるObjectARXを利用できます。図面オブジェクトや属性情報などを操作でき、標準機能では対応しにくい要件に合わせたカスタマイズも可能です。

3. C++で実現できるCADアドインの機能

C++によるCADアドイン開発では、現場のニーズに合わせてさまざまな機能を実装できます。代表的な機能は、次のとおりです。 

主な機能活用例
独自コマンド・機能の追加複数図形の変換、指定レイヤの一括編集
CADデータの取得・編集図形・属性情報の取得、データの検証・修正
定型業務の自動化レイヤ・注釈設定、図面チェック

3.1. 独自コマンド・機能の追加

CADアドインでは、標準のメニューやコマンドだけでは対応しにくい独自の操作を追加できます。例えば、複数の図形をまとめて変換したり、指定したレイヤだけを抽出して一括編集したりする機能を実装できます。

AutoCADでは、こうしたコマンドをC++で定義し、ObjectARXを通じて利用できます。自社の業務手順に合わせたツールを開発することで、繰り返し作業の効率化につなげられます。

3.2. CADデータの取得・編集

AutoCADでは図面情報がデータベースとして管理されており、ObjectARX APIを使ってアクセスできます。Autodeskのリファレンスでは、AcDbDatabaseクラスはAutoCADの図面ファイルを表し、シンボルテーブルやエンティティ、各種オブジェクトなどを含むと説明されています(参照*2)。線分やポリラインなどの図形は、それぞれに対応するエンティティクラスを通じて取得・編集できます。

例えば、図面内の属性値を検証し、不備があるデータを修正するといった処理を自動化することも可能です。

3.3. 定型業務の自動化

繰り返し行うCAD作業もアドインで自動化できます。例えば、既定のテンプレートを読み込み、レイヤ構成や注釈設定をまとめて行う処理などが考えられます。

また、決められたルールに従って図面データの整合性を確認する仕組みを実装することで、図面チェックの負担軽減にもつなげられます。

4. ObjectARXについての深掘り

AutoCADをC++でカスタマイズする代表的な開発環境が、ObjectARX(オブジェクトARX)です。Autodeskが開発者向けに提供しており、AutoCADの機能を拡張するためのC++ APIやSDKを利用できます。

ObjectARXを理解することは、AutoCAD内部のデータベース構造やグラフィックスシステムなどと連携するうえで重要です。ここでは、ObjectARXの概要や提供されるSDK、アプリケーションの特徴について解説します。

また、ObjectARXを利用する際は、対象となるAutoCADのバージョンとSDK、開発環境の対応関係を確認することが重要です。開発を始める前に、Autodeskが公開している対象バージョンの要件を確認しておきましょう。

4.1. ObjectARX SDKの概要

ObjectARXのSDK(ソフトウェア開発キット)は、AutoCADやAutoCADベース製品をカスタマイズ・拡張するために提供されています(参照*3)。ヘッダファイルやライブラリ、サンプルなどを利用して、C++によるアプリケーション開発を進めます。

また、ObjectARXにはバージョンごとに開発環境の要件があります。例えばObjectARX 2027のWindows向け環境では、Microsoft Visual Studio 2026 version 18.0とVC tools version 14.44.35207が推奨されています。また、ObjectARX C++ではMicrosoft Visual Studio 2022 version 17.14.9も利用できます。そのため、使用するAutoCADに対応したSDKと開発環境を確認することが重要です。 

建設・土木・建築現場のように、長期にわたって同じバージョンのCADを使用するケースでは、安定稼働を重視し、対応が確認されているSDKを利用して開発を進めることが重要です。

4.2. ObjectARXアプリケーションの特徴

ObjectARXアプリケーションは、C++コードをコンパイルして作成するプログラムです。Windowsでは、コンパイルされたObjectARXアプリケーションは.arx拡張子を持つDLLとなり、AutoCADベース製品へロードして利用できます (参照*4)。これにより、独自コマンドやデータ操作機能などを追加できます。

ObjectARXアプリケーションでは、AutoCADから送られるメッセージに応じた処理も実装できます。こうした仕組みを利用することで、AutoCADの操作や図面データの状態に応じた処理など、自社の業務フローに合わせた機能を実装できます。

5. C++でCADアドインを開発するプロセス

C++でAutoCAD用のCADアドインを開発する基本的な流れは、次の4ステップです。

  1. 開発環境を準備する
  2. ObjectARXアプリケーションを作成する
  3. CADデータ操作の機能を実装する
  4. ビルド・ロードして動作を確認する

以下では、それぞれの手順を順番に解説します。

5.1. 開発環境の準備

最初に、対象とするAutoCADのバージョンに合ったObjectARX SDKを入手します。SDKはAutodeskの公式サイトから入手できるため、必ず使用するAutoCADのバージョンに対応したものを選びます。

次に、Visual Studioなどの開発ツールを準備し、C++のコンパイル環境を整えます。AutoCADのバージョンによって必要な開発環境が異なる場合があるため、マニュアルを参照して要件を確認しましょう。 

5.2. ObjectARXアプリケーションの作成

次のステップでは、C++のプロジェクトを作成し、ObjectARXのヘッダファイルやライブラリを参照できるように設定します。Autodeskの開発ガイドでは、ObjectARXアプリケーションの基本的な作成手順として、カスタムクラスの作成、AutoCADから送られるメッセージへの対応、エントリーポイントの実装、初期化、アンロードの準備などが示されています(参照*5)。

AutoCADからObjectARXアプリケーションを呼び出す際は、acrxEntryPoint()がエントリーポイントとなります(参照*5)。必要な初期化処理や終了時の処理を実装し、アプリケーションの基本構成を整えていきます。

基本構成ができたら、コンパイルエラーやリンクエラーが発生しないか確認し、正常にビルドできる状態に整えましょう。

5.3. CADデータ操作の実装

アプリケーションの基本部分ができたら、次はAutoCADの図面データを操作する処理を組み込んでいきます。ObjectARXが提供するAPIを通じて、AcDbDatabaseやAcDbEntityなどのクラスを利用し、目的に応じた処理を実装します。

例えば、図面内のすべてのラインを抽出し、特定の条件を満たすラインだけを警告メッセージとともにハイライトするといった処理が可能です。複雑なジオメトリ演算が必要な場合は、C++の数学ライブラリを併用するなど、目的に合わせて設計します。

実際には、データの読み取りや書き込み、オブジェクトの生成や削除といった基本機能を理解し、段階的に動作テストを行いながらコードを仕上げていくことが重要です。

5.4. ビルド・ロード・動作確認

最後に、アプリケーションをビルドしてAutoCADへロードします。AutoCADのコマンドラインなどからロードコマンドを実行し、作成したアプリケーション(.ARXファイルなど)を読み込むことで、追加した機能を利用できます。

ロードが完了したら、独自コマンドを実行して動作を確認しましょう。想定通りに図面が更新されるか、エラーが発生しないかを確認しながら、必要に応じてデバッグや修正を行います。

動作確認では、あらかじめテスト用の図面を用意しておくと効率的です。大きな図面を扱う場合のパフォーマンスや、他のアドインとの競合がないかも確認し、本稼働に向けて準備を整えましょう。

6. C++とC#/.NETの使い分け

ここまでC++に注目してきましたが、AutoCADではC#などの.NET言語を使ったアドイン開発も可能です。プロジェクトの要件や社内の開発体制によっては、必ずしもC++が最適な選択肢とは限りません。

C#などの.NET系言語は比較的取り組みやすい一方、.NET向けのマネージラッパーが用意されていないObjectARX APIもあります。どちらか一方に限定するのではなく、それぞれの特徴を理解したうえで、適切な方法を選ぶことが重要です。 

比較項目C++/ObjectARXC#など/.NET API
主な特徴AutoCADのネイティブAPIを利用できる.NET APIを利用してカスタマイズできる
主な開発言語C++C#、VB.NETなど
適したケースObjectARX固有のAPIを利用したい場合.NET APIで実現できる機能を開発する場合
組み合わせ.NETとの相互運用が可能必要に応じてC++と連携可能

以下では、.NET APIの利用とC++と.NETを組み合わせる方法について解説します。自社の技術リソースや既存資産を踏まえて、適切なアプローチを検討しましょう。

6.1. .NET APIの利用可能性

AutoCADには.NET APIも提供されています。Autodeskによると、AutoCAD .NET APIを使用することで、図面ファイルのデータベースにオブジェクトを作成したり、既存のオブジェクトを変更したりする処理などを自動化できます。また、C#やVB.NETを利用した開発にも対応しています (参照*6)。

そのため、CADアドインを開発する際はC++だけに限定せず、必要な機能や社内の開発環境に応じて.NET APIも選択肢になります。ただし、一部のObjectARX APIは.NET向けのマネージラッパーが用意されていないため、必要な機能を事前に確認することが重要です。

6.2. C++と.NETの組み合わせ

プロジェクトによっては、C++と.NETを組み合わせて開発することも可能です。Autodeskは、.NETアプリケーションにC++部分を含めることで、マネージラッパーが用意されていないObjectARX APIを利用できると説明しています(参照*7)。

そのため、C++と.NETを必ずしも二者択一で考える必要はありません。必要なAPIや機能に応じて両者を組み合わせる方法も選択肢となります。

ただし、C++と.NETの相互運用では構成やデバッグが複雑になる場合もあるため、開発体制やリソースを踏まえて検討することが重要です。

7. 導入時のポイント

CADアドインを導入する際は、自動化したい業務や使用しているCAD環境、開発体制などを整理したうえで、適切な方法を選ぶことが重要です。

7.1. 自動化したい業務を整理する

まず、時間がかかっている作業やミスが発生しやすい作業を洗い出し、優先順位をつけます。例えば、図面の複製・修正や、決められた形式での注釈入力など、繰り返し発生する作業が対象になります。

自動化する業務を明確にすることで、アドインに必要な機能を整理しやすくなります。

7.2. CAD・バージョン・既存環境の確認

使用しているAutoCADのバージョンやエディション、既存のアドインなどを確認します。

特にObjectARXを利用する場合は、AutoCADのバージョンに対応したSDKや開発環境を選ぶことが重要です。

7.3. 開発方法の選択

C++とC#/.NETのどちらを選ぶかは、必要なAPIや機能、社内のスキル、保守体制などによって異なります。

将来のバージョンアップや機能追加も考慮し、適切な開発方法を選びましょう。

7.4. 自社開発と外部委託の検討

C++によるCADアドイン開発には、AutoCAD APIやC++、業務で使用する作図ルールなどの知識が必要です。

社内に必要な人材や開発体制がない場合は、CADカスタマイズ企業へ委託する方法もあります。一方、継続的に仕様変更を行う場合やノウハウを蓄積したい場合は、自社開発も選択肢となります。

8. まとめ

CADアドインは、建設・建築・土木企業の業務を効率化するための有効な手段です。AutoCADでは、C++とObjectARXを活用することで、独自コマンドの実装やCADデータの操作、定型処理の自動化など、業務に合わせたカスタマイズが可能です。

一方、AutoCADには.NET APIも用意されているため、すべてのケースでC++が最適とは限りません。プロジェクトの内容や社内の技術リソース、開発コストなどを踏まえ、C++と.NETを組み合わせる方法も含めて検討することが大切です。

CADアドインを導入する際は、まず自社の作業フローや業務課題を整理し、必要な機能を明確にすることが重要です。そのうえで、自社の環境や目的に合った開発方法を選び、より効率的なCAD環境の構築につなげていきましょう。

株式会社キャパからのお知らせ
「指示するだけで図面ができる!キャパの自動作図AI」ウェビナーを開催します。
10月14日(水)15:00開催。お申込み受付中です。ぜひご参加ください。
プログラムの詳細・お申込みはこちらから
指示するだけで図面ができる!キャパの自動作図AI

<参考文献>
(*1)AutoCAD Developer and ObjectARX ヘルプ | The ObjectARX Programming Environment | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=GUID-9A679CBB-F622-4A3F-BBE5-D4ED130EF303

(*2)AutoCAD Developer and ObjectARX ヘルプ | AcDbDatabase Class | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=OARX-RefGuide-AcDbDatabase

(*3)ObjectARX for AutoCAD SDK | Autodesk Platform Services
https://aps.autodesk.com/developer/overview/objectarx-autocad-sdk

(*4)AutoCAD Developer and ObjectARX ヘルプ | 概要 - ObjectARX アプリケーション | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=GUID-3FF72BD0-9863-4739-8A45-B14AF1B67B06

(*5)AutoCAD Developer and ObjectARX ヘルプ | Creating an ObjectARX Application | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=GUID-215E9AC0-ABF7-4E72-9564-E1D58EDD60E8

(*6)AutoCAD Developer and ObjectARX ヘルプ | 概要 - .NET および AutoCAD .NET API (.NET) | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=GUID-4E1AAFA9-740E-4097-800C-CAED09CDFF12

(*7)AutoCAD Developer and ObjectARX ヘルプ | C++ 相互運用性(.NET) | Autodesk
https://help.autodesk.com/view/OARX/2027/JPN/?guid=GUID-FE481D64-4239-448A-8711-6F6F98D1B092