diff options
-rw-r--r-- | examples/example012.scad | 12 | ||||
-rw-r--r-- | examples/example012.stl | 450 | ||||
-rw-r--r-- | import.cc | 88 |
3 files changed, 518 insertions, 32 deletions
diff --git a/examples/example012.scad b/examples/example012.scad new file mode 100644 index 0000000..d77b391 --- /dev/null +++ b/examples/example012.scad @@ -0,0 +1,12 @@ + +// example012.stl is Mblock.stl, (c) 2009 Will Langford +// licensed under the Creative Commons - GNU GPL license. +// http://www.thingiverse.com/thing:753 + +difference() +{ + sphere(20); + + translate([ -2.92 0.5 +20 ]) rotate([180 0 180]) + import_stl("example012.stl", convexity = 5); +} diff --git a/examples/example012.stl b/examples/example012.stl new file mode 100644 index 0000000..9c5c231 --- /dev/null +++ b/examples/example012.stl @@ -0,0 +1,450 @@ +solid ascii
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex 3.422440e+000 -1.067730e+001 5.000000e+000
+ vertex 6.347434e+000 -1.067730e+001 5.000000e+000
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ vertex 6.347434e+000 -1.067730e+001 5.000000e+000
+ vertex 6.347434e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 2.280978e+000 1.133150e+001 5.000000e+000
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ vertex 6.347434e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 2.280978e+000 1.133150e+001 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex -2.320538e+000 -4.613285e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex -4.104071e+000 -4.613285e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -4.104071e+000 -4.613285e+000 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex -8.527233e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.252235e+001 1.133150e+001 5.000000e+000
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ vertex -8.527233e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.252235e+001 1.133150e+001 5.000000e+000
+ vertex -1.252235e+001 -1.067730e+001 5.000000e+000
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ vertex -1.252235e+001 -1.067730e+001 5.000000e+000
+ vertex -9.793542e+000 -1.067730e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.252235e+001 1.133150e+001 1.500000e+001
+ vertex -1.252235e+001 1.133150e+001 5.000000e+000
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
+ outer loop
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ vertex -1.252235e+001 1.133150e+001 5.000000e+000
+ vertex -8.527233e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -9.124922e-001 -4.090940e-001 -0.000000e+000
+ outer loop
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ vertex -8.527233e+000 1.133150e+001 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -9.124922e-001 -4.090940e-001 0.000000e+000
+ outer loop
+ vertex -3.033951e+000 -9.213713e-001 1.500000e+001
+ vertex -8.527233e+000 1.133150e+001 5.000000e+000
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
+ outer loop
+ vertex -3.033951e+000 -9.213713e-001 1.500000e+001
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
+ outer loop
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ vertex -3.033951e+000 -9.213713e-001 5.000000e+000
+ vertex 2.280978e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
+ outer loop
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ vertex 2.280978e+000 1.133150e+001 5.000000e+000
+ vertex 6.347434e+000 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
+ outer loop
+ vertex 6.347434e+000 1.133150e+001 1.500000e+001
+ vertex 2.280978e+000 1.133150e+001 5.000000e+000
+ vertex 6.347434e+000 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
+ outer loop
+ vertex 6.347434e+000 1.133150e+001 1.500000e+001
+ vertex 6.347434e+000 1.133150e+001 5.000000e+000
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
+ outer loop
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ vertex 6.347434e+000 1.133150e+001 5.000000e+000
+ vertex 6.347434e+000 -1.067730e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ vertex 6.347434e+000 -1.067730e+001 5.000000e+000
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ vertex 6.347434e+000 -1.067730e+001 5.000000e+000
+ vertex 3.422440e+000 -1.067730e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 5.000000e+000
+ vertex 3.422440e+000 8.281660e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex 3.422440e+000 8.281660e+000 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 5.000000e+000
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -9.134987e-001 4.068417e-001 0.000000e+000
+ outer loop
+ vertex 3.422440e+000 8.281660e+000 1.500000e+001
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal -9.134987e-001 4.068417e-001 0.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ vertex 3.422440e+000 8.281660e+000 5.000000e+000
+ vertex -2.320538e+000 -4.613285e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -4.979881e-016 1.000000e+000 0.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ vertex -2.320538e+000 -4.613285e+000 5.000000e+000
+ vertex -4.104071e+000 -4.613285e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal -4.979881e-016 1.000000e+000 0.000000e+000
+ outer loop
+ vertex -4.104071e+000 -4.613285e+000 1.500000e+001
+ vertex -2.320538e+000 -4.613285e+000 5.000000e+000
+ vertex -4.104071e+000 -4.613285e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal 9.149041e-001 4.036714e-001 0.000000e+000
+ outer loop
+ vertex -4.104071e+000 -4.613285e+000 1.500000e+001
+ vertex -4.104071e+000 -4.613285e+000 5.000000e+000
+ vertex -9.793542e+000 8.281660e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal 9.149041e-001 4.036714e-001 0.000000e+000
+ outer loop
+ vertex -9.793542e+000 8.281660e+000 1.500000e+001
+ vertex -4.104071e+000 -4.613285e+000 5.000000e+000
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
+ outer loop
+ vertex -9.793542e+000 8.281660e+000 1.500000e+001
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
+ outer loop
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex -9.793542e+000 8.281660e+000 5.000000e+000
+ vertex -9.793542e+000 -1.067730e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 5.000000e+000
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 5.000000e+000
+ vertex -1.252235e+001 -1.067730e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ vertex -1.252235e+001 -1.067730e+001 5.000000e+000
+ vertex -1.252235e+001 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.252235e+001 1.133150e+001 1.500000e+001
+ vertex -1.252235e+001 -1.067730e+001 5.000000e+000
+ vertex -1.252235e+001 1.133150e+001 5.000000e+000
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex 1.156780e+001 -1.469280e+001 0.000000e+000
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
+ outer loop
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ vertex 1.156780e+001 -1.469280e+001 0.000000e+000
+ vertex 1.156780e+001 1.530720e+001 0.000000e+000
+ endloop
+ endfacet
+ facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ vertex -1.843220e+001 -1.469280e+001 0.000000e+000
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
+ outer loop
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex -1.843220e+001 -1.469280e+001 0.000000e+000
+ vertex 1.156780e+001 -1.469280e+001 0.000000e+000
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -1.184238e-016 -0.000000e+000
+ outer loop
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ vertex -1.843220e+001 1.530720e+001 0.000000e+000
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -1.000000e+000 -1.184238e-016 0.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ vertex -1.843220e+001 1.530720e+001 0.000000e+000
+ vertex -1.843220e+001 -1.469280e+001 0.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 0.000000e+000
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 1.000000e+000 0.000000e+000
+ outer loop
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 0.000000e+000
+ vertex -1.843220e+001 1.530720e+001 0.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ vertex -1.252235e+001 1.133150e+001 1.500000e+001
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex -1.252235e+001 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 1.500000e+001
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ vertex 3.422440e+000 8.281660e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -2.320538e+000 -4.613285e+000 1.500000e+001
+ vertex -4.104071e+000 -4.613285e+000 1.500000e+001
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -9.793542e+000 -1.067730e+001 1.500000e+001
+ vertex -4.104071e+000 -4.613285e+000 1.500000e+001
+ vertex -9.793542e+000 8.281660e+000 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex -3.033951e+000 -9.213713e-001 1.500000e+001
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal -0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex -1.843220e+001 1.530720e+001 1.500000e+001
+ vertex -1.252235e+001 1.133150e+001 1.500000e+001
+ vertex -8.527233e+000 1.133150e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 2.280978e+000 1.133150e+001 1.500000e+001
+ vertex 6.347434e+000 1.133150e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ vertex 6.347434e+000 1.133150e+001 1.500000e+001
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 1.000000e+000
+ outer loop
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ vertex 3.422440e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
+ outer loop
+ vertex 1.156780e+001 -1.469280e+001 1.500000e+001
+ vertex 1.156780e+001 1.530720e+001 1.500000e+001
+ vertex 6.347434e+000 -1.067730e+001 1.500000e+001
+ endloop
+ endfacet
+ facet normal 0.000000e+000 -0.000000e+000 -1.000000e+000
+ outer loop
+ vertex -1.843220e+001 1.530720e+001 0.000000e+000
+ vertex 1.156780e+001 1.530720e+001 0.000000e+000
+ vertex -1.843220e+001 -1.469280e+001 0.000000e+000
+ endloop
+ endfacet
+ facet normal 0.000000e+000 0.000000e+000 -1.000000e+000
+ outer loop
+ vertex -1.843220e+001 -1.469280e+001 0.000000e+000
+ vertex 1.156780e+001 1.530720e+001 0.000000e+000
+ vertex 1.156780e+001 -1.469280e+001 0.000000e+000
+ endloop
+ endfacet
+endsolid
\ No newline at end of file @@ -75,45 +75,69 @@ PolySet *ImportNode::render_polyset(render_mode_e) const PolySet *p = new PolySet(); p->convexity = convexity; - QFile f(filename); - if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) { - PRINTF("WARNING: Can't open import file `%s'.", filename.toAscii().data()); - return p; - } - if (type == TYPE_STL) { - int i = 0; - double vdata[3][3]; - QRegExp splitre = QRegExp("\\s*(vertex)?\\s+"); - while (!f.atEnd()) + QFile f(filename); + if (!f.open(QIODevice::ReadOnly)) { + PRINTF("WARNING: Can't open import file `%s'.", filename.toAscii().data()); + return p; + } + + QByteArray data = f.read(5); + if (data.size() == 5 && QString(data) == QString("solid")) { - QString line = QString(f.readLine()).remove("\n"); - if (line.contains("solid") || line.contains("facet") || line.contains("endloop")) - continue; - if (line.contains("outer loop")) { - i = 0; - continue; - } - if (line.contains("vertex")) { - QStringList tokens = line.split(splitre); - bool ok[3] = { false, false, false }; - if (tokens.size() == 4) { - vdata[i][0] = tokens[1].toDouble(&ok[0]); - vdata[i][1] = tokens[2].toDouble(&ok[1]); - vdata[i][2] = tokens[3].toDouble(&ok[2]); + int i = 0; + double vdata[3][3]; + QRegExp splitre = QRegExp("\\s*(vertex)?\\s+"); + f.readLine(); + while (!f.atEnd()) + { + QString line = QString(f.readLine()).remove("\n").remove("\r"); + if (line.contains("solid") || line.contains("facet") || line.contains("endloop")) + continue; + if (line.contains("outer loop")) { + i = 0; + continue; } - if (!ok[0] || !ok[1] || !ok[2]) { - PRINTF("WARNING: Can't parse vertex line `%s'.", line.toAscii().data()); - i = 10; - } else if (++i == 3) { - p->append_poly(); - p->append_vertex(vdata[0][0], vdata[0][1], vdata[0][2]); - p->append_vertex(vdata[1][0], vdata[1][1], vdata[1][2]); - p->append_vertex(vdata[2][0], vdata[2][1], vdata[2][2]); + if (line.contains("vertex")) { + QStringList tokens = line.split(splitre); + bool ok[3] = { false, false, false }; + if (tokens.size() == 4) { + vdata[i][0] = tokens[1].toDouble(&ok[0]); + vdata[i][1] = tokens[2].toDouble(&ok[1]); + vdata[i][2] = tokens[3].toDouble(&ok[2]); + } + if (!ok[0] || !ok[1] || !ok[2]) { + PRINTF("WARNING: Can't parse vertex line `%s'.", line.toAscii().data()); + i = 10; + } else if (++i == 3) { + p->append_poly(); + p->append_vertex(vdata[0][0], vdata[0][1], vdata[0][2]); + p->append_vertex(vdata[1][0], vdata[1][1], vdata[1][2]); + p->append_vertex(vdata[2][0], vdata[2][1], vdata[2][2]); + } } } } + else + { + f.read(80-4+4); + while (1) { + struct { + float i, j, k; + float x1, y1, z1; + float x2, y2, z2; + float x3, y3, z3; + unsigned short acount; + } __attribute__ ((packed)) data; + if (f.read((char*)&data, sizeof(data)) != sizeof(data)) + break; + p->append_poly(); + p->append_vertex(data.x1, data.y1, data.z1); + p->append_vertex(data.x2, data.y2, data.z2); + p->append_vertex(data.x3, data.y3, data.z3); + } + } } if (type == TYPE_OFF) |