BowlerKernel
SvgLoader.java
Go to the documentation of this file.
1 package com.neuronrobotics.bowlerstudio.scripting;
2 
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.Arrays;
6 import java.util.HashMap;
7 import java.util.List;
8 
9 import eu.mihosoft.vrl.v3d.CSG;
10 import eu.mihosoft.vrl.v3d.Polygon;
11 import eu.mihosoft.vrl.v3d.svg.SVGExporter;
12 import eu.mihosoft.vrl.v3d.svg.SVGLoad;
13 import javafx.scene.paint.Color;
14 
15 public class SvgLoader implements IScriptingLanguage {
16 
17  @Override
18  public Object inlineScriptRun(File code, ArrayList<Object> args) throws Exception {
19  SVGLoad s = new SVGLoad(code.toURI());
20  return run(s);
21  }
22 
23  @Override
24  public Object inlineScriptRun(String code, ArrayList<Object> args) throws Exception {
25  SVGLoad s = new SVGLoad(code);
26  return run(s);
27  }
28 
29  private Object run(SVGLoad s) {
30 
31  ArrayList<Object> polys= new ArrayList<>();
32  HashMap<String, List<Polygon>> polygons = s.toPolygons();
33  for(String key:polygons.keySet()) {
34  for(Polygon P:polygons.get(key)) {
35  polys.add(P);
36  }
37  }
38 
39  List<String> layers = s.getLayers();
40  double depth =5+(layers.size()*5);
41  for(int i=0;i<layers.size();i++) {
42  String layerName=layers.get(i);
43  CSG extrudeLayerToCSG = s.extrudeLayerToCSG(depth,layerName);
44  //extrudeLayerToCSG.setColor(Color.web(SVGExporter.colorNames.get(i)));
45  polys.add(extrudeLayerToCSG);
46  depth-=5;
47  }
48 
49  return polys;
50  }
51 
52  @Override
53  public String getShellType() {
54  return "SVG";
55  }
56 
57  @Override
58  public ArrayList<String> getFileExtenetion() {
59  return new ArrayList<>(Arrays.asList("SVG","svg"));
60  }
61 
62  @Override
63  public boolean getIsTextFile() {
64  return true;
65  }
66 
67  @Override
68  public String getDefaultContents() {
69  return new SVGExporter().make();
70  }
71 
72 }
Object inlineScriptRun(String code, ArrayList< Object > args)
Definition: SvgLoader.java:24
Object inlineScriptRun(File code, ArrayList< Object > args)
Definition: SvgLoader.java:18
CSG extrudeLayerToCSG(double t, String layer)
Definition: SVGLoad.java:657
static HashMap< String, List< Polygon > > toPolygons(File f)
Definition: SVGLoad.java:259
List< String > getLayers()
Definition: SVGLoad.java:648