CadQueryを試してみる→できなかったのでOpenSCADを試す
3Dプリンターを買ったので、3D CADを始めた。
ただ、プログラマー的には、履歴管理したり、再利用可能な部品を作ったりしたい。
コードで3Dデータを作成できると良さそう。
CadQuery
Pythonで、3D CADのモデルを作成できるツール。
つまり、Pythonでコードを書いて出力し、3Dプリンターを使って現実世界にモノを生み出せる。はず。
VS Code extensionを探してみる。
VSCode CadQuery extension
CadQuery Serverが必要ということで、確認
This project is no longer actively supported.
You might be interested by vscode OCP CAD viewer, an extension to show CadQuery and build123d objects in VS Code via the three-cad-viewer viewer component.
↓
OCP CAD Viewer for VS Code
Apple Silicon macでは、mambaコマンドが必要らしい。
→なんか、いろいろインストールするのが面倒。。。
CQ-editorというGUIもあるらしい。
CQ-editor
ただ、 Release Packages
の部分に取り消し線がついている。
https://github.com/CadQuery/CQ-editor/commit/7d74cf77c7d8eb02bef91f180ec101627131322e なぜ取り消し線をつけたのかはわからない。。。
そもそも、Releasesの最新が 0.2 で、2021年なのがちょっと。。。
Jupyterを利用するのも良いということだったので、
JupyterLab Desktopをインストールしてみる。起動すると、環境が見つからないとエラーが出たが、bundled installerがなんとかというリンクを押すと、解決したっぽい。
Jupyter上で !pip install cadquery
とすると、インストールできたっぽいが、サンプルに記載のあったものを実行するとエラー。
import cadquery
cadquery.Workplane('XY').box(1,2,3).toSvg()
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[15], line 1
----> 1 import cadquery
2 cadquery.Workplane('XY').box(1,2,3).toSvg()
File ~/Library/jupyterlab-desktop/jlab_server/lib/python3.12/site-packages/cadquery/__init__.py:10
7 __version__ = "2.3.0"
9 # these items point to the OCC implementation
---> 10 from .occ_impl.geom import Plane, BoundBox, Vector, Matrix, Location
11 from .occ_impl.shapes import (
12 Shape,
13 Vertex,
(...)
20 sortWiresByBuildOrder,
21 )
22 from .occ_impl import exporters
File ~/Library/jupyterlab-desktop/jlab_server/lib/python3.12/site-packages/cadquery/occ_impl/geom.py:5
1 import math
3 from typing import overload, Sequence, Union, Tuple, Type, Optional
----> 5 from OCP.gp import (
6 gp_Vec,
7 gp_Ax1,
8 gp_Ax3,
9 gp_Pnt,
10 gp_Dir,
11 gp_Pln,
12 gp_Trsf,
13 gp_GTrsf,
14 gp_XYZ,
15 gp_EulerSequence,
16 gp,
17 )
18 from OCP.Bnd import Bnd_Box
19 from OCP.BRepBndLib import BRepBndLib
ModuleNotFoundError: No module named 'OCP'
諦めて、VS CodeのDev containerを使って、普通にインストールしてみる。
{
"name": "Python 3",
"image": "mcr.microsoft.com/devcontainers/python:1-3.12-bullseye",
"features": {
"ghcr.io/rocker-org/devcontainer-features/miniforge:2": {}
}
}
起動したら、新しいTerminalタブを開いて、 https://cadquery.readthedocs.io/en/latest/installation.html#conda に記載のコードを実行。
conda create -n cq
conda activate cq
mamba install cadquery
そして、以下のような sample_obj.py を作った。
import cadquery
cadquery.Workplane('XY').box(1,2,3).toSvg()
terminalで python sample_obj.py
を実行すると、エラー。
Traceback (most recent call last):
File "/workspaces/cadquery-sample/sample_obj.py", line 1, in <module>
import cadquery
File "/opt/conda/envs/cq/lib/python3.12/site-packages/cadquery/__init__.py", line 10, in <module>
from .occ_impl.geom import Plane, BoundBox, Vector, Matrix, Location
File "/opt/conda/envs/cq/lib/python3.12/site-packages/cadquery/occ_impl/geom.py", line 5, in <module>
from OCP.gp import (
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
https://github.com/Dennis960/CadQueryTemplate があったのでクローンしてみるも、コンテナがエラーで起動しない。
build123d
との依存関係でのエラーだったので、試しに削除。
起動はするものの、 python src/main.py
を実行すると、またOCPが見つからないエラー。
Traceback (most recent call last):
File "/workspaces/CadQueryTemplate/src/main.py", line 1, in <module>
import cadquery as cq
File "/usr/local/lib/python3.10/dist-packages/cadquery/__init__.py", line 10, in <module>
from .occ_impl.geom import Plane, BoundBox, Vector, Matrix, Location
File "/usr/local/lib/python3.10/dist-packages/cadquery/occ_impl/geom.py", line 5, in <module>
from OCP.gp import (
ModuleNotFoundError: No module named 'OCP'
一旦、諦める。
話は変わってしまうが、OpenSCADであれば、シングルパッケージでインストールできそう。
https://formulae.brew.sh/cask/openscad だと駄目で、
https://formulae.brew.sh/cask/openscad@snapshot だったら起動できた。
ただし、一度起動してエラーになったあとに、mac設定の「プライバシーとセキュリティ」から「このまま開く」を押して許可する必要があった。
.scad
を開くと、右上に"Preview in OpenSCAD"ボタンがあり、押すとOpenSCADアプリが開く。
.scad
を保存すると、即座にプレビューに反映される。
("Usage" に記載のある設定をしておく必要はある)
- https://ja.wikibooks.org/wiki/OpenSCAD_User_Manual/要素図形
- https://ja.wikibooks.org/wiki/OpenSCAD_User_Manual/CSG_Modelling
のあたりを参照したら、最低限のオブジェクトは配置できそう。