PythonでCADを自動化する方法とは?対応ソフト・活用例・主要ライブラリを解説
1. はじめに
CAD業務では、図面作成の過程で同じ操作を何度も繰り返す場面があります。たとえば、寸法線を繰り返し引いたり、DXFファイルを使って他部署と図面データを受け渡したりする定型処理です。これらをすべて手作業で行うと時間がかかり、ヒューマンエラーも発生しやすくなります。
そこで注目されているのが、プログラミング言語のPythonを使ったCADの自動化です。Pythonは、ほかのプログラミング言語と比べて文法が分かりやすく、初心者でも比較的取り組みやすいとされています。CADソフトが提供するAPI(ソフトウェアの機能やデータをプログラムから利用するための仕組み)や専用ライブラリを活用することで、図形作成や属性変更、ファイル操作などをPythonから実行できます。
本記事では、Pythonを使ったCAD自動化の概要をはじめ、自動化できる具体的な作業、主要なCADソフトウェアやライブラリ、実践する際のポイントを解説します。初心者の方でも小さなステップから始められるよう、基本的な取り組み方を紹介します。
Pythonの公式ドキュメント「Python 3 Documentation」では、Pythonの文法や標準ライブラリ、開発環境に関する情報が公開されています(参照1)。また、「AutoCAD | Autodesk Platform Services」では、AutoCADが提供するAPIや開発環境の概要が紹介されています(参照2)。本記事では、これらの公式情報を参考に、PythonをCAD自動化へ活用する基本的な考え方を解説します。
2. PythonとCAD自動化の基本概念

2.1. CAD自動化の必要性とPythonの役割
CAD自動化が注目される理由の一つは、手作業では多くの時間がかかる業務があるためです。たとえば、同じ図面の属性を何度も更新する作業や、大量のパラメータを持つ3Dモデルを連続して作成する業務では、ヒューマンエラーが発生するリスクも高まります。
Pythonは、こうした繰り返し作業や定型処理をコンピュータに任せるための役割を担います。CADソフトウェアが提供するAPIや外部のPythonライブラリを利用することで、図形を自動で描画したり、DXFファイルを読み込んで属性情報を書き換えたりできます。
重要なのは、CAD自動化ではPythonだけですべての処理を行うのではなく、CADソフトが提供する機能やCADデータを扱うライブラリをスクリプトから利用することです。APIを利用すれば、通常は画面上で行う図形作成や属性変更、ファイル操作などをプログラムから実行できます。
初心者の方は、まず利用するCADソフトがどのようにPythonへ対応しているのかを調べることから始めるとよいでしょう。CADを扱いながらプログラミングを学ぶことで、業務の効率化だけでなく、自身のスキルアップにもつながります。
2.2. Pythonで実現できるCADの自動化プロセス
Pythonを使ったCAD自動化は、大きく四つのステップで進められます。
- 使用するCADソフトのAPIや開発者向け資料を確認する(参照2、参照3、参照*4)
- 自動化する定型作業を洗い出す
- Pythonコードを作成し、テストデータで動作確認する
- 実際の図面やモデルで検証し、効果を確認する
さらに、エラー処理やログの保存、バックアップ、実行環境の管理、保守方法なども検討することで、実務で継続的に利用しやすい仕組みを構築できます。たとえば、DXFファイルの一括処理や、CAD上のオブジェクトの位置・属性の更新など、利用するAPIやライブラリに応じた処理を実装できます。
自動化を導入する際は、処理が途中で停止した場合の対応方法や、入力データに不整合があった場合の通知方法も決めておく必要があります。元のファイルをバックアップし、処理結果やエラー内容をログとして残すなど、問題が発生した際に原因を確認できる仕組みを整えることも重要です。
3. Pythonで自動化できる主なCAD業務

3.1. 図面の一括作成とDXFファイル操作
建設業や製造業では、仕様や寸法が異なる複数の図面を連続して作成する場面があります。Pythonを活用すると、あらかじめ用意したテンプレートや部品データ、入力条件をもとに、複数の図面を順番に生成する処理を構築できます。処理内容や図面の複雑さによって効果は異なりますが、手作業による繰り返しを減らせる代表的な自動化方法の一つです。
また、DXFファイルの操作も代表的な活用方法です。DXFは2D図面を中心に3D情報も扱えるCADデータ交換形式で、多くのCADソフトが入出力に対応しています。
ただし、CADソフト固有の機能やDXFのバージョンによっては、表示や属性、文字スタイル、寸法設定などが完全には引き継がれない場合があります。そのため、異なるCADソフト間でデータを受け渡す際は、変換後の図面を確認することが重要です。ezdxfの公式ドキュメントによると、DXFファイルの読み込みや新規作成、レイヤーや各種エンティティの属性変更などをPythonから実行できます(参照*5)。 寸法要素も扱えますが、寸法スタイルや関連する図形表現など、DXF特有の構造を理解する必要があります。そのため、一般的なCADソフトと同じ感覚ですべての編集を簡単に行えるわけではありません。
初心者は、まず新しいDXFファイルへ線や円を追加する処理や、既存ファイルから文字やレイヤーなどの属性を取得する処理から試すとよいでしょう。部品番号や注記など、対象が明確な情報の一括更新から始めると、DXFの構造やezdxfの基本的な使い方を理解しやすくなります。
こうした一括処理を自動化することで、定型業務にかかる時間を短縮し、繰り返し操作によるヒューマンエラーを抑えられる可能性があります。
3.2. 属性情報の更新と繰り返しモデリング
CADでは、配置したオブジェクトごとに属性情報を付加することがあります。たとえば建築設計では、部屋番号や材料情報などを登録する場合があります。こうした属性情報を手作業で一括更新すると、多数の修正が必要になることもあるため、Pythonを使った自動スクリプトによる効率化が期待できます。
また、3Dモデリング業務では、特定のパラメータに応じて複数の寸法や形状を変更する場合、Pythonスクリプトでモデルを再生成する方法が有効です。CadQueryでは、Pythonコードでパラメトリック3Dモデルを定義し、設計条件を変更しながら形状を再生成できます(参照*6)。 適切に検証したスクリプトを利用することで、同じ設計ルールに基づくモデルを一貫して作成しやすくなります。
属性情報の更新やパラメトリック3Dモデルの連続生成は、PythonによるCAD業務自動化の代表的な活用例です。自動化する範囲や入力条件、形状が成立する条件などを適切に設計しておけば、数値や条件を変更しながら複数の図面やモデルを生成できる場合があります。
取り組む際は、対象となるデータ構造や入力値の範囲を把握し、想定外の値が入力された場合の処理も検討しておくことが重要です。データの整合性を保つことで、後からスクリプトを修正・保守しやすくなります。
4. CAD自動化の具体的なメリット
4.1. 作業時間の削減とヒューマンエラーの低減
CAD自動化のメリットの一つは、繰り返し作業にかかる時間を短縮できる可能性があることです。たとえば、多数の図面に同じ修正を加える作業では、Pythonスクリプトで対象ファイルを順番に処理することで、手作業より短時間で完了できる場合があります。
ただし、削減できる時間は、図面の複雑さやファイル数、処理内容、CADソフトの起動方法、実行環境などによって異なります。そのため、事前に小規模なテストを行い、手作業と自動処理にかかる時間を比較することが大切です。
また、スクリプトは、あらかじめ定義した処理を同じ条件で一貫して実行します。手作業による見落としや入力ミスを抑えやすい一方で、コードや入力条件に誤りがあると、誤った処理が複数の図面へ一括で適用される可能性があります。本番運用の前にテストデータで結果を検証し、必要に応じて人が確認する仕組みを設けることが重要です。
適切に検証した自動化処理を導入することで、作業手順のばらつきを抑え、品質管理を行いやすくなる可能性があります。特に、同じルールを多数の図面やモデルへ適用する業務では、自動化の効果を得やすいと考えられます。
また、定型作業にかかる時間を減らすことで、担当者が設計内容の確認や判断を伴う業務に時間を充てやすくなることも期待できます。ただし、実際の効果は処理内容や運用方法によって異なるため、導入前後で作業時間や修正件数を比較することが重要です。
4.2. 標準化と品質の向上
Pythonを活用したCAD自動化では、スクリプトに定義した処理を同じ手順で実行できるため、作業方法の標準化につながります。複数の担当者が個別にCADを操作すると、図面のレイアウトや注記の記載方法にばらつきが生じる場合があります。入力条件やCADのバージョン、フォント、テンプレート、外部参照などの実行環境をそろえて自動化スクリプトを利用すれば、担当者ごとの手順の違いを抑え、一定の結果を得やすくなります。
また、監修者がスクリプトの処理内容や入力条件を確認することで、作業ルールをチーム内で共有しやすくなります。ただし、コードや入力データに誤りがある場合は、誤った結果が一括で生成される可能性があるため、テストと結果確認を継続することが重要です。
標準化は、企業が継続的に運用できるワークフローを確立するうえでも重要です。個人のノウハウだけに頼らず、チーム全体で同じ手順を共有できる点は、長期的な運用にも役立ちます。
さらに品質を維持するためには、テスト用のサンプルデータを用意し、処理結果が正しいかを検証するプロセスを設けることが推奨されます。
5. Pythonに対応する主要なCADソフトウェア
Pythonに対応する代表的なCADソフトウェアの特徴をまとめると、次のとおりです。
| CADソフト | Python対応方法 | 主な用途 | 特徴 |
| AutoCAD | ActiveX/COMや外部ライブラリを利用 | 図面作成・属性変更・ファイル操作 | Python専用APIはない |
| Rhino | Pythonスクリプティングに標準対応 | 曲面モデリング・自動化 | Grasshopperと連携可能 |
| FreeCAD | Pythonを標準搭載 | パラメトリック設計・マクロ | オープンソースで利用できる |
5.1. AutoCADの自動化機能
AutoCADは、2D作図や3Dモデリングに対応したCADソフトウェアです。Autodeskの公式ページでは、AutoCADの開発環境としてObjectARX、.NET API、Visual LISP、ActiveXなどが提供されていることが紹介されています(参照*2)。 一方で、Python専用の公式APIは提供されていません。
PythonからAutoCADを操作する場合は、主にWindows版AutoCADのActiveX/COMインターフェースや、それを利用する外部ライブラリを介して、図面オブジェクトの作成・編集、属性変更、ファイル操作などを行います。
たとえば、図面への線や文字の作成、オブジェクトの属性変更、レイヤー操作、図面ファイルの保存といった処理を自動化できます。PythonからCOMを利用する方法としては、Windows向けライブラリのpywin32などが利用されることもあります。
ただし、ActiveX/COMによる外部操作は、主にWindows版AutoCADを対象としています。AutoCAD LTやMac版、Web版では利用できる機能や連携方法が異なるため、使用している製品や動作環境を事前に確認する必要があります。
初心者は、まずAutodeskの公式ページで利用できるAPIの種類を確認し、小規模な図形作成や属性取得から試すとよいでしょう。業務で利用する場合は、AutoCADのバージョンや実行環境をそろえたうえで、十分に動作を検証することが重要です。
5.2. RhinoのスクリプティングとGrasshopperの連携
Rhinoは、自由曲面のモデリングに適した3Dモデリングソフトウェアです。RhinoはPythonによるスクリプティングに標準対応しており、Rhino Developer DocumentationではPython向けガイドやAPIリファレンスが公開されています(参照*3)。 Rhino内のスクリプトエディタを使って、オブジェクトの生成や編集をコードで実行できます。
また、RhinoにはGrasshopperというビジュアルプログラミングツールが付属しており、ノードベースでパラメトリックモデリングを行えます。GrasshopperとPythonスクリプトを組み合わせることで、条件に応じた形状生成や処理を実装できます。
建築やインテリアデザインでは曲面形状を扱う場面も多く、PythonスクリプトとGrasshopperを組み合わせたワークフローが活用されています。Rhino Developer Documentationには、サンプルコードやAPIリファレンスが用意されているため、学習しながら開発を進めることができます。
こうした自動化は、複雑な形状や寸法条件を扱う場面で活用されています。
5.3. FreeCADのパラメトリックデザイン自動化
FreeCAD Documentationでは、FreeCADはPythonを標準搭載したオープンソースの3D設計ソフトウェアとして案内されています(参照*4)。 FreeCADのマクロ機能を利用すると、Pythonスクリプトを作成してモデリングや各種処理を自動化できます。
FreeCADはパラメトリック設計に対応しており、寸法やオブジェクト間の関係を設定することで、設計変更にも柔軟に対応できます。ソフト自体を無料で利用できるため、個人学習や試作段階で導入しやすい環境です。
また、FreeCADには豊富なモジュールが用意されており、用途に応じてPythonスクリプトから利用できます。3Dプリンター用モデルや建築部材の作成など、さまざまな用途で活用されています。
まずは、基本的な立体形状を生成するスクリプトを作成し、パラメータを変更しながら動作を確認すると理解しやすいでしょう。慣れてきたら、より複雑なパーツやアセンブリへ発展させることもできます。
6. Pythonで利用される主要ライブラリ
PythonでCAD自動化に利用される代表的なライブラリは、次のとおりです。
| ライブラリ | 主な用途 | 対応データ | 特徴 |
| ezdxf | DXFファイルの読み書き・編集 | DXF | DXFファイルを直接操作できる |
| CadQuery | パラメトリック3Dモデリング | STEP・STLなど | Pythonコードで3D形状を生成できる |
6.1. ezdxfのDXF操作
ezdxfは、DXFファイルを直接操作するためのPythonライブラリです。新しいDXFファイルを作成して線や円を描画し、必要な属性情報を追加して保存するといった処理を、Pythonスクリプトから実行できます。DXFは多くのCADソフトウェアが対応するデータ交換形式であるため、複数のCADソフトが混在する環境でも活用しやすいライブラリです。
具体的には、ezdxfをインストールすることで、DXF図面へのレイヤー追加や、各エンティティの属性・座標の変更などをPythonから実行できます。寸法要素も扱えますが、寸法スタイルや関連する図形表現など、DXF特有の構造を理解しておく必要があります。
また、同じ図形を一定の規則で複数配置するような処理は、スクリプト化しやすい活用例の一つです。ただし、ブロックや文字スタイル、線種、寸法スタイルなどを利用する場合は、それらの依存関係も考慮する必要があります。
初心者は、ラインやポリラインなどの基本的なエンティティを新しいDXFファイルへ書き込む処理から始めるとよいでしょう。慣れてきたら、複数のDXFファイルを順番に読み込み、特定のレイヤー属性を持つエンティティを抽出して別のファイルへ出力する処理にも取り組めます。
なお、DXFのレイヤーは図形を格納するフォルダではなく、各エンティティに設定される属性です。また、抽出する図形がブロックや線種、文字スタイル、寸法スタイルなどを参照している場合は、それらの関連リソースも考慮する必要があります。
ezdxfはDXFファイルを読み書きするためのライブラリであり、AutoCAD本体を直接操作するものではありません。また、DXFからDWGへ変換するためのツールではない点にも注意が必要です。
6.2. CadQueryのパラメトリック3Dモデリング
CadQueryは、Pythonコードで3Dモデルを作成できるパラメトリックモデリング用ライブラリです。コードで形状や設計条件を定義するため、変数を変更しながら複数のバリエーションを生成しやすいことが特徴です。
CadQueryはライブラリとして提供されており、必要に応じてCQ-editorやJupyterなどの実行・表示環境と組み合わせて利用できます。一般的なCADソフトのように画面上で直接編集するのではなく、設計意図や処理手順をコードとして管理します。
たとえば、ボルトの長さや穴の数を変数として設定しておけば、その値を変更するだけで条件を反映した形状を再生成できます。処理時間はモデルの複雑さや演算内容、実行環境によって異なりますが、同じ設計ルールに基づいた複数の形状を作成しやすい点が特徴です。
また、CadQueryは、STEPやSTLなどの形式への出力にも対応しています(参照*6)。 STEP形式で出力して対応するCADソフトへ受け渡したり、STL形式で出力して3Dプリント用データとして利用したりできます。ただし、出力したデータが利用先のソフトや製造条件に適合するかは、別途確認する必要があります。
初心者は、立方体や円柱を生成し、穴を開けるといった基本的な演習から始めると理解しやすいでしょう。複雑なモデルほどコードの再利用性が高まるため、習熟するにつれて効率化の効果も期待できます。
7. PythonによるCAD自動化を始める際のポイント

7.1. CADソフトのAPI仕様の理解
まず大切なのは、使用するCADソフトウェアのAPI仕様やスクリプト機能の特徴を理解することです。Pythonへの対応方法はソフトによって異なり、AutoCADやRhinoでも利用できるAPIや外部からの操作方法は異なります。公式ドキュメントには関数リファレンスやサンプルコードが掲載されていることが多いため、まずは一通り目を通しておくとよいでしょう。
API仕様を理解すると、「何ができるのか」「何ができないのか」「どのような手順で機能を呼び出すのか」が明確になり、Pythonによる自動化の進め方を整理しやすくなります。また、バージョンごとのAPIの変更点も確認しておきましょう。古いソフトと新しいスクリプトを組み合わせると、不具合が発生する場合があります。
特に、Windows環境で利用するCOM Automationや、Mac・Linux環境での対応状況の違いには注意が必要です。環境によって動作が異なる場合があるため、事前の動作検証は欠かせません。
準備段階で十分に資料を確認し、テストを行うことが、実務でのトラブルを最小限に抑えるポイントです。
7.2. 自動化したい業務の明確化
PythonによるCAD自動化に取り組む前に、「どの業務を効率化したいのか」を明確にしておくことも重要です。たとえば、DXFファイルの操作が目的であればezdxf、パラメトリックモデリングであればCadQueryやFreeCADのマクロを利用するなど、目的に応じて選ぶライブラリや手法は変わります。
まずは、社内で負担になっている作業が、単純な繰り返し操作なのか、大量のファイルを更新する処理なのかを整理しましょう。対象業務が明確になれば、開発範囲や利用するAPI、ライブラリも選びやすくなります。
初心者は、規模の小さい自動化から始めることをおすすめします。最初から大規模なワークフロー全体をPythonへ置き換えようとすると、調整項目が増え、開発や検証が複雑になりやすいためです。
まずは、一つの手作業を置き換える小さなスクリプトを作成し、安定して動作することを確認しながら運用を進めるとよいでしょう。
7.3. 小規模なプロジェクトからのスタート
小さな成功体験を積み重ねることで、PythonによるCAD自動化への苦手意識が薄れ、次の取り組みにもつなげやすくなります。まずは、利用しているCADソフトで、テンプレート図面へ部品番号を入力するスクリプトや、簡単な3Dモデルを作成するスクリプトなどから試してみるとよいでしょう。
また、作業手順を社内のメンバーと共有することで、小規模でも自動化の効果をチーム全体で実感しやすくなります。必要に応じて先輩や同僚にコードをレビューしてもらい、よりよい書き方やエラー処理の方法を学ぶことも効果的です。
経験を重ねたら、図面の大量処理や複雑なモデリングなど、より規模の大きなプロジェクトへ段階的に取り組むとよいでしょう。プロジェクトごとに新しい知識や経験を積み重ねながら、自動化の範囲を広げていくことができます。
最終的には、社内業務全体を見直しながら、自動化できる範囲を少しずつ広げていくことが重要です。
PythonによるCAD自動化を始める際のチェックポイント
- 利用するCADソフトのAPI仕様を確認する
- 自動化する業務を明確にする
- 小規模な処理から始める
- テストと動作検証を十分に行う
8. まとめ
本記事では、PythonによるCAD自動化の仕組みやメリット、主要なCADソフトウェアとライブラリについて解説しました。CAD業務には単純作業や定型処理が多く、こうした作業をPythonスクリプトで自動化することで、作業効率の向上やヒューマンエラーの低減が期待できます。
AutoCAD・Rhino・FreeCADは、それぞれ異なる方法でPythonに対応しています。また、ezdxfやCadQueryなどのライブラリを活用することで、DXFファイルの操作やパラメトリック3Dモデリングなど、目的に応じた自動化を進められます。
CAD自動化を成功させるためには、利用するCADソフトのAPI仕様を理解し、小規模な処理から段階的に導入することが重要です。自動化を適切に活用することで、業務の効率化だけでなく、作業品質の標準化や継続的な改善にもつなげやすくなります。
まずは身近な定型業務を一つ選び、小さな自動化から取り組んでみてはいかがでしょうか。本記事が、Pythonを活用したCAD自動化を始める際の参考になれば幸いです。
建設・土木業界向け 5分でわかるCAD・BIM・CIMの ホワイトペーパー配布中!
CAD・BIM・CIMの
❶データ活用方法
❷主要ソフトウェア
❸カスタマイズ
❹プログラミング
についてまとめたホワイトペーパーを配布中
<参考文献>
(*1)Python Documentation
https://docs.python.org/3/
(*2)AutoCAD | Autodesk Platform Services
https://aps.autodesk.com/developer/overview/autocad-api
(*3)Rhino Developer Documentation
https://developer.rhino3d.com/
(*4)FreeCAD Documentation
https://wiki.freecad.org/Main_Page
(*5)ezdxf Documentation
https://ezdxf.readthedocs.io/en/stable
(*6)CadQuery Documentation
https://cadquery.readthedocs.io/en/latest
