cadquery-freecad-module/Libs/cadquery/tests/TestImporters.py

68 lines
2.7 KiB
Python

"""
Tests file importers such as STEP
"""
#core modules
import tempfile
from cadquery import *
from cadquery import exporters
from cadquery import importers
from cadquery.freecad_impl import suppress_stdout_stderr
from tests import BaseTest
#where unit test output will be saved
OUTDIR = tempfile.gettempdir()
class TestImporters(BaseTest):
def importBox(self, importType, fileName):
"""
Exports a simple box to a STEP file and then imports it again
:param importType: The type of file we're importing (STEP, STL, etc)
:param fileName: The path and name of the file to write to
"""
#We're importing a STEP file
if importType == importers.ImportTypes.STEP:
#We first need to build a simple shape to export
shape = Workplane("XY").box(1, 2, 3).val()
#Export the shape to a temporary file
shape.exportStep(fileName)
# Reimport the shape from the new STEP file
importedShape = importers.importShape(importType,fileName)
# Check to make sure we got a solid back
self.assertTrue(importedShape.val().ShapeType() == "Solid")
# Check the number of faces and vertices per face to make sure we have a box shape
self.assertTrue(importedShape.faces("+X").size() == 1 and importedShape.faces("+X").vertices().size() == 4)
self.assertTrue(importedShape.faces("+Y").size() == 1 and importedShape.faces("+Y").vertices().size() == 4)
self.assertTrue(importedShape.faces("+Z").size() == 1 and importedShape.faces("+Z").vertices().size() == 4)
def testSTEP(self):
"""
Tests STEP file import
"""
with suppress_stdout_stderr():
self.importBox(importers.ImportTypes.STEP, OUTDIR + "/tempSTEP.step")
def testSTEPFromURL(self):
"""
Tests STEP file import from a URL
"""
stepURL = "https://raw.githubusercontent.com/dcowden/cadquery/master/doc/_static/box_export.step"
importedShape = importers.importStepFromURL(stepURL)
# Check to make sure we got a solid back
self.assertTrue(importedShape.val().ShapeType() == "Solid")
# Check the number of faces and vertices per face to make sure we have a box shape
self.assertTrue(importedShape.faces("+X").size() == 1 and importedShape.faces("+X").vertices().size() == 4)
self.assertTrue(importedShape.faces("+Y").size() == 1 and importedShape.faces("+Y").vertices().size() == 4)
self.assertTrue(importedShape.faces("+Z").size() == 1 and importedShape.faces("+Z").vertices().size() == 4)
if __name__ == '__main__':
import unittest
unittest.main()