6 ポイント 投稿者 GN⁺ 2025-12-22 | 2件のコメント | WhatsAppで共有
  • OpenSCAD を使って簡単な バッテリーホルダー を設計し、コードベースCADの基本概念を探った事例
  • 以前は Autodesk Fusion でAA・AAA電池向けのパラメータ化ボックスを作成していたが、これを OpenSCADで再実装 しながら学習を進めた
  • コード内で numRowsnumColumnsbatteryType などの変数を変えるだけで カスタムホルダー を生成でき、高価なCADソフトウェアなしでも同じ結果 を得られる
  • difference()translate() を使って ボックスと穴を繰り返し生成・削除 する構造で、単純だが効率的な設計方式
  • 複雑なモデルには限界があるものの、スペーサー・ベアリングドリフトなどの単純な幾何構造の作成に有用 なツールと評価されている

OpenSCADでバッテリーホルダーを設計

  • AAおよびAAA電池向けの 基本的な箱型オーガナイザー をAutodesk Fusionで設計した後、これをOpenSCADで再実装
    • 既存のFusionモデルは、変数調整によって電池サイズ、行数・列数を変えられる パラメータ化構造
    • 完成したモデルはPrintablesにアップロードされている
  • OpenSCADは コードを書いて3Dオブジェクトを生成するCADツール で、単純な構造のモデル学習に適している
    • 筆者はOpenSCADチュートリアルの一部を参照しながら、約1時間にわたって実習を進めた
    • 成果物は battery_holder_generator.scad ファイルとして公開されている

コード構造と動作方式

  • 主な変数として AAAAAheightCompartmentthicknessWallnumRowsnumColumnsbatteryType などを定義
    • widthBoxlengthBoxdepthBox は各変数の組み合わせで計算される
  • difference() 関数で 基本ボックス(cube) を生成した後、内部に バッテリー用の穴を繰り返し差し引く構造
    • for ループと translate() を使って穴の位置を計算し、cube() で各穴を生成
    • let() を使って startColumnstartRow をループ内で定義しなければならない部分が混乱したと述べている

OpenSCADとFusionの比較

  • 同じモデルを FusionとOpenSCADでそれぞれ生成した後、スライサーで比較
    • 結果として出力物は事実上同一で、OpenSCADは 軽量なコードベースのアプローチ によって素早い修正が可能
    • 高価なCADソフトウェアがなくても同等レベルの成果物 を得られる

活用可能性と限界

  • 複雑な設計には向かないが、スペーサー・ベアリングドリフトなどの単純な幾何構造の作成 には非常に有用
    • 実生活で頻繁に必要になる 単純部品の製作自動化 に強みがある
  • OpenSCADの コード中心の設計方式 は、反復的で規則的な構造の生成に効率的

結論

  • OpenSCADは 簡単な3Dモデルを素早く生成できるコードベースCADツール と評価されている
    • 筆者は「単に箱を描いて穴を開けるだけだが、かなりいい」と表現した
    • 今後の簡単な設計作業では、FusionよりOpenSCADの方が実用的かもしれない

2件のコメント

 
ahwjdekf 2025-12-22

私はFreeCADを強くおすすめします。

 
GN⁺ 2025-12-22
Hacker Newsのコメント
  • OpenSCAD はプログラマー的な思考にぴったり合う CAD ツール
    すべての要素をパラメータ化できるので、一度作ったプロジェクト用エンクロージャを変数をいくつか変えるだけでさまざまなバージョンとして生成できる
    最新の nightly ビルドで Manifold バックエンドを設定すると、レンダリング速度が分単位から秒単位まで短縮される
    公式の 2021 リリースは古すぎて使いづらい
    BOSL2 ライブラリはフィレット、丸め、アタッチなどの機能を追加し、OpenSCAD をおもちゃレベルから実用的な設計ツールへ引き上げてくれる
    Git との相性も非常に良く、Fusion 360 のバイナリファイルよりも .scad ファイルの差分をずっと比較しやすい

  • OpenSCAD の限界を感じて、Python でSDF(符号付き距離関数)ベースの 3D メッシュ生成ライブラリ sdf を自作した
    Python の自由なロジックを使ってモデルを構成でき、既存の 3D メッシュを読み込んで
    侵食、膨張、切断、中空化
    のような処理も行える
    このプロジェクトにはまだやることが多いが、この分野には強い関心があると思っている

    • Build123dCadQuery のような他の Python ベースのモデリングツールと何が違うのか気になる
      STL はビットマップのように三角形の座標を保存するが、STEP はベクターアートのようにモデル生成コマンドを保存する
      ほとんどの GUI CAD は STEP ベースなので互換性が高い
      もし SDF が STL しか生成しないなら、GUI CAD との互換性を考えると Build123d や CadQuery を学ぶほうが良いのではないかと思う
      Build123d は Fusion360 や FreeCAD のように 2D スケッチから 3D へ変換する概念なので、GUI とコードベース CAD を行き来しやすい
    • このライブラリが先細りの可変ピッチヘリックスの問題を解決してくれるかもしれないと期待している
    • PythonSCAD も libfive を通じて SDF をサポートしている — サンプルページ の中ほどで “sdf” を検索すればよい
    • **メタボール(blobby)**スタイルのブレンディングを簡単に実装できる点が特に印象的
    • 既存の STL ファイルを読み込んで穴を開けたり別のオブジェクトを結合したりできる機能が興味深い
      Meshlab のようなツールはエラーメッセージが分かりにくくて失敗したが、この方式ならずっと直感的に作業できそう
  • 最近 OpenSCAD を使い始めたが、たいていの CAD が大量の機能を覚えさせるのに対して、OpenSCAD はA4 一枚のチートシートで説明できる
    2021 リリースの代わりに git master 版を使えば、ずっと高速で新しい機能も使える
    BOSL2 ライブラリを使えば従来型 CAD の複雑な機能を自分で実装しなくて済み、内部実装も見られるので学ぶ楽しさが大きい

    • 自分も OpenSCAD のおかげで 3D プリント設計の精度を手に入れられた
      GUI CAD では 0.25mm の修正でもすべての穴やカットアウトを再調整しなければならず挫折したが、コードベースのアプローチならそうした問題を避けられる
      BOSL2 のcenter originデフォルトのおかげで変換作業がずっと簡単になる
    • git master 版は旧バージョンよりレンダリング速度が数十倍速い
    • チートシートへのリンクを求めている
    • ただし鋭い角の除去のような作業は依然として難しいという限界がある
    • BOSL2 は本当に強力で便利なライブラリ
  • OpenSCAD にはオブジェクトの概念がないので、box1.width のようなアクセスができないのが残念
    Build123d を使ってみたが、バグが多くドキュメントも不足している。いつか改善されてほしい

  • OpenSCAD の長所は、球、円柱、キューブを数学的に組み合わせてモデリングしやすいこと
    欠点は、その数学的な組み合わせ能力がそのままモデリングの限界になること
    Python をサポートするフォーク PythonSCAD は、まもなくメインリリースに統合される予定

    • OpenSCAD は絶対座標ベースなので、相対配置やソリッド間の関係を表現しづらい
      ボルトのようなモデルを作るには各部分を別々に作って重ねる必要がある
      実際の部品に合わせて位置合わせするには多くの手計算が必要で、ハードコードされた寸法は変更しにくい
      最新ベータ版のレンダラーはずっと高速なので、ぜひ試す価値がある
    • OpenSCAD にはhullMinkowski 和もあり、使いこなせば強力なツールになる
    • ブラウザで動く JavaScript 版 OpenJSCAD もある
      GitHub リポジトリ 参照
    • Java ベースの Bowler Studio もおすすめ。Clojure サポートと物理シミュレーション機能が内蔵されている
    • 点座標を直接定義して複雑な形状を作ることもできるが、順序がシビアでMENSA テストのように感じる
  • 自分は軽量な 3D モデラーとして OpenSCAD のシンプルさが好き
    巨大な GUI CAD ではなく、グラフィックプログラミングのように基本図形と変換だけでモデルを作れる
    久しぶりにコードを開いても、数行見ればすぐ理解できる

    • 昔は OpenSCAD をよく使っていたが、実際には従来型 CAD のほうが直感的なことが多いと感じる
      数学的な計算が必要な拘束条件は、GUI CAD のスケッチ機能のほうがずっと簡単
      CAD なら段階ごとに戻って構造を確認できるので、スクリプトを読み解く必要がない
  • OpenSCAD は内蔵エディタではなく外部エディタを使える
    外部エディタで保存すると自動的にプレビューが更新される
    外部エディタ設定ガイド

  • 以前、OpenSCAD 入門用に「10 の重要な概念」チュートリアルを書いた
    チュートリアルへのリンク

  • ヒント: $fn 変数を設定して解像度調整が可能
    $fn = $preview ? 32 : 64;

    • ただし、FEM 解析用にエクスポートするときは $fn を高くしすぎるとメッシュ性能が低下することがある
      見た目の滑らかさより解析精度が重要なので、32〜64 程度が適切
  • 現実に役立つモデルを作るには手間がかかるが、2KB のテキストファイルで完全なパラメトリックモデルを表現できる点はとても魅力的
    Git diff も意味のある形で機能し、Customizer パネルでモデルをアプリのように調整できる
    FreeCAD の巨大な XML ファイルよりずっと効率的

    • 自分は主に単一部品の修正やバリエーション作成を頻繁に行うが、Python を使うとこうした反復作業がずっと簡単になる
    • 数学的にモデルを記述するほうが自分には自然
      ただし、面取り(chamfer)丸めのような機能が標準では用意されておらず、cone や sphere を使った minkowski 演算で実装しなければならないのは面倒