banner

ブログ

Jun 07, 2024

CadQuery の時代が到来

さて、皆さんの中にはこう言う人もいるでしょう。「ああ、別のプログラムによる CAD ツールではないのに、OpenSCAD の何が問題なの?」 — それは正しいかもしれませんが、少し待ってこれを見てください。これは非常に素晴らしいものだと私たちは考えているからです。 OpenSCAD は素晴らしいもので、私たちはこれらの部分で常にそれを使用していますが、所々で少し奇妙です。 その後、CadQuery が登場し、使いやすさと機能性の点で画期的なものになりました。 さて、ここ何年にもわたって CadQuery について何度か言及されてきましたが、ついにそれ自体が本格的なツールセットとなり、グラフィカル フロントエンド/エディターである CQ エディターを備えました。 FreeCAD への奇妙な依存関係は見られません。 とはいえ、FreeCADをインストールすることも悪いことではありません。

目標は、このオブジェクトを生成する CadQuery スクリプトを人間が使用する英語のフレーズにできるだけ近づけることです。

これまで見たことがない人のために説明すると、CadQuery は 3D モデルを作成し、それを STL および STEP としてエクスポートできる Python ライブラリであるため、KiCAD プロジェクト用のモデルを作成することもできます。 ただし、OpenSCAD とは異なり、CadQuery はより設計意図に重点を置いています。 そのアイデアは、すべてグローバル座標系を基準とした単純なブール演算からオブジェクトを構築する一連のアルゴリズムではなく、Python スクリプトにオブジェクトの形式を人間が記述したように読み取らせることです。 CadQuery は相対関連モデルを使用します。このモデルでは、物体が他の物体に対して相対的に定義されます。 ドキュメントから:

CadQuery は異なります。人間が図面を作成したりオブジェクトを構築したりするときと同じように、フィーチャを他のフィーチャと相対的に配置して、設計意図を維持できます。

高さ = 60.0 幅 = 80.0 厚さ = 10.0 直径 = 22.0 パッド = 12.0

# Baseresult = cq.Workplane("XY").box(高さ、幅、厚さ)\.faces(">Z").workplane().hole(diameter)\.faces(">Z") を作成します。 workplane() \.rect(高さ - パディング,幅 - パディング,forConstruction=True)\.vertices()\.cboreHole(2.4, 4.4, 2.1)\.edges("|Z").fillet(2.0)

# Solidshow_object(result) をレンダリングします

# エクスポートcq.exporters.export(result,'result.stl')cq.exporters.export(result,'result.step')

私たちは OpenSCAD が悪いと言っているわけではありません。どころか、OpenSCAD が違うだけです。一部の人にとっては、CadQuery の方が必要な作業をはるかに簡単に実行できるでしょう。 3D プリント用に完全にパラメータ化されたエンクロージャが必要ですか? わずか 47 行の Python コードでこれを実現してみるのはどうでしょうか? オブジェクトの複雑さが増大するにつれて、CadQuery アプローチの利点も増大します。 このツールは非常に強力で、問題を解決する多くの方法を提供するため、このツールで学ぶべき概念はかなり多くありますが、努力する価値は十分にあると考えています。 QC エディターが好きでなくても問題ありません。CadQuery はスタンドアロンで好きなエディターで使用でき、Jupyter ノートブックでも動作します。 既製ビルドも利用できるので、インストールも問題ありませんが、そうは言っても、インストールには膨大な作業が必要なので、ディスク容量に余裕があることを願っています。

あなたがより視覚的な思考を持っていて、このコーディングすべてにうんざりしている場合は、FreeCAD でのパラメトリック モデリングに関するこのガイド、fusion360 の同様のガイド、または OpenSCAD を使い続けているのなら、このガイドをチェックしてみてください。ありがとうございますそうですね、OpenSCAD のスキルを磨いてみてはいかがでしょうか。

[JohnU] さん、ヒントをありがとう!

共有