From f7fcf9bd58436c292fafa42481a7a0624d1c9358 Mon Sep 17 00:00:00 2001 From: Simon Huskier Date: Fri, 27 Nov 2015 17:08:13 +0800 Subject: [PATCH] Add URL file import into importStep function, but FreeCAD has a bug for urllib.open() function......, not work properly.... --- cadquery/freecad_impl/importers.py | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/cadquery/freecad_impl/importers.py b/cadquery/freecad_impl/importers.py index 80458be..cd0d25d 100644 --- a/cadquery/freecad_impl/importers.py +++ b/cadquery/freecad_impl/importers.py @@ -25,6 +25,24 @@ from .shapes import Shape import FreeCAD import Part +import sys + +if sys.version > '3': + PY3 = True + import urllib.request as urlreader + import urllib.parse as urlparse +else: + PY3 = False + import urllib as urlreader + import urlparse + +def isURL(filename): + schemeSpecifier = urlparse.urlparse(filename).scheme + if schemeSpecifier == 'http' or schemeSpecifier == 'https' or schemeSpecifier == 'ftp': + return True + else: + return False + class ImportTypes: STEP = "STEP" @@ -52,6 +70,19 @@ def importStep(fileName): :param fileName: The path and name of the STEP file to be imported """ + if isURL(fileName): + url = fileName + webFile = urlreader.urlopen(url) + localFileName = url.split('/')[-1] + localFile = open(localFileName, 'w') + if PY3: + localFile.write(webFile.read().decode('utf-8')) + else: + localFile.write(webFile.read()) + webFile.close() + localFile.close() + fileName = localFileName + #Now read and return the shape try: rshape = Part.read(fileName)