Open9

CadQueryを試してみる→できなかったのでOpenSCADを試す

ピン留めされたアイテム
noboru_inoboru_i

3Dプリンターを買ったので、3D CADを始めた。

ただ、プログラマー的には、履歴管理したり、再利用可能な部品を作ったりしたい。
コードで3Dデータを作成できると良さそう。

noboru_inoboru_i

VS Code extensionを探してみる。

VSCode CadQuery extension
https://github.com/roipoussiere/cadquery-vscode?tab=readme-ov-file

CadQuery Serverが必要ということで、確認
https://github.com/roipoussiere/cadquery-server?tab=readme-ov-file#installation

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
https://github.com/bernhard-42/vscode-ocp-cad-viewer
Apple Silicon macでは、mambaコマンドが必要らしい。

→なんか、いろいろインストールするのが面倒。。。

CQ-editorというGUIもあるらしい。

CQ-editor
https://github.com/CadQuery/CQ-editor

ただ、 Release Packages の部分に取り消し線がついている。
https://github.com/CadQuery/CQ-editor/commit/7d74cf77c7d8eb02bef91f180ec101627131322e なぜ取り消し線をつけたのかはわからない。。。

そもそも、Releasesの最新が 0.2 で、2021年なのがちょっと。。。

noboru_inoboru_i

Jupyterを利用するのも良いということだったので、
https://cadquery.readthedocs.io/en/latest/installation.html#jupyter
JupyterLab Desktopをインストールしてみる。
https://github.com/jupyterlab/jupyterlab-desktop?tab=readme-ov-file#installation

起動すると、環境が見つからないとエラーが出たが、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'
noboru_inoboru_i

諦めて、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
noboru_inoboru_i

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'
noboru_inoboru_i

https://formulae.brew.sh/cask/openscad だと駄目で、
https://formulae.brew.sh/cask/openscad@snapshot だったら起動できた。

ただし、一度起動してエラーになったあとに、mac設定の「プライバシーとセキュリティ」から「このまま開く」を押して許可する必要があった。

https://marketplace.visualstudio.com/items?itemName=Antyos.openscad#usage
インストールすることで、VS Codeでハイライトやコード補完を活用しながら、OpenSCADを書くことができる。
.scad を開くと、右上に"Preview in OpenSCAD"ボタンがあり、押すとOpenSCADアプリが開く。
.scad を保存すると、即座にプレビューに反映される。
("Usage" に記載のある設定をしておく必要はある)

のあたりを参照したら、最低限のオブジェクトは配置できそう。