java - Strange Processing.dxf issue -


i have been tried study code , fine until press r save dxf output down.

java.lang.arrayindexoutofboundsexception     java.lang.nullpointerexception     @ processing.mode.java.runner.runner.findexception(runner.java:926)     @ processing.mode.java.runner.runner.reportexception(runner.java:871)     @ processing.mode.java.runner.runner.exceptionevent(runner.java:797)     @ processing.mode.java.runner.runner$2.run(runner.java:686) 

it appears errors below

i thought code problem until tried basic simpleexport sample in processing dfx library. same error popup , sketch played not responding. besides,a file written disk, empty.

any ideas?

***update: using processing 2.1.1, tested in 32bit , 64bit ver

i had issues processing 2.0 , dxf a couple of years ago , whipped out basic dxf writing function. here's same approach used on code linked to:

import ddf.minim.analysis.*; import ddf.minim.*;  //audio minim minim; audioinput microphone; fft fftlog; //audio-driven mesh waveform audio3d; //dxf output boolean record; printwriter out;  void setup() {   size(1250,750,p3d); //screen proportions   nostroke();   minim = new minim(this);   microphone = minim.getlinein(minim.stereo, 4096);    background(255);    fftlog = new fft(microphone.buffersize(),microphone.samplerate());   fftlog.logaverages(1,2);  //adjust numbers adjust spacing;   float w = float (width/fftlog.avgsize());   float x = w;   float y = 0;   float z = 50;   float radius = 10;   audio3d = new waveform(x,y,z,radius); } void draw() {   background(0);   directionallight(126,126,126,sin(radians(framecount)),cos(radians(framecount)),1);   ambientlight(102,102,102);    if (framecount>200)   {     for(int = 0; < fftlog.avgsize(); i++){       float zoom = 1;       float jitter = (fftlog.getavg(i)*2);       //println(jitter);       pvector foc = new pvector(audio3d.x+jitter, audio3d.y+jitter, 0);       pvector cam = new pvector(zoom, zoom, -zoom);       camera(foc.x+cam.x+50,foc.y+cam.y+50,foc.z+cam.z,foc.x,foc.y,foc.z,0,0,1);     }   }   //update fft   fftlog.forward(microphone.mix);   //update 3d mesh   audio3d.update();   audio3d.textdraw();   audio3d.plottrace(); } void stop(){   microphone.close();   minim.stop();   super.stop(); } class waveform {   float x,y,z;   float radius;    pvector[] pts = new pvector[fftlog.avgsize()];    pvector[] trace = new pvector[0];    waveform(float incomingx, float incomingy, float incomingz, float incomingradius)   {     x = incomingx;     y = incomingy;     z = incomingz;     radius = incomingradius;   }   void update()   {     plot();   }   void plot()   {     for(int = 0; < fftlog.avgsize(); i++)     {       int w = int(width/fftlog.avgsize());        x = i*w;       y = framecount*5;       z = height/4-fftlog.getavg(i)*4; //change multiplier reduces height default '10'        stroke(0);       point(x, y, z);       pts[i] = new pvector(x, y, z);       //increase size of array trace length+1       trace = (pvector[]) expand(trace, trace.length+1);       //always next last       trace[trace.length-1] = new pvector(pts[i].x, pts[i].y, pts[i].z);     }   }   void textdraw()   {     for(int =0; i<fftlog.avgsize(); i++){       pushmatrix();       translate(pts[i].x, pts[i].y, pts[i].z);       rotatey(pi/2);       rotatez(pi/2);        fill(255,200);       text(round(fftlog.getavg(i)*100),0,0,0);       popmatrix();     }   }   void plottrace()   {     stroke(255,80);     int inc = fftlog.avgsize();      if(record){//init dxf writing       out = createwriter("output.dxf");       out.println("0");       out.println("section");       out.println("2");       out.println("entities");     }      for(int i=1; i<trace.length-inc; i++)     {       if(i%inc != 0)       {         beginshape(triangle_strip);          float value = (trace[i].z*100);         float m = map(value, -500, 20000, 0, 255);         fill(m*2, 125, -m*2, 140);         vertex(trace[i].x, trace[i].y, trace[i].z);         vertex(trace[i-1].x, trace[i-1].y, trace[i-1].z);         vertex(trace[i+inc].x, trace[i+inc].y, trace[i+inc].z);         vertex(trace[i-1+inc].x, trace[i-1+inc].y, trace[i-1+inc].z);         endshape(close);          if(record){//write each quad face dxf file             out.println("  0 ");           out.println("3dface");           out.println(" 10");   // first x           out.println(trace[i].x);           out.println(" 20 ");  // first y           out.println(trace[i].y);           out.println(" 30 ");  // first z           out.println(trace[i].z);           out.println(" 11");   // second x           out.println(trace[i-1].x);           out.println(" 21 ");  // second y           out.println(trace[i-1].y);           out.println(" 31 ");  // second z           out.println(trace[i-1].z);           out.println(" 12");   // third x           out.println(trace[i-1+inc].x);           out.println(" 22 ");  // third y           out.println(trace[i-1+inc].y);           out.println(" 32 ");  // third z           out.println(trace[i-1+inc].z);           out.println(" 13");   // fourth x           out.println(trace[i+inc].x);           out.println(" 23 ");  // fourth y           out.println(trace[i+inc].y);           out.println(" 33 ");  // fourth z           out.println(trace[i+inc].z);           }        }     }        if(record)//finish writing       {          out.println("  0 ");         out.println("endsec");         out.println("  0");         out.println("eof");         out.flush();         out.close();          record = false;         println("wrote dxf!");       }    } } void keypressed() {   if (key == 'r') record = true; } 

it's not super pretty, feel free encapsulate functionality if want, it's not bad either (it's still ascii, human readable).

here's preview rhino (after rotating mesh because processing's coordinate system isn't same):

dxf mesh rhino preview


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -