Download src/Mod/Import/stepZ.py from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 4.92 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Import/stepZ.py
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/src/Mod/Import/stepZ.py
-
curl -L -o stepZ.py https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Import/stepZ.py
4.92 kB
| # SPDX-License-Identifier: LGPL-2.1-or-later | |
| # **************************************************************************** | |
| # * Copyright (c) 2018 Maurice <easyw@katamail.com> * | |
| # * * | |
| # * StepZ Import Export compressed STEP files for FreeCAD * | |
| # * License: LGPLv2+ * | |
| # * * | |
| # **************************************************************************** | |
| # workaround for unicode in gzipping filename | |
| # OCC7 doesn't support non-ASCII characters at the moment | |
| # https://forum.freecad.org/viewtopic.php?t=20815 | |
| import FreeCAD | |
| import FreeCADGui | |
| import shutil | |
| import os | |
| import re | |
| import ImportGui | |
| import PySide | |
| from PySide import QtCore | |
| from PySide import QtGui | |
| import tempfile | |
| ___stpZversion___ = "1.4.0" | |
| # support both gz and zipfile archives | |
| # Catia seems to use gz, Inventor zipfile | |
| # improved import, open and export | |
| import gzip as gz | |
| import builtins | |
| import importlib | |
| import zipfile as zf | |
| # import stepZ; import importlib; importlib.reload(stepZ); stepZ.open(u"C:/Temp/brick.stpz") | |
| def mkz_string(input): | |
| if isinstance(input, str): | |
| return input | |
| else: | |
| input = input.encode("utf-8") | |
| return input | |
| #### | |
| def mkz_unicode(input): | |
| if isinstance(input, str): | |
| return input | |
| else: | |
| input = input.decode("utf-8") | |
| return input | |
| #### | |
| def sayz(msg): | |
| FreeCAD.Console.PrintMessage(msg) | |
| FreeCAD.Console.PrintMessage("\n") | |
| #### | |
| def sayzw(msg): | |
| FreeCAD.Console.PrintWarning(msg) | |
| FreeCAD.Console.PrintWarning("\n") | |
| #### | |
| def sayzerr(msg): | |
| FreeCAD.Console.PrintError(msg) | |
| FreeCAD.Console.PrintWarning("\n") | |
| #### | |
| def import_stpz(fn, fc, doc): | |
| # sayz(fn) | |
| ext = os.path.splitext(os.path.basename(fn))[1] | |
| fname = os.path.splitext(os.path.basename(fn))[0] | |
| basepath = os.path.split(fn)[0] | |
| filepath = os.path.join(basepath, fname + ".stp") | |
| tempdir = tempfile.gettempdir() # get the current temporary directory | |
| tempfilepath = os.path.join(tempdir, fname + ".stp") | |
| with builtins.open(tempfilepath, "wb") as f: # py3 | |
| f.write(fc) | |
| # ImportGui.insert(filepath) | |
| if doc is None: | |
| ImportGui.open(tempfilepath) | |
| else: | |
| ImportGui.open(tempfilepath, doc.Name) | |
| FreeCADGui.SendMsgToActiveView("ViewFit") | |
| try: | |
| os.remove(tempfilepath) | |
| except OSError: | |
| sayzerr("error on removing " + tempfilepath + " file") | |
| ### | |
| def open(filename, doc=None): | |
| if zf.is_zipfile(filename): | |
| with zf.ZipFile(filename, "r") as fz: | |
| file_names = fz.namelist() | |
| for fn in file_names: | |
| sayz(fn) | |
| with fz.open(fn) as zfile: | |
| file_content = zfile.read() | |
| import_stpz(filename, file_content, doc) | |
| else: | |
| with gz.open(filename, "rb") as f: | |
| fnm = os.path.splitext(os.path.basename(filename))[0] | |
| sayz(fnm) | |
| file_content = f.read() | |
| import_stpz(filename, file_content, doc) | |
| #### | |
| def insert(filename, doc): | |
| doc = FreeCAD.ActiveDocument | |
| open(filename, doc) | |
| #### | |
| def export(objs, filename): | |
| """exporting to file folder""" | |
| # sayz(filename) | |
| sayz("stpZ version " + ___stpZversion___) | |
| ext = os.path.splitext(os.path.basename(filename))[1] | |
| fname = os.path.splitext(os.path.basename(filename))[0] | |
| basepath = os.path.split(filename)[0] | |
| tempdir = tempfile.gettempdir() # get the current temporary directory | |
| filepath = os.path.join(basepath, fname) + ".stp" | |
| filepath_base = os.path.join(basepath, fname) | |
| namefpath = os.path.join(basepath, fname) | |
| outfpath = os.path.join(basepath, fname) + ".stpZ" | |
| outfpathT = os.path.join(tempdir, fname) + ".stpZ" | |
| outfpath_stp = os.path.join(basepath, fname) + ".stp" | |
| outfpathT_stp = os.path.join(tempdir, fname) + ".stp" | |
| outfpath_base = basepath | |
| # outfpath_str = mkz_string(os.path.join(basepath,fname)) | |
| outfpath_str = os.path.join(basepath, fname) + ".stp" | |
| outfpathT_str = os.path.join(tempdir, fname) + ".stp" | |
| if os.path.exists(outfpathT_stp): | |
| os.remove(outfpathT_stp) | |
| sayzw("Old temp file with the same name removed '" + outfpathT_stp + "'") | |
| ImportGui.export(objs, outfpathT_stp) | |
| with builtins.open(outfpathT_stp, "rb") as f_in: | |
| file_content = f_in.read() | |
| new_f_content = file_content | |
| f_in.close() | |
| with gz.open(outfpathT_str, "wb") as f_out: | |
| f_out.write(new_f_content) | |
| f_out.close() | |
| if os.path.exists(outfpath): | |
| shutil.move(outfpathT_str, outfpath) | |
| # os.remove(outfpathT_stp) | |
| else: | |
| shutil.move(outfpathT_str, outfpath) | |
| # os.remove(outfpathT_stp) | |
| #### | |