この記事の難易度
AutoCADを使っていると、円や楕円を繰り返し書く作図することが多いと思います。
例えば、ボルトの穴、配管の断面、家具や機器のレイアウトなど。
そんなとき、C#とAutoCAD .NET APIを使えば「円や楕円」をプログラムで自動生成でき、作業効率を大幅にアップできます。
この記事では「円と楕円の基本的な作成方法」をサンプルコード付きでわかりやすく解説します。
- AutoCADにカスタムコマンドを追加して円・楕円を自動生成する方法
- C#でのサンプルコードと動作の流れ
- 応用例(部品配置や図面テンプレートへの活用など)
※事前準備でVisualStudioのインストールやファイルの設定が必要です。
ファイルの作り方やライブラリの参照方法、実行手順などは過去の記事を参考に設定下さい。
カスタムコマンドのおさらい
まずはおさらいです。AutoCADに独自のコマンドを追加するには、C#で CommandMethod 属性 を持つメソッドを定義します。
例えばコマンドラインで「HelloWorld」と表示する簡単なコマンドは以下の通りです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//AutoCAD用のライブラリ追加
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace HelloWorld
{ public class Class1 {
//コマンドの作成 [CommandMethod("HelloWorld")] public void HelloWorld() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("\nHelloWorld!"); } }
}
CommandMethod
属性を使えば、AutoCADのオリジナルコマンドとして登録できます。
このコードをVisualStudioでリビルドしてから、NETLOADコマンド
で作成したdllファイルを読み込みます。

次にコマンドラインで 「HelloWorld」と入力するとメッセージが表示されます↓


この手順で、円や楕円を自動生成するコマンドを追加していきます。
円を作成するコマンド(基本)
コマンド開発の前にポリラインについて詳しく知りたい方は過去の記事を参照ください。
👉【AutoCADの基本】CIRCLEコマンドで円を作図!初心者でも簡単マスター
次のコードは、中心座標 (50,50) 半径 30 の円を自動生成するサンプルです。
[CommandMethod("CreateCircle")]
public void CreateCircle()
{ Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // トランザクション開始 using (Transaction tr = db.TransactionManager.StartTransaction()) { // モデル空間を取得 BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); // ★★★★★ここに図形を追加する処理を書く★★★★★ // 円の作成 Circle circle = new Circle(); circle.Center = new Point3d(50, 50, 0); // 中心座標の設定 circle.Radius = 30; // 半径の設定 // モデル空間に追加 btr.AppendEntity(circle); tr.AddNewlyCreatedDBObject(circle, true); // ★★★★★ ここまで ★★★★★ // 保存 tr.Commit(); }
}
このコードを実行すると、座標(50,50)に半径30の円が自動生成されます↓

※NETLOADコマンド
でdllファイルをロードすると作成したコマンドが表示されます。
円の作図で覚えておきたいのは以下の3点です。
- ① Circle circle = new Circle();
新しい円のオブジェクトを作成します。 - ② circle.Center = new Point3d(50, 50, 0);
中心座標を指定しています。座標点(50, 50, 0)
👉「この点を中心に作図してね」と伝えるイメージ! - ③ circle.Radius = 30;
半径を設定しています。今回の場合半径は30となります。
楕円を作成するコマンド(基本)
次は楕円です。中心 (60,50)、長軸方向に半径50、短軸に半径20の楕円を作成します。
[CommandMethod("CreateEllipse")]
public void CreateEllipse()
{ Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); // ★★★★★ 図形の作成処理 ★★★★★ Point3d center = new Point3d(60, 50, 0); Vector3d majorAxis = new Vector3d(50, 0, 0); // 長軸方向ベクトル double radiusRatio = 20.0 / 50.0; // 短軸 / 長軸 の比率 Ellipse ellipse = new Ellipse(center, Vector3d.ZAxis, majorAxis, radiusRatio, 0, 2 * Math.PI); // モデル空間に追加 btr.AppendEntity(ellipse); tr.AddNewlyCreatedDBObject(ellipse, true); // ★★★★★ ここまで ★★★★★ tr.Commit(); }
}
このコードを実行すると、指定した楕円が自動生成されます↓

※NETLOADコマンド
でdllファイルをロードすると作成したコマンドが表示されます。
楕円の作図で覚えておきたいのは以下の3点です。
- Vector3d majorAxis = new Vector3d(50, 0, 0);
楕円の長軸方向と長さを設定します。
👉 今回の場合はx軸方向に長さ50の楕円になります。 - double radiusRatio = 20.0 / 50.0;
短軸 / 長軸 の比率の比率です。
👉 今回の場合はx軸方向に長さ50、y軸方向に長さ20の楕円になります。 - Ellipse ellipse = new Ellipse(center, Vector3d.ZAxis, majorAxis, radiusRatio, 0, 2 * Math.PI);
新しい楕円を作成するコンストラクタcenter
: 中心座標Vector3d.ZAxis
: 楕円の法線ベクトル(XY平面上ならZ軸)majorAxis
: 長軸方向と長さradiusRatio
: 短軸 / 長軸 の比率
👉ちなみに引数の最後の(0, 2 * Math.PI)はそれぞれ、開始角度と終了角度です。
0 → 開始角度 = 0ラジアン(=0°、X軸の正方向)
2 * Math.PI → 終了角度 = 2πラジアン(=360°)
円・楕円 自動作成の活用例
実務では以下のように活用できます。
- 配管の断面図を自動生成(口径や厚みなどの規格をあらかじめ設定しておく)
- 家具や設備の配置図のテンプレート化(楕円で机・椅子を表現)
- ボルト穴や機械部品のパターン化(規格をあらかじめ設定しておく)
- レイアウト図のチェック用補助図形(楕円で可動範囲を表現など)

配管やボルト穴は企画が決まっているのでよく使います。
ユーザーで規格を選択させるプログラムを作ると便利です!
まとめ
今回は「【AutoCAD】.NET API入門|円・楕円を自動生成するカスタムコマンドの作り方」として、C#を使った基本的な作図方法を紹介しました。
・円は Circle
クラス、楕円は Ellipse
クラスを使う
・円は「中心座標」「半径」を指定
楕円は「中心」「長軸ベクトル」「半径比」を指定するのがポイント
・部品配置やレイアウトなど実務に応用できる場面が多数
次回は「矩形」や「テキスト」の自動生成についても解説していきます。

以上、こたろーでした。