import processing.opengl.*; import anar.*; Group group = new Group(); void setup(){ size(800,400,OPENGL); Anar.init(this); Anar.drawAxis(); Face.globalRender = new RenderFaceNormal(new AColor(255,100),new AColor(100)); initForm(); } void initForm(){ ///////////////////////////////////// //SQUARE ///////////////////////////////////// Face square = new Square(20); square.tag("square"); square.rotateX(-0.2); square.translate(10,20,0); println(square.toObjExporter("square")); group.add(square); ///////////////////////////////////// //RECTANGLE ///////////////////////////////////// Face rect = new Rect(50,24); rect.tag("rect"); rect.rotateZ(-0.1); rect.rotateY(0.5); rect.translate(-100,0,0); println(rect.toObjExporter("rect")); group.add(rect); ///////////////////////////////////// //CIRCLE ///////////////////////////////////// Face circle = new Circle(20); circle.tag("circle"); circle.rotateZ(-0.1); circle.rotateY(0.5); circle.translate(-10,20,20); println(circle.toObjExporter("circle")); group.add(circle); ///////////////////////////////////// //ELLIPSE ///////////////////////////////////// Face ellipse = new Ellipse(40,20); ellipse.tag("ellipse"); println(ellipse.toObjExporter("ellipse")); group.add(ellipse); ///////////////////////////////////// //STAR ///////////////////////////////////// Face star = new Star(10,20,6); star.tag("star"); star.rotateZ(0.1); star.rotateX(0.3); star.translate(10,0,30); println(star.toObjExporter("star")); println(star.parentList(-1)); group.add(star); Anar.sliders(star); Anar.camTarget(star); //font = loadFont("ATRotisSemiSans-48.vlw"); } PFont font; void draw(){ background(155); group.draw(); }
import processing.opengl.*; import anar.*; Group group = new Group(); void setup(){ size(800,400,OPENGL); Anar.init(this); Anar.drawAxis(); Face.globalRender = new RenderFaceNormal(new AColor(255,100),new AColor(100)); initForm(); } void initForm(){ ///////////////////////////////////// //BOX ///////////////////////////////////// Obj box = new Box(10,20,30); box.tag("box"); box.rotateZ(0); box.rotateX(0); box.translate(100,0,0); println(box.toObjExporter("box")); println(box.parentList(-1)); group.add(box); ///////////////////////////////////// //CONE ///////////////////////////////////// Obj cone = new Cone(50,100,20); cone.tag("cone"); cone.translate(100,100,0); println(cone.toObjExporter()); group.add(cone); ///////////////////////////////////// //CYLINDER ///////////////////////////////////// Obj cylinder = new Cylinder(50,24,50); cylinder.tag("cylinder"); cylinder.translate(-100,0,0); println(cylinder.toObjExporter("cylinder")); group.add(cylinder); ///////////////////////////////////// //SPHERE ///////////////////////////////////// Obj sphere = new Sphere(20); sphere.tag("sphere"); sphere.translate(-40,120,20); println(sphere.toObjExporter("sphere")); group.add(sphere); ///////////////////////////////////// //SWISSCROSS3D ///////////////////////////////////// Obj swissCross3D = new SwissCross3D(10,10); swissCross3D.tag("swissCross3D"); //swissCross3D.fill(255,0,0,200); println(swissCross3D.toObjExporter("swissCross3D")); //swissCross3D.translate(-100,0,0); group.add(swissCross3D); Anar.sliders(swissCross3D); Anar.camTarget(swissCross3D); //font = loadFont("ATRotisSemiSans-48.vlw"); } PFont font; void draw(){ background(155); group.draw(); }
Some 3D operations are common to all CAD software. They are available in ANAR+ and described below through self-explaining example.
Example of extrusion
import anar.*; import processing.opengl.*; Obj myObj = new Obj(); void setup(){ size(800,400,OPENGL); frameRate(200); Anar.init(this); Anar.drawAxis(true); initForm(); } void initForm(){ //Create a new Line Pts pts = new Pts(); pts.add(Anar.Pt(100,110,20)); pts.add(Anar.Pt(110,100,40)); pts.add(Anar.Pt(110,90,60)); pts.add(Anar.Pt(90,90,90)); //Create a Face Face f = new Star(50,100,5); //Extrude the face along the Line myObj = new Extrude(f,pts); Anar.camTarget(myObj); Anar.sliders(myObj); } void draw(){ background(155); myObj.draw(); } //Toggle the display of the sliders void keyPressed(){ Anar.slidersToggle(); }
import anar.*; import processing.opengl.*; Obj myObj = new Obj(); void setup(){ size(800,400,OPENGL); frameRate(200); Anar.init(this); Anar.drawAxis(true); initForm(); } void initForm(){ //Create a new Line Pts pts = new Pts(); pts.add(Anar.Pt(10,0,0)); pts.add(Anar.Pt(10,0,100)); pts.add(Anar.Pt(20,0,110)); pts.add(Anar.Pt(10,0,120)); pts.add(Anar.Pt(10,0,200)); //Create an object from a revolution around the Z axis // 30 is the number of elements per revolutions myObj = new Revolve(pts, Anar.Pt(0,0,20),30); //Change the color of the object myObj.fill(255,255,0); Anar.camTarget(myObj); Anar.sliders(myObj); } void draw(){ background(155); myObj.draw(); //myObj.fill(random(255),random(255),0); } void keyPressed(){ Anar.slidersToggle(); }
Given two paths it is possible to define faces out of them. Note the export functions at the end
import processing.opengl.*; import anar.*; /* * Example for Anar library by Guillaume LaBelle + Julien Nembrini * http://anar.ch */ Obj myObj; void setup(){ size(1000,500,OPENGL); Anar.init(this); // ///////////////////////////// Pts ptsA = new Pts(); Pt origin; ptsA.add(origin = Anar.Pt(0,0,0).tag("Origin")); // ///////////////////////////// Transform t = new Transform(); t.rotateZ(PI/14f); t.translate(Anar.PtNull(10,0,1)); // ///////////////////////////// Pt previous = origin; for (int i = 0; i<100; i++){ PtDER newPt = Anar.Pt(previous); newPt.apply(t); ptsA.add(newPt); previous = newPt; } // ///////////////////////////// Transform baseTransform; baseTransform = new Transform(); baseTransform.translate(Anar.PtNull(0,0, -20)); baseTransform.rotateX(1f); // ///////////////////////////// Pts ptsB = new Pts(ptsA,baseTransform); // ///////////////////////////// myObj = new SweepTwoPaths(ptsA,ptsB); Anar.camTarget(myObj); } void draw(){ background(255); myObj.draw(); } void keyPressed(){ if(key=='a') Autolisp.export(myObj,"myExport"); if(key=='f') RhinoScript.export(myObj,"myExport"); if(key=='s') SketchUpRuby.export(myObj,"myExport"); if(key=='o') ObjExporter.export(myObj,"myExport"); }