つよくなりたいなあ

地に足をつけず世界を生きぬくブログです

HEMESH使ってProcessingから3D printingしたい

Processingでつくったジェネラティブな3Dを3Dプリンターで出力したいなーと最近考えています。
会社で新しくかったマシンは案件で稼働中なのですぐには使えないのですが、Fabcafeとかあるし、3D printingできる環境は揃ってる。

Processingから3D printingしたいときはHE_Meshというライブラリを使うと簡単です。

github.com

今日試しにつくってみたやつ。値を変えるだけでも形が変わって楽しいです。

/*
 * 2018/06/05
 * HE_MESH CUBE
 */

import wblut.geom.*;
import wblut.hemesh.*;
import wblut.core.*;
import wblut.math.*;
import wblut.nurbs.*;
import wblut.*;
import wblut.processing.*;

HE_Mesh MESH;
WB_Render RENDER;
HEC_Cube creator;

import peasy.*;
PeasyCam CAM;

void setup() {

  size(500, 500, P3D);
  CAM = new PeasyCam(this, 100);

  creator = new HEC_Cube();

  creator.setEdge(30);
  MESH = new HE_Mesh(creator);

  //MODIFIER
  HEM_Wireframe strut = new HEM_Wireframe();
  //strut.setStrutRadius(100);

  MESH.modify(strut);


  HEM_ChamferCorners chamfer = new HEM_ChamferCorners().setDistance(15);
  HEM_ChamferEdges edges = new HEM_ChamferEdges().setDistance(8);

  MESH.modify(chamfer);
  MESH.modify(edges);

  MESH.triangulate();//for save to stl
  RENDER = new WB_Render(this);
}

void draw() {
  background(255);

  //camera
  CAM.beginHUD();
  directionalLight(126, 126, 126, 0, 0, -1);
  ambientLight(102, 102, 102);
  CAM.endHUD();

  stroke(0);
  strokeWeight(2);
  noFill();
  RENDER.drawEdges( MESH );
}

void keyPressed() {
  if (key == 's') {
    saveFrame("mesh-####.jpg");
  }
  if (key == 'e') {
    HET_Export.saveToSTL(MESH, sketchPath("test2.stl"), "export");
  }
}

f:id:heyassy:20180605221724j:plain f:id:heyassy:20180605222350j:plain

HET_Export.saveToSTL(MESH, sketchPath("test2.stl"), "export");.stlファイルに書き出しています。 これで出力する前段階なのですが、サイズが大きすぎるとマシンによっては時間がかかるらしいので小さめでやってみたいと思います。今度Fabcafe行ってこよう。