1 package eu.mihosoft.vrl.v3d;
4 import java.util.ArrayList;
5 import java.util.Iterator;
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;
29 Parser parser = ParserBuilder.createDefaultParser();
30 ArrayList<Vector3d> points =
new ArrayList<Vector3d>();
31 ArrayList <CSG> parts =
new ArrayList<CSG>();
35 parser.parse(
new FileInputStream(
source), DXFParser.DEFAULT_ENCODING);
38 DXFDocument doc = parser.getDocument();
39 Iterator layerIterable = doc.getDXFLayerIterator();
40 if (layerIterable !=
null) {
41 for (; layerIterable.hasNext();) {
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)) {
52 List plines = layer.getDXFEntities(entityType);
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)+
",");
65 else if (entityType.contentEquals(DXFConstants.ENTITY_TYPE_LINE)) {
67 System.out.println(
"Loading line");
68 List plines = layer.getDXFEntities(entityType);
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)+
",");
76 System.out.println(
"Extruding");
82 else if (entityType.contentEquals(DXFConstants.ENTITY_TYPE_SPLINE)) {
84 List plines = layer.getDXFEntities(entityType);
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)+
",");
99 System.out.println(
"Found type: " + entityType);
116 }
catch (Exception e) {
static ArrayList< CSG > toParts(File source, double extrudeDistance)
final PropertyStorage properties
static CSG points(Vector3d dir, List< Vector3d > points)