3D 印刷用のメッシュ スライス ユーティリティに取り組んでいます。一般に、3D メッシュ モデルを 2D 形状 (多数のポリゴン、おそらく穴を含む) にスライスし、特定のパターンを使用して決定された厚さのパスでそれらを塗りつぶす必要があります。これらのパスは、3d プリンター ファームウェアの gcode コマンドを生成するために使用されます。
python と perl で書かれた、同じ目的を持つさまざまなオープン ソース ツールがあります。しかし、私の目標は、スライサーのワークフローを理解し、C または C++ で独自のツールを作成することです。
これまでのところ、スライスの輪郭を取得でき、パスで埋めることができます。問題は、これを行うための効率的なアルゴリズムが見つからなかったことです。インフィル例の概略プロセス:
これらの充填パスを生成する方法について誰かアドバイスできますか? ありがとう。
現在、次のアルゴリズムを使用しています。
- 形状の境界ボックスを見つける
- bb を線で縦に分割します (線の数 = bb.width/path.thickness)
- 形状と各線の交点を見つけます (線ごとに 2 つの点にする必要があります)。
- 境界からのオフセットを使用して、これらのポイントからセグメントを作成します
- 元のセグメントを接続してライン ストリップを形成するセグメントを追加します
- gcode を生成するか、パスを描画する準備ができました
これは単純で高速なアルゴリズムですが、凹面ポリゴンや穴のあるポリゴンでは機能しません。また、指定されたパターンを 1 つだけ使用します。