Study-gcode

Method

従来の 3D データをスライスする方法では、内部構造などは、汎用のスライサー(スライスソフト)に依存してしまう。

汎用ソフトで、手の届かない細かな部分まで操作するために、gcode をモデリングするような手法を考えた。

photo


index

  • 60x60.gcode // example gcode

  • 5 // rhino5 ghx

    • ExportFile.ghx // テキストファイル書き出しのテスト用スクリプト、GH_CPython

    • grid-ver1.ghx // 中心点からの距離に応じて変化量の変わるグリッド、線形での移動なのであまり可愛くない

    • Write-gcode-ver1.ghx
      // 普通の四角形、G93 E0 の部分 Python 側で反映なかった X

    • Write-gcode-ver2.ghx // 普通の四角形
      // 吐き出し量 E0 修正、速度指定 F4000 追加、gcode ファイル書き出し機能追加、スカート追加 X

    • Write-gcode-ver2-Desktop.ghx // 普通の四角形
      // slab の卓上用に、無理やり書き換えた。とりあえずok

    • Write-gcode-ver3.ghx
      // 3D のポリラインのデータリストから、gcode に変換するように変えた。タイムスタンプと、必要なパラメータを冒頭にコメントを書けるようにした

    cf.
    アトラクタで膨らむグリッドを使って、真ん中がやわらかい感じ?
    photo
    GH: GRID SPREADING
    http://formularch.blogspot.com/2012/06/gh-grid-spreading.html



gcode syntax

G0 Xnn Ynn Znn Enn Fnn Snn : 高速直線移動
G1 Xnn Ynn Znn Enn Fnn Snn : 直線移動

Xnn X軸上における移動先の位置
Ynn Y軸上における移動先の位置
Znn Z軸上における移動先の位置
Enn 現在地点と移動先地点の間で押し出されるフィラメントの量
Fnn 速さ的な、変えたいときにそこで宣言するだけでよい

; ex
G1 Z3.0 
G1 X1.25 Y2.5 E3.0 F2.0

G92: 位置を指定する(Set Position)

G92 E0

Printing - 181022

吐出量の調整が必要
これは多すぎる
卓上の 3D プリンタは、パスの length の 0.1 倍くらいの値が良さそう
photo

成功した
181022-Desktop.gcode
photo


gh-PointList to gcode

Write-gcode-ver2.ghx までは、2次元パスに、ループ処理でZ座標を足しているんですけど、途中でカタチを変えてくのとかだと、2次元パスが単一ではないので、この方法は変えたほうがいい。

現状(上の状態から)、3次元に配列したパス(データツリー)から gcode に変換、に実装し直す。
これからはパスの方で3次元情報も与えて(2次元のパスを)書く方法に。

造形物の可視化もできるので一石二鳥


ghPython で、Datatree

マジでよくわからない
今回は、とりあえず 30x50 のデータツリーを、
Flatten した 1500 のリストにして、50 ずつ切り出して使った

ver3

とりあえず OK

なんか資料はあるけど
http://cu.t-ads.org/tips-datatree-in-python/

Grasshopper 1.0 (Rhino6) 以降は、TreeHelper とかいうのがあるっぽい

import ghpythonlib.treehelpers as th

https://developer.rhino3d.com/guides/rhinopython/grasshopper-datatrees-and-python/


Printing - 181029

データはこれ
photo

ベットが綺麗になった。ガラスベットに。
ちょっとはがれる
photo

テスト。
剥がれがあるものの、gcode は大丈夫そう。
photo

靴のようなもののテスト。
UV のサーフェスの走査パスから gcode。

サーフェス

photo

ポリラインに

photo

gcode 書き出した

photo

普通のスライサで、スライスするとこんな感じ

photo

プリント結果

photo

photo

photo

cf.
ナイキ初の3Dプリントによるシューズアッパー開発、ロンドンマラソンで披露
photo
https://www.fashionsnap.com/article/2018-04-18/nike-flyprint/


gcode Modeling??

普通の3Dプリント
3D Brep → スライサー → プリント
スライス工程がブラックボックス

ここをハックするための、gcode 生成

普通のスライスでは普通のものしか作れない

現状はスライスしていない、良質なポリラインをつくっている、gcode Modeling
良質なポリラインを、gcode に変換する

応用例、案として


Next Step??

Desktop

  • Helical (Z変化の gcode) // OK
  • 棒、螺旋の柱 // モデリング途中
  • 曲面仕上げプリント
  • 空中でブリッジ

Big

  • ずらし
  • 広がるグリッド

Helical Printing - 181105

一筆書き、螺旋で巻きながら積み上げる
一層目は、普通に 0.2mm。
螺旋部分は、0.2mm ピッチ X 1.5倍のレイヤー厚で。

zが変化するポリラインも gcode にできた。

フラットな一層目と、螺旋8周、2本のポリライン。

photo

綺麗にできてる

photo

photo

長め
途中で若干脱調気味??
後半剥がれた

photo


棒、螺旋の柱

棒の下に十字のスカートとか要るかも


Set Extruder Value

E の値の指定方法を gcode の最初に宣言する
M82 と M83

普通のスライサでスライスすると、M82 になる。
値を累計加算する感じ。

Makes the extruder interpret extrusion as absolute positions.
This is the default in repetier.
https://reprap.org/wiki/G-code#M82:_Set_extruder_to_absolute_mode

その行ごとに解釈するのが、M83

Makes the extruder interpret extrusion values as relative positions.
https://reprap.org/wiki/G-code#M83:_Set_extruder_to_relative_mode


Ref.

G-code(RepRap community Wiki) // 本家(英語)
https://reprap.org/wiki/G-code

G-code(RepRap community Wiki) // 日本語版
https://reprap.org/wiki/G-code/ja

Grasshopper の gcode 生成のアドオン、silkworm
https://projectsilkworm.com/
https://github.com/ProjectSilkworm/Silkworm

FDM の gcode での表現等の研究をしている明治大学・高橋先生
https://haruki.xyz/