diff --git a/src/Mod/BIM/nativeifc/ifc_commands.py b/src/Mod/BIM/nativeifc/ifc_commands.py index 25591cdc01..c27a0aca35 100644 --- a/src/Mod/BIM/nativeifc/ifc_commands.py +++ b/src/Mod/BIM/nativeifc/ifc_commands.py @@ -22,9 +22,9 @@ """This module contains IFC-related FreeCAD commands""" - import FreeCAD import FreeCADGui + from . import ifc_openshell translate = FreeCAD.Qt.translate @@ -155,7 +155,7 @@ class IFC_MakeProject: def Activated(self): from importers import exportIFC # lazy loading from . import ifc_tools - from PySide import QtCore, QtGui + from PySide import QtGui doc = FreeCAD.ActiveDocument objs = FreeCADGui.Selection.getSelection() diff --git a/src/Mod/BIM/nativeifc/ifc_diff.py b/src/Mod/BIM/nativeifc/ifc_diff.py index 43cf4822be..4200903ead 100644 --- a/src/Mod/BIM/nativeifc/ifc_diff.py +++ b/src/Mod/BIM/nativeifc/ifc_diff.py @@ -23,12 +23,15 @@ """Diffing tool for NativeIFC project objects""" import difflib + +import ifcopenshell + import FreeCAD import FreeCADGui -import ifcopenshell -from . import ifc_tools import Arch_rc +from . import ifc_tools + translate = FreeCAD.Qt.translate diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 91001de2df..4f26ccd32d 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -22,9 +22,10 @@ import tempfile +import ifcopenshell + import FreeCAD import Draft -import ifcopenshell from importers import exportIFC from importers import exportIFCHelper diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index 4c01bf2501..5242f575ef 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -24,25 +24,24 @@ The only entry point in this module is the generate_geometry() function which is used by the execute() method of ifc_objects""" - +import multiprocessing import re -import FreeCAD -from FreeCAD import Base -import Part import ifcopenshell import ifcopenshell.util.element - -import multiprocessing - -import FreeCADGui - from pivy import coin from PySide import QtCore +import FreeCAD +import FreeCADGui +import Part + +from FreeCAD import Base + from . import ifc_tools from . import ifc_export + def generate_geometry(obj, cached=False): """Sets the geometry of the given object from a corresponding IFC element. This is the main function called by the execute method of FreeCAD document objects diff --git a/src/Mod/BIM/nativeifc/ifc_geometry.py b/src/Mod/BIM/nativeifc/ifc_geometry.py index 1cdda68be9..e3d6701c68 100644 --- a/src/Mod/BIM/nativeifc/ifc_geometry.py +++ b/src/Mod/BIM/nativeifc/ifc_geometry.py @@ -22,11 +22,11 @@ """This module contains geometry editing and geometry properties-related tools""" -import FreeCAD - import ifcopenshell import ifcopenshell.util.unit +import FreeCAD + from . import ifc_tools diff --git a/src/Mod/BIM/nativeifc/ifc_layers.py b/src/Mod/BIM/nativeifc/ifc_layers.py index f4fa9ab0dc..d5b5b61b1e 100644 --- a/src/Mod/BIM/nativeifc/ifc_layers.py +++ b/src/Mod/BIM/nativeifc/ifc_layers.py @@ -22,12 +22,12 @@ """This NativeIFC module deals with layers""" - import ifcopenshell import ifcopenshell.util.element from . import ifc_tools + def load_layers(obj): """Loads all the layers of an IFC file""" diff --git a/src/Mod/BIM/nativeifc/ifc_materials.py b/src/Mod/BIM/nativeifc/ifc_materials.py index e925116a26..4e0ad54d26 100644 --- a/src/Mod/BIM/nativeifc/ifc_materials.py +++ b/src/Mod/BIM/nativeifc/ifc_materials.py @@ -22,13 +22,14 @@ """This NativeIFC module deals with materials""" -import FreeCAD - import ifcopenshell import ifcopenshell.util.element +import FreeCAD + from . import ifc_tools + def create_material(element, parent, recursive=False): """Creates a material object in the given project or parent material""" diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index c3350dab3e..079574bec1 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -24,12 +24,15 @@ import FreeCAD import FreeCADGui + translate = FreeCAD.Qt.translate + # the property groups below should not be treated as psets NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "SectionPlane", "Axis", "PhysicalProperties", "BuildingPart", "IFC Attributes"] + class ifc_object: """Base class for all IFC-based objects""" diff --git a/src/Mod/BIM/nativeifc/ifc_observer.py b/src/Mod/BIM/nativeifc/ifc_observer.py index f650c91101..66097658ec 100644 --- a/src/Mod/BIM/nativeifc/ifc_observer.py +++ b/src/Mod/BIM/nativeifc/ifc_observer.py @@ -22,9 +22,9 @@ """Document observer to act on documents containing NativeIFC objects""" - import FreeCAD + params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/NativeIFC") diff --git a/src/Mod/BIM/nativeifc/ifc_openshell.py b/src/Mod/BIM/nativeifc/ifc_openshell.py index f38b866ee4..747dd3f01c 100644 --- a/src/Mod/BIM/nativeifc/ifc_openshell.py +++ b/src/Mod/BIM/nativeifc/ifc_openshell.py @@ -24,9 +24,10 @@ """Utilities to help people verify and update their version of ifcopenshell""" +from packaging.version import Version + import FreeCAD import FreeCADGui -from packaging.version import Version from addonmanager_utilities import create_pip_call translate = FreeCAD.Qt.translate @@ -139,7 +140,7 @@ class IFC_UpdateIOS: try: import ifcopenshell - version = ifcopenshell.version + version = ifcopenshell.version try: Version(version) except InvalidVersion: diff --git a/src/Mod/BIM/nativeifc/ifc_performance_test.py b/src/Mod/BIM/nativeifc/ifc_performance_test.py index 7fb7740cd1..8687751ba0 100644 --- a/src/Mod/BIM/nativeifc/ifc_performance_test.py +++ b/src/Mod/BIM/nativeifc/ifc_performance_test.py @@ -22,8 +22,10 @@ import os import time -import FreeCAD import unittest + +import FreeCAD + from . import ifc_import diff --git a/src/Mod/BIM/nativeifc/ifc_psets.py b/src/Mod/BIM/nativeifc/ifc_psets.py index bc4d993690..c6ebb74462 100644 --- a/src/Mod/BIM/nativeifc/ifc_psets.py +++ b/src/Mod/BIM/nativeifc/ifc_psets.py @@ -22,7 +22,6 @@ """This NativeIFC module deals with properties and property sets""" - import os import re diff --git a/src/Mod/BIM/nativeifc/ifc_selftest.py b/src/Mod/BIM/nativeifc/ifc_selftest.py index 25300dd909..fa016529ca 100644 --- a/src/Mod/BIM/nativeifc/ifc_selftest.py +++ b/src/Mod/BIM/nativeifc/ifc_selftest.py @@ -22,13 +22,18 @@ """Unit test for the Native IFC module""" +import difflib import os -import time import tempfile -import FreeCAD -import Draft -import Arch import unittest + +import ifcopenshell +from ifcopenshell.util import element + +import FreeCAD +import Arch +import Draft + from . import ifc_import from . import ifc_tools from . import ifc_geometry @@ -37,9 +42,7 @@ from . import ifc_layers from . import ifc_psets from . import ifc_objects from . import ifc_generator -import ifcopenshell -from ifcopenshell.util import element -import difflib + IFC_FILE_PATH = None # downloaded IFC file path FCSTD_FILE_PATH = None # saved FreeCAD file diff --git a/src/Mod/BIM/nativeifc/ifc_status.py b/src/Mod/BIM/nativeifc/ifc_status.py index a75375b509..1cf88936e8 100644 --- a/src/Mod/BIM/nativeifc/ifc_status.py +++ b/src/Mod/BIM/nativeifc/ifc_status.py @@ -23,13 +23,12 @@ """This contains nativeifc status widgets and functionality""" - -import os import csv +import os + import FreeCAD import FreeCADGui - translate = FreeCAD.Qt.translate params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/NativeIFC") text_on = translate("BIM", "Strict IFC mode is ON (all objects are IFC)") @@ -100,7 +99,7 @@ def on_add_property(): sel = FreeCADGui.Selection.getSelection() if not sel: return - from PySide import QtCore, QtGui # lazy loading + from PySide import QtGui # lazy loading from . import ifc_psets obj = sel[0] psets = list(set([obj.getGroupOfProperty(p) for p in obj.PropertiesList])) @@ -179,7 +178,6 @@ def on_add_pset(): sel = FreeCADGui.Selection.getSelection() if not sel: return - from PySide import QtCore, QtGui # lazy loading from . import ifc_psets obj = sel[0] mw = FreeCADGui.getMainWindow() @@ -273,7 +271,7 @@ def on_new(): def set_menu(locked=False): """Sets the File menu items""" - from PySide import QtCore, QtGui # lazy loading + from PySide import QtGui # lazy loading # switch Std_Save and IFC_Save mw = FreeCADGui.getMainWindow() @@ -452,7 +450,6 @@ def lock_document(): def find_toplevel(objs): """Finds the top-level objects from the list""" - import Draft # filter out any object that depend on another from the list nobjs = [] for obj in objs: @@ -474,6 +471,8 @@ def find_toplevel(objs): def filter_out(objs): """Filter out objects that should not be converted to IFC""" + import Draft + nobjs = [] for obj in objs: if obj.isDerivedFrom("Part::Feature"): diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 3330f6e007..2d12a29a07 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -23,9 +23,15 @@ """This is the main NativeIFC module""" import os + +from PySide import QtCore + import FreeCAD -import Draft import Arch +import ArchBuildingPart +import Draft + +from draftviewproviders import view_layer translate = FreeCAD.Qt.translate @@ -59,10 +65,6 @@ from . import ifc_status from . import ifc_export from . import ifc_psets -from draftviewproviders import view_layer -import ArchBuildingPart -from PySide import QtCore - SCALE = 1000.0 # IfcOpenShell works in meters, FreeCAD works in mm SHORT = False # If True, only Step ID attribute is created ROUND = 8 # rounding value for placements diff --git a/src/Mod/BIM/nativeifc/ifc_tree.py b/src/Mod/BIM/nativeifc/ifc_tree.py index 334e3e1931..8e7f4455e0 100644 --- a/src/Mod/BIM/nativeifc/ifc_tree.py +++ b/src/Mod/BIM/nativeifc/ifc_tree.py @@ -22,7 +22,6 @@ """This NativeIFC module handles the retrieval and display of geometry compositions of objects""" - import FreeCAD TAB = 2 @@ -80,7 +79,7 @@ def show_geometry_tree(element): import Arch_rc import FreeCADGui # lazy import from . import ifc_tools - from PySide import QtGui, QtWidgets + from PySide import QtWidgets if isinstance(element, FreeCAD.DocumentObject): element = ifc_tools.get_ifc_element(element) @@ -147,7 +146,7 @@ def show_properties(current, previous): import FreeCADGui from . import ifc_tools # lazy loading - from PySide import QtCore, QtGui, QtWidgets + from PySide import QtCore, QtWidgets ifcid = int(current.text(0).split("=", 1)[0].strip(" ").strip("#")) sel = FreeCADGui.Selection.getSelection() diff --git a/src/Mod/BIM/nativeifc/ifc_types.py b/src/Mod/BIM/nativeifc/ifc_types.py index 295d3cc8dd..5ec97cdf13 100644 --- a/src/Mod/BIM/nativeifc/ifc_types.py +++ b/src/Mod/BIM/nativeifc/ifc_types.py @@ -22,8 +22,8 @@ """Diffing tool for NativeIFC project objects""" - import FreeCAD + from . import ifc_tools translate = FreeCAD.Qt.translate diff --git a/src/Mod/BIM/nativeifc/ifc_viewproviders.py b/src/Mod/BIM/nativeifc/ifc_viewproviders.py index 13f0c6bd43..0ef818f3c5 100644 --- a/src/Mod/BIM/nativeifc/ifc_viewproviders.py +++ b/src/Mod/BIM/nativeifc/ifc_viewproviders.py @@ -86,7 +86,7 @@ class ifc_vp_object: from . import ifc_psets from . import ifc_materials from . import ifc_types - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': return @@ -419,7 +419,7 @@ class ifc_vp_document(ifc_vp_object): def setupContextMenu(self, vobj, menu): - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': return @@ -463,7 +463,7 @@ class ifc_vp_document(ifc_vp_object): def replace_file(self, obj, newfile): """Asks the user if the attached file path needs to be replaced""" - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import msg = "Replace the stored IFC file path in object " msg += self.Object.Label + " with the new one: " @@ -484,7 +484,7 @@ class ifc_vp_document(ifc_vp_object): return False def schema_warning(self): - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import msg = "Warning: This operation will change the whole IFC file contents " msg += "and will not give versionable results. It is best to not do " @@ -516,7 +516,7 @@ class ifc_vp_group: self.Object = vobj.Object def getIcon(self): - from PySide import QtCore, QtGui # lazy loading + from PySide import QtGui # lazy loading import Draft_rc import Arch_rc @@ -602,7 +602,7 @@ class ifc_vp_material: def setupContextMenu(self, vobj, menu): from . import ifc_tools # lazy import from . import ifc_psets - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': return @@ -660,7 +660,7 @@ def get_filepath(project): """Saves the associated IFC file to another file""" from . import ifc_tools # lazy import - from PySide import QtCore, QtGui # lazy import + from PySide import QtGui # lazy import sf = QtGui.QFileDialog.getSaveFileName( None,