3D word print
3d_word_stl.pde
- //controlP5
- import controlP5.*;
- ControlP5 controlP5;
- Textfield tfUserName;
- String txts = "";
- int sliderA;
- // Import
- import javax.swing.*;
- // Unlekker
- import unlekker.data.*;
- import unlekker.geom.*;
- public STL stl;
- public FaceList poly;
- // File IO
- String getFile;
- String setFile;
- String [] txtarray = null;
- String txt = null;
- // Field
- int FIELD_SIZE = 50;
- int FIELD_STEP = 10;
- //import peasy.org.apache.commons.math.*;
- //import peasy.*;
- //import peasy.org.apache.commons.math.geometry.*;
- PFont ff;
- PImage ww;
- ArrayList positions = new ArrayList();
- //PeasyCam cam;
- String sentence;
- public void setup()
- {
- size(400, 250, P3D);
- //cam = new PeasyCam(this, 80);
- //cam.setRotations( -0.73, -0.27, 0.30);
- ff = loadFont("HelveticaNeue-UltraLight-48.vlw");
- sentence = "";
- ww = crImage();
- scan();
- colorMode(RGB, 255);
- frameRate(60);
- fill(0, 0);
- controlP5 = new ControlP5(this);
- controlP5.addButton("savefile", 1, 180, 150, 40, 10);
- controlP5.addSlider("sliderA", -10, 10,0, 100, 100, 200, 10);
- smooth();
- }
- public void draw()
- {
- background(0);
- lights();
- fill(255);
- text("press any one word → slide bar → save file", 80, 200); // 表示するテキスト, x座標, y座標
- pushMatrix();
- translate(-200, -8, 0);
- // STL書き出し
- if (setFile != null) {
- beginRaw("unlekker.data.STL", setFile+".stl");
- println("start :"+setFile);
- }
- for(int i = 0; i < positions.size()-1; i++)
- {
- PVector ps = (PVector) positions.get(i);
- translate(ps.x+200, ps.y+50, 0);
- noStroke();
- fill(200);
- box(1, 1, sliderA);
- translate(-(ps.x+200), -(ps.y+50), 0);
- }
- // STL書き出し終了
- if (setFile !=null) {
- endRaw();
- setFile = null;
- println("end");
- }
- popMatrix();
- controlP5.draw();
- }
- PImage crImage()
- {
- PGraphics pg = createGraphics(400,20,JAVA2D);
- pg.beginDraw();
- pg.background(255);
- pg.fill(250);
- pg.textAlign(CENTER);
- pg.textFont(ff, 16);
- pg.text(sentence, 0, 0, 400, 20);
- pg.endDraw();
- PImage w = createImage(400,20,RGB);
- copy(pg, 0, 0, 400, 20, 0, 0, 400, 20);
- return w;
- }
- public void scan()
- {
- positions.clear();
- for(int x = 0; x < ww.width; x++) {
- for(int y = 0; y < ww.height; y++) {
- if(get(x,y) != -65794){
- positions.add(new PVector(x,y,0));
- }
- }
- }
- }
- public void keyPressed() {
- if(textWidth(sentence) <= 210){
- sentence += key;
- crImage();
- scan();
- }
- else
- sentence = "";
- }
- public void savefile(int theValue) {
- setFile = setFileName();
- }
- public void sliderA(int v) {
- sliderA = v;
- }
file_io.pde
- //ファイルを取り込むファンクション
- void fileLoader() {
- //選択ファイルパスのドット以降の文字列を取得
- String ext = getFile.substring(getFile.lastIndexOf('.') + 1);
- //その文字列を小文字にする
- ext.toLowerCase();
- //文字列末尾がstlであれば
- if (ext.equals("stl")) {
- println(ext);
- stl=new STL(this, getFile);
- // Get polygon data
- poly=stl.getPolyData();
- poly.normalize(FIELD_SIZE*2); // normalize object to 400 radius
- poly.calcBounds();
- poly.center(); // center it around world origin
- }
- //選択ファイルパスを空に戻す
- getFile = null;
- }
- //ファイル選択画面、選択ファイルパス取得の処理
- String getFileName() {
- //処理タイミングの設定
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- try {
- //ファイル選択画面表示
- JFileChooser fc = new JFileChooser();
- int returnVal = fc.showOpenDialog(null);
- //「開く」ボタンが押された場合
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- //選択ファイル取得
- File file = fc.getSelectedFile();
- //選択ファイルのパス取得
- getFile = file.getPath();
- }
- }
- //上記以外の場合
- catch (Exception e) {
- //エラー出力
- e.printStackTrace();
- }
- }
- }
- );
- //選択ファイルパス取得
- return getFile;
- }
- //ファイル選択画面、選択ファイルパス取得の処理
- String setFileName() {
- //処理タイミングの設定
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- try {
- //ファイル選択画面表示
- JFileChooser fc = new JFileChooser();
- int returnVal = fc.showSaveDialog(null);
- //「開く」ボタンが押された場合
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- //選択ファイル取得
- File file = fc.getSelectedFile();
- //選択ファイルのパス取得
- setFile = file.getPath();
- }
- }
- //上記以外の場合
- catch (Exception e) {
- //エラー出力
- e.printStackTrace();
- }
- }
- }
- );
- //選択ファイルパス取得
- return setFile;
- }
0 コメント:
コメントを投稿