Hashimoto   Baku

Hashimoto   Baku

HoudiniでGコードを編集する (メモ)

このページは個人的なメモ書きです。何かあればご連絡ください。

  • ポリラインのフォーマット
    • サンプル bgeoです!!!
    • 全てG0, G1(リニア移動)と見做す
    • G3, G4(円弧移動)はsubdivideしてリニア移動に
    • リニア移動の度に頂点追加
    • それ以外のフィードレートを変える、温度を変えるといったコマンドは無視する
    • なるたけロスレスでGコードのデータを抑えられるよう、頂点に関係のないGコード、Mコードや、コメントはpre_gcodepost_gcode に文字列として突っ込む
      • pre_gcode + (P, E, F属性などに保存されている頂点データ) + post_gcode みたいな感じで連結していくと、(円弧コマンドを除き)完全に元のGコードが復元される
    • 最後の頂点以降のテキストは、Detail attributeにafter_gcodeとして追加
    • この辺を見てもらえたら...
    •    # GeometryにGコード関連の属性を追加
          attribRefs = {
              # E軸 = エクストルーダー
              'E': geo.addAttrib(hou.attribType.Point, "E", 0.0),
      
              # F = FeedRate
              'F': geo.addAttrib(hou.attribType.Point, "F", 0.0),
      
              # 進捗(%)
              'progress': geo.addAttrib(hou.attribType.Point, "progress", 0.0),
      
              # 残り分数(min)
              'remaining': geo.addAttrib(hou.attribType.Point, "remaining", 0.0),
      
              # G Codeのタイプ(Skirt/Brim, Perimeter, External perimeter, Internal infill...)
              'feature_type': geo.addAttrib(hou.attribType.Point, "feature_type", ""),
      
              # ノズル幅
              'nozzle_diameter': geo.addAttrib(hou.attribType.Point, "nozzle_diameter", 0.0),
      
              # 最後のコマンドの次の行の頭から、現在のコマンドまで。最後の改行 \n を含む
              'pre_gcode': geo.addAttrib(hou.attribType.Point, "pre_gcode", ""),
      
              # 現在の行から
              'post_gcode': geo.addAttrib(hou.attribType.Point, "post_gcode", "\n"),
      
              # レイヤー
              'layer_index': geo.addAttrib(hou.attribType.Point, "layer_index", 0),
          }