📐
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を使った部分フィレット
外部ライブラリ BOSL2(GitHubリンク)の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加工)
- 最終出力時に高解像度化して滑らかな仕上がりに
Discussion