FDM / FFF 3Dプリンタのノズルの話

友人が運営しているhardware discuss discordで3Dプリンタのオススメを訊いてみた。

カーボン配合のフィラメントみたいに強度のある材料を使ってみたい(それ以外はDMM.make AKIBAにある)と伝えたところノズルについて教えてもらった。

カーボンPLAなど攻撃性のあるフィラメントを使う場合、真鍮や炭素鋼などのノズルは消耗するとのこと。ルビーやタングステンなら多少マシだがやはり消耗するのでは、という意見。

紹介してもらったPrusa i3というモデルではE3D V6規格というノズルを採用していて、クローン製品でも同じノズルを使っていることがあるみたい。3Dプリンタメーカーが異なってもノズルは互換品があったりするのだな。

ノズル材料ごとの熱伝導率、熱膨張率、硬度などを紹介されている方がいた。クラウドファンディングで資金を集めてノズルを作っている会社もあるそうな。

note.com

フィラメント材料ごとに適したノズルの紹介や、ノズルの消耗についてまとめられたエントリを見つけた。確かに、ノズルの先端が摩耗して小さくなっているように見える。

nature3d.net

3Dプリンタ欲しいと思っているのだが、それなりに広い場所が無いとつらそうではある…頭冷やして考え直そう。

(2020/12/30追記)ノズルのまとめがあったので追加。 note.com

第二種電気工事士試験に申し込んだ

電気工事士の資格を持っていると、住宅のコンセントや電灯をイジったりすることが出来る、という程度の知識。家屋の電気周りをDIYで改造したいというのがモチベーション。

www.sat-co.info

試験日程は、

  • 10月4日 (土) 筆記
  • 12月12日 (土) or 12月13日 (日) 実技

となっている。

何を勉強していいかよく分かってないので書籍を読んだりして勉強する。今年の秋は予定が詰まってて大変だ。

過去エントリー

インフラ構成のテスト

serverspecで構成のテストをしていたことはあるんですが、別のツールも出てきているのでメモ。

testinfra

Python製のテストツール。Pythonでテスト処理自体を定義できるので、Pythonプログラマに取っては都合が良さそう。Python自体のランタイムが必要だとセットアップが面倒なので、CI上で動かすのが便利かは分からない。

testinfra.readthedocs.io

Goss

Go製のテストツール。シングルバイナリなので、アーキテクチャ、プラットフォームごとのバイナリ作っておいてコピーすれば動かせる。yamlの定義ファイルを元にテストする。

github.com

Dockerコンテナ検査用のラッパー dgoss であるとか、kubernetes用ラッパーの kgoss であるとか、docker-compose用のラッパーの dcgoss だとか色々あって便利そう。

OpenSCAD

Pythonで3Dデータをモデリングしたくて調べたところ、OpenSCADというGPL2のオープンソースソフトウェアを見つけた。

プログラムを記述してオブジェクトを生成し、簡単な演算で結合したり交差を取ったり出来る。GUIでの編集は出来ない。決まりきった形状をプログラム上で表現するのは楽。フィレットとかC面作れるともっと良い。

www.openscad.org

構文的にはJavaScriptに似てる気もしますが、ループなどはイテレータを使うようにも見えて不思議な感じ。

次のコードは立方体を生成して結合 (Union)するサンプル。

union(){
    cube(size=[10, 20, 10]);
    cube(size=[20, 10, 10]);
};

このようなオブジェクトが生成される。

f:id:key3:20200808121220p:plain

元カブクのtaxponさんがPython製のOpenSCAD用コードジェネレータを書いていたので試してみた。

twitter.com

PyPiに登録されている。

pypi.org

適当な円筒を生成して足したり引いたりするサンプル。

import openpyscad as ops

cyl_outer_tube = ops.Cylinder(40, r1=30, r2=30)
cyl_bottom = ops.Cylinder(2, r1=28, r2=28)
cyl_inner_tube = ops.Cylinder(30, r1=10, r2=10)

(cyl_outer_tube - (cyl_bottom + cyl_inner_tube)).write("sample.scad")

OpenSCAD用のコードを生成します。

difference(){
    cylinder(h=40, r1=30, r2=30);
    union(){
        cylinder(h=2, r1=28, r2=28);
        cylinder(h=30, r1=10, r2=10);
    };
};

OpenSCAD上で見るとこのような感じに。見にくい…。

f:id:key3:20200808121638p:plain

MacPreviewで開くとこの様になっています。

f:id:key3:20200808121705p:plain

OpenSCADからSTLファイルを生成することも可能で、良いなと思ったのがCLIで触れること。サーバー上などヘッドレスで動かしたい環境で使いやすく、個人的にかなりの高得点。

Makefile を書いてバッチでゴリゴリ回せる。

.PHONY: sample
sample: clean
  pipenv run python sample.py
  openscad -o sample.stl sample.scad

.PHONY: clean
clean:
  rm -f *.scad
  rm -f *.stl
  rm -f *.png

フィレットやチャンファーかけられないようなのが残念ですが、プログラム上でモデリングしたい場合には有用かなと思いました。Fusion360RhinocerosでもPythonプラグインが書けるので、きちんとしたCADにプラグインを追加するか、コード上で全てを生成するかといういくつかの選択肢があります。また何か面白い話を見つけたら書こう。

ここは何?

わたしの技術系備忘録です。2020年8月現在、興味のある事柄は以下です。

  • ウェブバックエンド
  • IoTデバイス

キャンプやモーターサイクルなどの趣味の話題はGo for it!にまとめているので、よろしければそちらも御覧ください。