package org.geogebra.common.geogebra3D.euclidian3D.printer3D; import org.geogebra.common.plugin.GeoClass; /** * OpenSCAD format */ public class FormatJscad implements Format { @Override public void getExtension(StringBuilder sb) { sb.append(".jscad"); } @Override public void getScriptStart(StringBuilder sb) { sb.append( "// Created with GeoGebra www.geogebra.org \nfunction main() {\n var s=[];"); } @Override public void getScriptEnd(StringBuilder sb) { sb.append(" return union(s);\n}"); } @Override public void getObjectStart(StringBuilder sb, GeoClass type, String label) { sb.append("\n // "); sb.append(type); sb.append(": "); sb.append(label); } @Override public void getPolyhedronStart(StringBuilder sb) { sb.append("\n s.push(polyhedron({"); } @Override public void getPolyhedronEnd(StringBuilder sb) { sb.append("\n }));\n"); } @Override public void getVerticesStart(StringBuilder sb) { sb.append("\n points : ["); } @Override public void getVertices(StringBuilder sb, double x, double y, double z) { sb.append("\n ["); sb.append(x); sb.append(","); sb.append(y); sb.append(","); sb.append(z); sb.append("]"); } @Override public void getVerticesSeparator(StringBuilder sb) { sb.append(","); } @Override public void getVerticesEnd(StringBuilder sb) { sb.append("\n ],"); } @Override public void getFacesStart(StringBuilder sb) { sb.append("\n triangles : ["); } @Override public void getFaces(StringBuilder sb, int v1, int v2, int v3) { sb.append("\n ["); sb.append(v1); sb.append(","); sb.append(v3); sb.append(","); sb.append(v2); sb.append("]"); } @Override public void getFacesSeparator(StringBuilder sb) { sb.append(","); } @Override public void getFacesEnd(StringBuilder sb) { sb.append("\n ]"); } }