CAD/CAM 技術信頼性 構造設計

RedRing切削シミュレーション内部ロジック解説

内部ロジックの全体像

本記事では、RedRingの切削シミュレーションデモにおける内部ロジックを、実行フローに沿って整理します。デモは、フラットエンドミルとボールエンドミルの2種類を選択して実行でき、各フレームで工具位置と加工対象の除去状態を動的に確認できます。

処理フロー

  1. 入力条件の確定: 工具種(フラット/ボール)、実行条件、表示条件を確定します。
  2. フレーム進行(自動送り): 自動送りでフレームを順次進め、時系列で状態を更新します。
  3. 工具位置の更新: 各フレームで工具の位置・姿勢を更新し、現在ステップの状態を確定します。
  4. 除去状態の反映: 工具位置に対応する除去状態を加工対象へ反映します。
  5. 可視化出力: 更新済みの工具位置と除去結果を描画し、連続的な変化として表示します。

設計上のポイント

  • 工具種の切り替え可能性: 同一デモ内で工具種を切り替え、挙動の違いを比較できます。
  • 時系列の追跡性: 自動送りにより、工具移動と除去変化の対応関係を連続して確認できます。
  • 責務分離: 入力条件、シミュレーション更新、可視化表示を分離し、説明性と拡張性を確保しています。
  • 再現性: 同一入力条件では同じ進行を再現できるため、検証・比較に向いています。

デモ動画の見方

動画を見る際は、工具位置の推移除去される領域の変化を対応づけて追うと、内部ロジックの挙動を把握しやすくなります。特に、工具種の違いによる見え方の差分は、実運用時の検討ポイントとして有効です。

関連記事

デモ全体の概要は「RedRing切削シミュレーションデモ紹介」で解説しています。先に概要編を読むと、本記事の内部ロジック説明をより理解しやすくなります。

RedRing実装で確認できるOctree機能(実装済み)

ここでは一般論ではなく、RedRing実装で確認できる機能だけを整理します(コード名は補足として最小限に記載)。

1. 空間分割と探索

  • 3D空間を再帰的に8分割するOctree構造を実装。
  • 挿入・範囲検索・最近傍探索を利用可能。
  • 並列検索APIと整合テストを実装。

2. 工具形状による除去(VoxelOctree)

  • セル状態は Solid / Mixed / Empty の3状態。
  • 除去API(例: remove_material_box, remove_material_capsule)を実装。
  • remaining_volume()detect_undercut() を実装。

3. 表示方法(可視化)

  • OctreeワイヤーフレームのGPU描画ステージを実装。
  • 深さ切替表示と深さアニメーションに対応。

4. スナップショットと干渉チェック

  • 距離ベースのスナップショット方式を採用方針として明示。
  • Octree範囲検索で候補を絞り、詳細判定後に除去処理へ接続する構成。

ToolPathから工具位置算出までの実装フロー(実装済み)

本実装は ToolPath を入力として、まず経路を線分集合へ正規化し(Line はそのまま、Arc は chord tolerance 指定の polyline へ離散化)、各線分に切削フラグを保持します。続いて工具種別ごとに「除去演算へ渡す工具中心軌跡」を決定し、フラットエンドミルは幾何を不変、ボールエンドミルは中心軌跡を +radius だけ Z オフセットした線分列へ写像します。材料除去は切削フラグが真の線分に限定して実行し、フラットは swept-cylinder、ボールは capsule として VoxelOctree に適用します。さらに累積走行距離を基準に snapshot を記録するため、各時刻相当点は (segment_index, t) で再構成できます。

  1. 経路正規化: approach / contour / retract を統合し、Arc を polyline に離散化して線分列化(切削フラグ継承)
  2. 工具中心軌跡の確定: 工具種別で前処理分岐(Flat: 恒等写像、Ball: Z 方向へ +radius オフセット)
  3. 除去演算: is_cutting=true 線分のみを対象に、工具形状モデル別 API で VoxelOctree を更新
  4. 状態サンプリング: 累積距離間隔で snapshot を保存し、segment_index + t で位置・進行度を同定

視覚イメージ(処理の流れ)

1. Octree分割と工具切削による除去イメージ
Octreeの状態遷移(縦3ステップ) Step 1: 分割前(粗いセル) 大きいセルで保持(まだ切削判定は粗い) Step 2: 工具近傍のみ細分化(Mixed) 工具近傍セルのみ再帰分割 Step 3: 交差セルを除去(Empty化) 工具軌跡と交差したセルを除去して体積を更新

1枚の図で「分割前 → 近傍細分化 → 除去後」を縦方向に追えるようにしています。

2. 加工パス上の工具位置ポイント算出と配置イメージ
ToolPath → 線分化 → 距離ベースサンプリング approach arc(polyline化) retract snapshot k snapshot k+1 snapshot k+2 工具中心 (segment_index, t) 累積距離間隔ごとに位置を算出して保存

工具の現在位置は、線分インデックスと線分内パラメータtで表現され、距離間隔ごとにスナップショット保存されます。

今後の拡張予定

  • 工具モデルの拡張: テーパ工具・R付き工具など、実運用で使う工具形状への対応を追加します。
  • 除去判定の高精度化: Octreeの局所再分割条件と交差判定ロジックを改善し、精度と計算量のバランスを最適化します。
  • 加工条件の比較機能: 複数条件の実行結果(除去体積・所要時間・軌跡差分)を同一画面で比較できるようにします。
  • スナップショット解析の強化: 任意時刻ジャンプ、差分ハイライト、履歴のエクスポート機能を追加します。
  • 可視化と説明性の向上: 重要イベント(細分化・除去・干渉)の注釈表示を強化し、挙動の理解をより直感的にします。

-CAD/CAM, 技術信頼性, 構造設計
-, , ,

Optimole による最適化