Files
cadquery/tests/test_exporters.py

97 lines
2.6 KiB
Python
Raw Normal View History

2013-04-20 20:33:35 -04:00
"""
Tests basic workplane functionality
"""
# core modules
import sys
2018-02-02 16:34:37 +01:00
import io
# my modules
2013-04-20 20:33:35 -04:00
from cadquery import *
2020-07-28 22:23:13 +02:00
from cadquery import exporters, importers
2013-04-20 20:33:35 -04:00
from tests import BaseTest
2013-04-20 20:33:35 -04:00
class TestExporters(BaseTest):
def _exportBox(self, eType, stringsToFind):
2013-04-20 20:33:35 -04:00
"""
Exports a test object, and then looks for
2013-04-20 20:33:35 -04:00
all of the supplied strings to be in the result
returns the result in case the case wants to do more checks also
"""
p = Workplane("XY").box(1, 2, 3)
2018-02-02 16:34:37 +01:00
if eType == exporters.ExportTypes.AMF:
2018-02-02 16:34:37 +01:00
s = io.BytesIO()
else:
s = io.StringIO()
exporters.exportShape(p, eType, s, 0.1)
result = "{}".format(s.getvalue())
2013-04-20 20:33:35 -04:00
for q in stringsToFind:
self.assertTrue(result.find(q) > -1)
2013-04-20 20:33:35 -04:00
return result
2013-04-20 20:33:35 -04:00
def testSTL(self):
self._exportBox(exporters.ExportTypes.STL, ["facet normal"])
2013-04-20 20:33:35 -04:00
def testSVG(self):
self._exportBox(exporters.ExportTypes.SVG, ["<svg", "<g transform"])
2013-04-20 20:33:35 -04:00
def testAMF(self):
self._exportBox(exporters.ExportTypes.AMF, ["<amf units", "</object>"])
2013-04-20 20:33:35 -04:00
def testSTEP(self):
self._exportBox(exporters.ExportTypes.STEP, ["FILE_SCHEMA"])
2013-04-20 20:33:35 -04:00
def testTJS(self):
self._exportBox(
exporters.ExportTypes.TJS, ["vertices", "formatVersion", "faces"]
)
2020-07-28 22:23:13 +02:00
def testDXF(self):
s1 = (
Workplane("XZ")
.polygon(10, 10)
.ellipse(1, 2)
.extrude(1)
.edges("|Y")
.fillet(1)
.section()
)
exporters.dxf.exportDXF(s1, "res1.dxf")
s1_i = importers.importDXF("res1.dxf")
self.assertAlmostEquals(s1.val().Area(), s1_i.val().Area(), 6)
self.assertAlmostEquals(s1.edges().size(), s1_i.edges().size())
pts = [(0, 0), (0, 0.5), (1, 1)]
s2 = (
Workplane().spline(pts).close().extrude(1).edges("|Z").fillet(0.1).section()
)
exporters.dxf.exportDXF(s2, "res2.dxf")
s2_i = importers.importDXF("res2.dxf")
self.assertAlmostEquals(s2.val().Area(), s2_i.val().Area(), 6)
self.assertAlmostEquals(s2.edges().size(), s2_i.edges().size())
s3 = (
Workplane("XY")
.ellipseArc(1, 2, 0, 180)
.close()
.extrude(1)
.edges("|Z")
.fillet(0.1)
.section()
)
exporters.dxf.exportDXF(s3, "res3.dxf")
s3_i = importers.importDXF("res3.dxf")
self.assertAlmostEquals(s3.val().Area(), s3_i.val().Area(), 6)
self.assertAlmostEquals(s3.edges().size(), s3_i.edges().size())