0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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になります。

スクリーンショット 2026-08-28 095209.png

計測ツールなどは、ありません。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利用の時

スクリーンショット 2026-08-28 100518.png


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)

スクリーンショット 2026-08-28 101502.png


上面のエッジを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)

スクリーンショット 2026-08-28 101739.png


計測ツールあります。

スクリーンショット 2026-08-28 102156.png


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)

スクリーンショット 2026-08-28 103237.png


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

0
0
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?