JavaCAD
DXF.java
Go to the documentation of this file.
1 package eu.mihosoft.vrl.v3d;
2 
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.io.FileInputStream;
8 import org.kabeja.dxf.DXFConstants;
9 import org.kabeja.dxf.DXFDocument;
10 import org.kabeja.dxf.DXFLayer;
11 import org.kabeja.dxf.DXFLine;
12 import org.kabeja.dxf.DXFPolyline;
13 import org.kabeja.dxf.DXFSpline;
14 import org.kabeja.dxf.DXFVertex;
15 import org.kabeja.dxf.helpers.Point;
16 import org.kabeja.dxf.helpers.SplinePoint;
17 import org.kabeja.parser.DXFParser;
18 import org.kabeja.parser.Parser;
19 import org.kabeja.parser.ParserBuilder;
20 
21 public class DXF{
22 
23  private File source;
26  private double extrudeDistance;
27 
28  public static ArrayList<CSG> toParts(File source, double extrudeDistance) {
29  Parser parser = ParserBuilder.createDefaultParser();
30  ArrayList<Vector3d> points = new ArrayList<Vector3d>();
31  ArrayList <CSG> parts = new ArrayList<CSG>();
32  try {
33 
34  // parse
35  parser.parse(new FileInputStream(source), DXFParser.DEFAULT_ENCODING);
36 
37  // get the documnet and the layer
38  DXFDocument doc = parser.getDocument();
39  Iterator layerIterable = doc.getDXFLayerIterator();
40  if (layerIterable != null) {
41  for (; layerIterable.hasNext();) {
42  // iterate over all the layers
43  DXFLayer layer = (DXFLayer) layerIterable.next();
44  Iterator entityIterator = layer.getDXFEntityTypeIterator();
45  if (entityIterator != null) {
46  for (; entityIterator.hasNext();) {
47  String entityType = (String) entityIterator.next();
48  System.out.println(entityType);
49  if (entityType.contentEquals(DXFConstants.ENTITY_TYPE_POLYLINE)) {
50 
51  // get all polylines from the layer
52  List plines = layer.getDXFEntities(entityType);
53  if (plines != null) {
54  for (Object p : plines) {
55  DXFPolyline pline = (DXFPolyline) p;
56  for (int i = 0; i < pline.getVertexCount(); i++) {
57  DXFVertex vertex = pline.getVertex(i);
58  Point point = vertex.getPoint();
59  points.add(new Vector3d(point.getX(), point.getY(), point.getZ()));
60  System.out.println(points.get(points.size()-1)+",");
61  }
62  }
63  }
64  }
65  else if (entityType.contentEquals(DXFConstants.ENTITY_TYPE_LINE)) {
66  // get all polylines from the layer
67  System.out.println("Loading line");
68  List plines = layer.getDXFEntities(entityType);
69  if (plines != null) {
70  for (Object p : plines) {
71  DXFLine pline = (DXFLine) p;
72  Point point = pline.getStartPoint();
73  points.add(new Vector3d(point.getX(), point.getY(), point.getZ()));
74  System.out.println(points.get(points.size()-1)+",");
75  }
76  System.out.println("Extruding");
77  parts.add(Extrude.points(new Vector3d(0, 0, extrudeDistance), points));
78  points.clear();
79 
80  }
81  }
82  else if (entityType.contentEquals(DXFConstants.ENTITY_TYPE_SPLINE)) {
83  // get all polylines from the layer
84  List plines = layer.getDXFEntities(entityType);
85  if (plines != null) {
86  for (Object p : plines) {
87  DXFSpline pline = (DXFSpline) p;
88  Iterator splinePointIterator = pline.getSplinePointIterator();
89  if(splinePointIterator!=null)
90  for (;splinePointIterator.hasNext();) {
91  SplinePoint point =(SplinePoint) splinePointIterator.next();
92  points.add(new Vector3d(point.getX(), point.getY(), point.getZ()));
93  System.out.println(points.get(points.size()-1)+",");
94  }
95  }
96  }
97  }
98  else {
99  System.out.println("Found type: " + entityType);
100 
101  }
102 // System.out.println("Points: \n{");
103 // for(Vector3d v: points){
104 // System.out.println(v+",");
105 // }
106 // System.out.println("}");
107 
108  }
109 
110  }
111 
112  return parts;
113  }
114  }
115 
116  } catch (Exception e) {
117  e.printStackTrace();
118  }
119  return null;
120  }
121 
122 
123 
124 
125 
126 }
static ArrayList< CSG > toParts(File source, double extrudeDistance)
Definition: DXF.java:28
double extrudeDistance
Definition: DXF.java:26
final PropertyStorage properties
Definition: DXF.java:25
static CSG points(Vector3d dir, List< Vector3d > points)
Definition: Extrude.java:199