はじめに
Pythonで、3D CADとして使えるbuild123dとVSCodeの設定例をWindowsで解説します。
- PythonSCADのGUIでbuild123dを動かす
VSCodeを使わない、build123d用のcq-editorを使う
すぐにbuild123dを使いたい場合は、以下のbuild123d用のCQ-editorがおすすめです。CadQuery用のCQ-editorもありますので、間違えないようにしてください。
cq-editorのfork、build123dのコードが使えます。解凍してCQ-editor.exeダブルクリックです。
起動に、しばらく時間がかかる場合もあります。
GUI editor based on PyQT. This fork has changes from jdegenstein to allow easier use with build123d.
CQ-editor-Windows.zip(384MB)、2025年
解凍後のフォルダ容量は、約1.15 GBになります。
計測ツールなどは、ありません。viewerとコードを書くアプリです。
以下のようなPython環境にbuild123dをインストールする必要はありません。
すぐに検証したいならCQ-editorで良いと思います。
Python環境にbuild123dをインストール
Pythonのバージョンが混在している環境ではvenvを使って、仮想環境を作るのが良いですが、VSCodeを使うときに、PC環境内のどのPythonを使うのか、選択が重要です。
今回はPython3.11環境で試しました。
ターミナルから、build123dをインストール
pip install build123d
vscode内でコードをモデル表示する
pip install ocp_vscode
VSCodeを起動
code
拡張機能から検索で、「OCP CAD Viewer for VS Code」
インストールします。
新規ファイルで「gemi01.py」とつけて、以下保存。Google検索AIモードのサンプルです。
コード画面の右上の小さな白い三角ボタンをクリック、最初だけ、yesをクリック、起動するPythonを選択します。pipでbuild123dをインストールしたpython3.11を選択しました。
from build123d import *
from ocp_vscode import show #VScode利用の時に追記
# 1. 10mmの立方体を作成(デフォルトで原点中心)
block = Box(10, 10, 10)
# 2. 直径4mm、高さ12mmの円柱(穴用)を作成
hole = Cylinder(radius=2, height=12)
# 3. 立方体から円柱を「引き算」して穴をあける
final_part = block - hole
# 4. 3Dプリント用のSTLファイルとしてエクスポート
show(final_part) #VScode利用の時
offsetのサンプル
from build123d import *
from ocp_vscode import show
with BuildPart() as p:
with BuildSketch() as sketch:
rect = Rectangle(width=100, height=50)
# 内側に2mmオフセットした形状を減算(壁の作成など)
offset(rect, -2, mode=Mode.SUBTRACT)
extrude(amount=10)
show(p)
上面のエッジをfillet
Xで見つけたサンプルを写経。ありがとうございます。
from build123d import *
from ocp_vscode import show
with BuildPart() as p:
with BuildSketch() as s:
Rectangle(10,10)
Rectangle(10,10,align=Align.MAX)
Rectangle(10,10,align=Align.MIN)
extrude(amount=10)
sel = edges().filter_by(Axis.Z,reverse=True).filter_by(lambda e: e.length==5)
fillet(sel, 2)
show(p)
計測ツールあります。
ex12.py
from build123d import *
from ocp_vscode import show
pts = [
(55, 30),
(50, 35),
(40, 30),
(30, 20),
(20, 25),
(10, 20),
(0, 20),
]
with BuildPart() as ex12:
with BuildSketch() as ex12_sk:
with BuildLine() as ex12_ln:
l1 = Spline(pts)
l2 = Line((55, 30), (60, 0))
l3 = Line((60, 0), (0, 0))
l4 = Line((0, 0), (0, 20))
make_face()
extrude(amount=10)
show(ex12)
build123dが動かない(AIの回答)
PythonSCAD-1.1.2-windows-x86-64フォルダ内で、ターミナル実行、
python、import buil123dで、python314.dllとぶつかるエラー。
原因は、カレントディレクトリ内にpython314.dllがあり、
これを読みに行ってました。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python311\Lib\site-packages\build123d\__init__.py", line 3, in <module>
from build123d.build_common import *
File "C:\Python311\Lib\site-packages\build123d\build_common.py", line 68, in <module>
from build123d.topology import (
File "C:\Python311\Lib\site-packages\build123d\topology\__init__.py", line 32, in <module>
from .shape_core import (
File "C:\Python311\Lib\site-packages\build123d\topology\shape_core.py", line 75, in <module>
from IPython.lib.pretty import RepresentationPrinter, pretty
File "C:\Python311\Lib\site-packages\IPython\__init__.py", line 39, in <module>
from .core.application import Application
File "C:\Python311\Lib\site-packages\IPython\core\application.py", line 23, in <module>
from traitlets.config.application import Application, catch_config_error
File "C:\Python311\Lib\site-packages\traitlets\config\__init__.py", line 5, in <module>
from .application import *
File "C:\Python311\Lib\site-packages\traitlets\config\application.py", line 18, in <module>
from logging.config import dictConfig
File "C:\Python311\Lib\logging\config.py", line 30, in <module>
import logging.handlers
File "C:\Python311\Lib\logging\handlers.py", line 26, in <module>
import io, logging, socket, os, pickle, struct, time, re
File "C:\Python311\Lib\socket.py", line 51, in <module>
import _socket
ImportError: Module use of python314.dll conflicts with this version of Python.
PythonはパッケージやDLLを読み込む際、システムのインストール先(今回であれば C:\Python311)よりも「現在実行しているフォルダ(カレントディレクトリ)」を最優先で検索する仕様になっています。そのため、システムのPython 3.11から起動したにも関わらず、足元にあったPython 3.14用のDLLを掴んでしまい、バージョン不整合でクラッシュしてしまったというメカニズムです。
今後のためのアドバイス
PythonSCADのフォルダ内に python314.dll があるということは、おそらくPythonSCAD自体が単体で動くように、内部で独自のPython環境(バージョン3.14ベース)を同梱してパッケージングされているのだと思います。
-
システムのPython 3.11(build123dなど)を使いたい場合:
ターミナルのカレントディレクトリ(作業フォルダ)をPythonSCADのフォルダから出し、ご自身のプロジェクト用の別のフォルダに移動してからpythonコマンドを実行してください。 -
PythonSCAD側を利用したい場合:
システムのpythonコマンドで外から実行するのではなく、PythonSCADフォルダ内に同梱されている独自の実行ファイル(.exeなど)を利用するようにしてください。
参考資料
PythonSCAD





