CAD/CAM お知らせ 実装記録

RedRing v0.1.0公開:STLから切削シミュレーションまで

RedRing の最初のプレビュー版 v0.1.0 を、2026年11月3日に公開しました。STL を読み込み、3軸の走査線パスを計算し、その結果を切削シミュレーションで確かめるまでを、1つのアプリで通して試せます。

RedRing は、Rust と wgpu で開発している CAD/CAM の研究用プラットフォームです。今回の版では、機能の多さよりも、入力から検証までが一本の流れでつながることを優先しました。

ご注意:v0.1.0 は NC を出力しません。ツールパスは切削シミュレーションで確かめるためのもので、実際の加工には使えません。

v0.1.0 でできること

1. STL読み込みメニューまたはドロップで製品形状を取り込む2. 走査線パス計算逆オフセット法で3軸のツールパスを求める3. 切削シミュレーション削れる過程を再生し、結果を製品形状と比べる

1. STL読み込み

メニューの「ファイル」→「読み込み…」、またはウィンドウへのドロップで STL を読み込みます。ASCII と Binary のどちらにも対応しています。読み込んだ形状は、そのまま加工の対象になります。

2. 走査線パス計算

逆オフセット法で、ボールエンドミルとフラットエンドミルの3軸走査線パスを生成します。加工条件のウィンドウ(Shift+M)で、工具、送り方(ダウンカット・アップカット・ジグザグ)、ピックフィード、送り、工具の移動範囲、素材の余裕と精度を指定できます。画面は日本語と英語に対応しています。

既定の条件は、ボールエンドミル φ10、ピックフィード 2 mm、送り 1200 mm/min です。この条件では、平らな面のパス間に残る山の高さ(カスプハイト)の上限が 0.1010 mm と表示されます。傾いた面では変わるため、目安の値です。

3. 切削シミュレーション

計算したパスに沿って素材を削り、その過程をアニメーションで確認できます。コマ送り、区間の端点への移動、進捗バーでのスクラブ、自動再生に対応しています。条件を変えて取り込み直してもカメラの向きと拡大を保つため、同じ場所を見比べられます。

最後のフレームでは、素材の面を製品形状と比較して色分けします。

色(既定)意味
赤削り込み:製品形状の内側へ、トレランスより深く削った所
緑トレランスの中:製品形状からの距離がトレランス以内の所
青削り残し:製品形状の外側へ、トレランスより離れた所

技術的な見どころ:トレランスを点の間でも保証する

今回もっとも力を入れたのは、ツールパスの点と点の間です。CL(工具先端が通る面)の上に点を等間隔で置いて直線で結ぶ方法では、点の上は正しくても、その間の直線が急な壁の CL 面の下を通ることがあります。サンプル間隔を細かくしても誤差は比例して小さくなるだけで、計算時間が先に増えていきます。

v0.1.0 では、点の間隔を細かくするのではなく、隣り合う2点の区間ごとに逆オフセット形状の要素を調べ、直線より上に出る量の最大を閉じた式で求めます。

  • トレランスを超えた区間にだけ点を足します
  • CL 面の段差では、高い側の高さのまま進んでから下ろします
  • トレランスは 0.001 mm で、STL の入力ではこの範囲に経路を収めます

開発時にサンプルデータで測った値は次のとおりです(ボールエンドミル φ10、ピックフィード 2 mm、素材の精度 0.05 mm、release ビルド)。

項目等間隔 1.0 mm の点を結ぶだけの場合点の間を確かめる場合
経路が CL 面より下を通る量の最大58.97 mm0.001 mm
切削シミュレーションで測った最も深い削り込み0.758 mm0.0008 mm

点を足すのは必要な所だけなので、計算時間も実用的な範囲に収まりました。同じ条件で、ツールパスの計算は約1.8秒、切削シミュレーションを含むジョブ全体は約5.8秒でした。これらの値は形状と環境によって変わります。

切削シミュレーションの素材には、トリデクセル(X・Y・Z の3方向の格子線上に、材料のある区間を持つ表現)を採用しました。7月の内部ロジック解説で紹介した Octree ベースの素材から置き換えたもので、面の向きによらず格子の間隔程度の精度で形状を表せます。

試し方

Rust の環境があれば、ソースからビルドして試せます。各 OS の前提条件は README をご覧ください。

git clone --branch v0.1.0 https://github.com/RedRing2020/RedRing.git
cd RedRing
cargo run --releaseCode language: PHP (php)
  1. STL ファイルをウィンドウにドロップします
  2. Shift+M で加工条件のウィンドウを開き、「投入」を押します
  3. 実行が終わったら「取り込み」を押します
  4. Space で自動再生します

詳しい操作は切削シミュレーションのマニュアルにまとめています。

現時点の主な制約

  • NC を出力しません
  • パス間のエアカットとつなぎの移動(アプローチ・リトラクト)はありません。シミュレーションでは、工具はパスの間を跳びます
  • 工具の半径より狭い隙間や穴は、両側を1本のパスでつなぎます。工具が形状に接しない所にある小さな形状は、見落として削り残すことがあります
  • 工具はボールエンドミルとフラットエンドミルだけで、工具の登録機能はありません
  • ジョブは同じプロセスの中で実行するため、実行が終わるまで画面が止まります

そのほかの制約は、マニュアルの「既知の制約」に記載しています。

今後の予定

  • v0.2.0:工程、ジョブ、工具の管理
  • v0.3.0:つなぎの移動と NC の出力

管理機能まで揃うのを待たずに公開したのは、実際に使った方の意見を設計に反映するためです。試していただいた感想や不具合の報告は、GitHub Issues でお待ちしています。開発への参加についてはContributors募集のページをご覧ください。

RedRing v0.1.0 を GitHub で見る

-CAD/CAM, お知らせ, 実装記録
-, , , ,

Optimole による最適化