📐

OpenSCADのフィレットと面取りの使い方

に公開

OpenSCADのフィレットと面取りの使い方

概要

OpenSCADで立体の角を処理する際に用いられる代表的な手法が「フィレット」と「面取り」です。
どちらも角の形状を変化させますが、目的・見た目・力学的効果が異なります。

本記事では、これら2種類の角処理の違いを明確にし、minkowski()関数と外部ライブラリ BOSL2 を使った実装方法とベストプラクティスを紹介します。


1. フィレットと面取りの違い

フィレット

フィレットは角を滑らかな曲面で丸める処理です。
主に以下の目的で使われます:

  • 応力集中の軽減(構造強度の向上)
  • 美観の向上
  • 清掃性の向上(食品・医療機器など)

面取り

面取りは角を直線的に削ぐ処理です。
主な目的は以下の通り:

  • 組み立て性の向上(部品の嵌合性)
  • エッジの除去(安全対策)
  • 工業製品としての加工性向上
項目 フィレット 面取り
形状 曲面 直線
印象 柔らかく自然 シャープで工業的
主な目的 応力緩和・デザイン 組立性・安全性
加工例 曲げ加工、射出成形品 機械加工、CNCカット
OpenSCADでの実現方法 minkowski() or BOSL2 BOSL2

2. OpenSCADでのフィレット実装

2.1 minkowski()を使った標準的な角丸

OpenSCAD標準関数 minkowski() を使うと、任意形状に球体を足し合わせることで全体を丸められます。

// minkowski()によるフィレット例
radius = 2;
minkowski() {
    cube([20, 20, 20], center = true);
    sphere(r = radius);
}

この方法では、形状全体の角が一括して丸められます。
ただし、計算コストが非常に高く、複雑なモデルではレンダリング時間が大幅に増えます。


2.2 BOSL2を使った部分フィレット

外部ライブラリ BOSL2GitHubリンク)のcuboid()関数で、
特定の方向やエッジのみを丸める制御が可能になります。

// BOSL2を利用した部分フィレット
include <BOSL2/std.scad>;

// X+方向、Y-方向のみにフィレット (半径1.5)
cuboid(
  [30, 20, 10],
  rounding = 1.5,
  edges = [RIGHT, BACK]
);

特徴

  • 特定エッジのみを丸め可能
  • 高速・安定したパラメトリック制御
  • minkowski()に比べて軽量で実用的

3. OpenSCADでの面取り実装

BOSL2のcuboid()関数で、簡単に面取りを追加できます。

// BOSL2で面取りを実装
include <BOSL2/std.scad>;

// サイズ30x20x10の直方体のY方向のエッジに1.5の面取りを適用
cuboid(
    size = [30, 20, 10],
    chamfer = 1.5,
    edges = [BACK]
);

Chamferの利点

  • 加工を意識したモデリングが可能
  • シャープな印象を維持したまま安全性を確保
  • 組立方向に応じた選択的面取りが容易

4. フィレットと面取りの使い分け指針

用途・目的 推奨処理 解説
応力集中を避けたい構造部品 フィレット 滑らかな曲線で応力を分散
工業デザインで柔らかい印象を与えたい フィレット 美観と触感を重視
組立時の嵌合を容易にしたい 面取り 角を落としてガイド形状に
加工現場でCNCや押出材を想定 面取り 加工コストを低減
見た目に変化をつけたい フィレット+面取り併用 異なる方向に両処理を使い分け

5. フィレット/面取りのパフォーマンスチューニング

フィレットや面取りは頂点数が増加し、処理が重くなりやすいです。
以下の設定でパフォーマンスを最適化できます。

🔧 高速化のポイント

設定 推奨値 効果
$fn 16〜32 プレビュー時のポリゴン分割を抑制
render(convexity=10) 適用箇所を限定 ブーリアン演算の負荷軽減
difference()union() 必要最小限に ネスト構造を避けて演算コスト削減
include <BOSL2/std.scad>;

$fn = 24; // プレビュー軽量化
render(convexity = 10);

cuboid(
    size = [40, 40, 10],
    rounding = 2,
    edges = [TOP]
);

6. ベストプラクティスまとめ

  • 試作段階ではminkowski()、量産モデルではBOSL2を使う
  • フィレット半径・面取り寸法は変数化して一元管理
  • レンダリング前に$fnを低めに設定して開発効率を向上
  • 目的に応じてフィレットと面取りを併用(例:外周はR加工、内角はC加工)
  • 最終出力時に高解像度化して滑らかな仕上がりに

7. 参考リソース

GitHubで編集を提案

Discussion