diff --git a/cadquery/freecad_impl/importers.py b/cadquery/freecad_impl/importers.py index 6f29ce8..7d4f0a9 100644 --- a/cadquery/freecad_impl/importers.py +++ b/cadquery/freecad_impl/importers.py @@ -4,7 +4,11 @@ import FreeCAD import Part - +import sys +import os +import urllib as urlreader +import tempfile + class ImportTypes: STEP = "STEP" @@ -30,11 +34,11 @@ def importStep(fileName): """ Accepts a file name and loads the STEP file into a cadquery shape :param fileName: The path and name of the STEP file to be imported - """ - + """ #Now read and return the shape try: - rshape = Part.read(fileName) + #print fileName + rshape = Part.read(fileName) #Make sure that we extract all the solids solids = [] @@ -44,3 +48,24 @@ def importStep(fileName): return cadquery.Workplane("XY").newObject(solids) except: raise ValueError("STEP File Could not be loaded") + +#Loads a STEP file from an URL into a CQ.Workplane object +def importStepFromURL(url): + #Now read and return the shape + try: + webFile = urlreader.urlopen(url) + tempFile = tempfile.NamedTemporaryFile(suffix='.step', delete=False) + tempFile.write(webFile.read()) + webFile.close() + tempFile.close() + + rshape = Part.read(tempFile.name) + + #Make sure that we extract all the solids + solids = [] + for solid in rshape.Solids: + solids.append(Shape.cast(solid)) + + return cadquery.Workplane("XY").newObject(solids) + except: + raise ValueError("STEP File from the URL: " + url + " Could not be loaded")