From 55052cc9aadff40c769c7a8dc075ca0c336043bc Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Wed, 6 Dec 2017 23:46:37 +0100 Subject: [PATCH] FEM: package feminterface, move all import and export modules in new package feminterface --- src/Mod/Fem/App/CMakeLists.txt | 31 +++++++++-------- src/Mod/Fem/CMakeLists.txt | 33 +++++++++++-------- src/Mod/Fem/FemToolsCcx.py | 4 +-- src/Mod/Fem/Init.py | 20 +++++------ src/Mod/Fem/TestFem.py | 2 +- src/Mod/Fem/feminterface/__init__.py | 0 .../Fem/{ => feminterface}/convert2TetGen.py | 0 .../{ => feminterface}/importCcxDatResults.py | 0 .../{ => feminterface}/importCcxFrdResults.py | 2 +- .../{ => feminterface}/importFenicsMesh.py | 8 ++--- .../Fem/{ => feminterface}/importInpMesh.py | 2 +- .../Fem/{ => feminterface}/importToolsFem.py | 0 .../{ => feminterface}/importVTKResults.py | 2 +- .../Fem/{ => feminterface}/importZ88Mesh.py | 2 +- .../{ => feminterface}/importZ88O2Results.py | 6 ++-- .../Fem/{ => feminterface}/readFenicsXDMF.py | 0 .../Fem/{ => feminterface}/readFenicsXML.py | 0 .../Fem/{ => feminterface}/writeFenicsXDMF.py | 0 .../Fem/{ => feminterface}/writeFenicsXML.py | 0 src/Mod/Fem/femsolver/calculix/tasks.py | 4 +-- src/Mod/Fem/femsolver/z88/tasks.py | 2 +- src/Mod/Fem/femsolver/z88/writer.py | 2 +- 22 files changed, 66 insertions(+), 54 deletions(-) create mode 100644 src/Mod/Fem/feminterface/__init__.py rename src/Mod/Fem/{ => feminterface}/convert2TetGen.py (100%) rename src/Mod/Fem/{ => feminterface}/importCcxDatResults.py (100%) rename src/Mod/Fem/{ => feminterface}/importCcxFrdResults.py (99%) rename src/Mod/Fem/{ => feminterface}/importFenicsMesh.py (98%) rename src/Mod/Fem/{ => feminterface}/importInpMesh.py (99%) rename src/Mod/Fem/{ => feminterface}/importToolsFem.py (100%) rename src/Mod/Fem/{ => feminterface}/importVTKResults.py (99%) rename src/Mod/Fem/{ => feminterface}/importZ88Mesh.py (99%) rename src/Mod/Fem/{ => feminterface}/importZ88O2Results.py (97%) rename src/Mod/Fem/{ => feminterface}/readFenicsXDMF.py (100%) rename src/Mod/Fem/{ => feminterface}/readFenicsXML.py (100%) rename src/Mod/Fem/{ => feminterface}/writeFenicsXDMF.py (100%) rename src/Mod/Fem/{ => feminterface}/writeFenicsXML.py (100%) diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 58d23fda26..7186e3cb33 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -69,19 +69,6 @@ SET(Mod_SRCS SOURCE_GROUP("Module" FILES ${Mod_SRCS}) SET(FemScripts_SRCS - convert2TetGen.py - importCcxDatResults.py - importCcxFrdResults.py - readFenicsXML.py - writeFenicsXML.py - readFenicsXDMF.py - writeFenicsXDMF.py - importFenicsMesh.py - importInpMesh.py - importToolsFem.py - importVTKResults.py - importZ88Mesh.py - importZ88O2Results.py Init.py InitGui.py FemGmshTools.py @@ -118,6 +105,23 @@ SET(FemObjectsScripts_SRCS PyObjects/_FemMaterial.py ) +SET(FemInterfaces_SRCS + feminterface/__init__.py + feminterface/convert2TetGen.py + feminterface/importCcxDatResults.py + feminterface/importCcxFrdResults.py + feminterface/importFenicsMesh.py + feminterface/importInpMesh.py + feminterface/importToolsFem.py + feminterface/importVTKResults.py + feminterface/importZ88Mesh.py + feminterface/importZ88O2Results.py + feminterface/readFenicsXDMF.py + feminterface/readFenicsXML.py + feminterface/writeFenicsXDMF.py + feminterface/writeFenicsXML.py +) + SET(FemSolver_SRCS femsolver/__init__.py femsolver/solverbase.py @@ -384,6 +388,7 @@ fc_target_copy_resource(Fem Init.py ${FemScripts_SRCS} ${FemObjectsScripts_SRCS} + ${FemInterfaces_SRCS} ${FemGuiScripts_SRCS} ${FemTests_SRCS} ${FemTestsElmer_SRCS} diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 2ecababaf8..8c9680027d 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -17,19 +17,6 @@ endif(BUILD_GUI) # changes on the file list here needs to be made in App/CMakeLists.txt as well INSTALL( FILES - convert2TetGen.py - importCcxDatResults.py - importCcxFrdResults.py - readFenicsXML.py - writeFenicsXML.py - readFenicsXDMF.py - writeFenicsXDMF.py - importFenicsMesh.py - importInpMesh.py - importToolsFem.py - importVTKResults.py - importZ88Mesh.py - importZ88O2Results.py Init.py InitGui.py FemGmshTools.py @@ -70,6 +57,26 @@ INSTALL( Mod/Fem/PyObjects ) +INSTALL( + FILES + feminterface/__init__.py + feminterface/convert2TetGen.py + feminterface/importCcxDatResults.py + feminterface/importCcxFrdResults.py + feminterface/importFenicsMesh.py + feminterface/importInpMesh.py + feminterface/importToolsFem.py + feminterface/importVTKResults.py + feminterface/importZ88Mesh.py + feminterface/importZ88O2Results.py + feminterface/readFenicsXDMF.py + feminterface/readFenicsXML.py + feminterface/writeFenicsXDMF.py + feminterface/writeFenicsXML.py + DESTINATION + Mod/Fem/feminterface +) + INSTALL( FILES femsolver/__init__.py diff --git a/src/Mod/Fem/FemToolsCcx.py b/src/Mod/Fem/FemToolsCcx.py index 83688f08ff..c20ccaa97f 100644 --- a/src/Mod/Fem/FemToolsCcx.py +++ b/src/Mod/Fem/FemToolsCcx.py @@ -761,7 +761,7 @@ class FemToolsCcx(QtCore.QRunnable, QtCore.QObject): # @param self The python object self def load_results_ccxfrd(self): import os - import importCcxFrdResults + import feminterface.importCcxFrdResults as importCcxFrdResults frd_result_file = os.path.splitext(self.inp_file_name)[0] + '.frd' if os.path.isfile(frd_result_file): result_name_prefix = 'CalculiX_' + self.solver.AnalysisType + '_' @@ -779,7 +779,7 @@ class FemToolsCcx(QtCore.QRunnable, QtCore.QObject): # @param self The python object self def load_results_ccxdat(self): import os - import importCcxDatResults + import feminterface.importCcxDatResults as importCcxDatResults dat_result_file = os.path.splitext(self.inp_file_name)[0] + '.dat' if os.path.isfile(dat_result_file): mode_frequencies = importCcxDatResults.import_dat(dat_result_file, self.analysis) diff --git a/src/Mod/Fem/Init.py b/src/Mod/Fem/Init.py index 836c591c3c..0840c83555 100644 --- a/src/Mod/Fem/Init.py +++ b/src/Mod/Fem/Init.py @@ -27,19 +27,19 @@ import FreeCAD -FreeCAD.addExportType("TetGen file (*.poly)", "convert2TetGen") +FreeCAD.addExportType("TetGen file (*.poly)", "feminterface.convert2TetGen") FreeCAD.addImportType("FEM formats (*.unv *.med *.dat *.bdf)", "Fem") if("BUILD_FEM_VTK" in FreeCAD.__cmake__): FreeCAD.addImportType("FEM CFD Unstructure Mesh (*.vtk *.vtu)", "Fem") FreeCAD.addExportType("FEM CFD Unstructure Mesh (*.vtk *.vtu)", "Fem") - FreeCAD.addImportType("FEM results (*.vtk *.vtu)", "importVTKResults") - FreeCAD.addExportType("FEM CFD Result in VTK format (*.vtk *.vtu)", "importVTKResults") + FreeCAD.addImportType("FEM results (*.vtk *.vtu)", "feminterface.importVTKResults") + FreeCAD.addExportType("FEM CFD Result in VTK format (*.vtk *.vtu)", "feminterface.importVTKResults") FreeCAD.addExportType("FEM formats (*.unv *.med *.dat *.inp)", "Fem") -FreeCAD.addImportType("CalculiX result (*.frd)", "importCcxFrdResults") -FreeCAD.addImportType("Fenics mesh file (*.xml *.xdmf)", "importFenicsMesh") -FreeCAD.addExportType("Fenics mesh file (*.xml *.xdmf)", "importFenicsMesh") -FreeCAD.addImportType("Mesh from Calculix/Abaqus input file (*.inp)", "importInpMesh") -FreeCAD.addImportType("Z88 mesh (i1) file (*.txt)", "importZ88Mesh") -FreeCAD.addExportType("Z88 mesh (i1) file (*.txt)", "importZ88Mesh") -FreeCAD.addImportType("Z88 displacement (o2) result file (*.txt)", "importZ88O2Results") +FreeCAD.addImportType("CalculiX result (*.frd)", "feminterface.importCcxFrdResults") +FreeCAD.addImportType("Fenics mesh file (*.xml *.xdmf)", "feminterface.importFenicsMesh") +FreeCAD.addExportType("Fenics mesh file (*.xml *.xdmf)", "feminterface.importFenicsMesh") +FreeCAD.addImportType("Mesh from Calculix/Abaqus input file (*.inp)", "feminterface.importInpMesh") +FreeCAD.addImportType("Z88 mesh (i1) file (*.txt)", "feminterface.importZ88Mesh") +FreeCAD.addExportType("Z88 mesh (i1) file (*.txt)", "feminterface.importZ88Mesh") +FreeCAD.addImportType("Z88 displacement (o2) result file (*.txt)", "feminterface.importZ88O2Results") diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 5b39b0a725..9c29d26e41 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -168,7 +168,7 @@ class FemTest(unittest.TestCase): def test_read_frd_massflow_networkpressure(self): # read data from frd file frd_file = test_file_dir + 'Flow1D_thermomech.frd' - import importCcxFrdResults + import feminterface.importCcxFrdResults as importCcxFrdResults frd_content = importCcxFrdResults.readResult(frd_file) # do something with the read data diff --git a/src/Mod/Fem/feminterface/__init__.py b/src/Mod/Fem/feminterface/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Mod/Fem/convert2TetGen.py b/src/Mod/Fem/feminterface/convert2TetGen.py similarity index 100% rename from src/Mod/Fem/convert2TetGen.py rename to src/Mod/Fem/feminterface/convert2TetGen.py diff --git a/src/Mod/Fem/importCcxDatResults.py b/src/Mod/Fem/feminterface/importCcxDatResults.py similarity index 100% rename from src/Mod/Fem/importCcxDatResults.py rename to src/Mod/Fem/feminterface/importCcxDatResults.py diff --git a/src/Mod/Fem/importCcxFrdResults.py b/src/Mod/Fem/feminterface/importCcxFrdResults.py similarity index 99% rename from src/Mod/Fem/importCcxFrdResults.py rename to src/Mod/Fem/feminterface/importCcxFrdResults.py index f92668867c..996b829964 100644 --- a/src/Mod/Fem/importCcxFrdResults.py +++ b/src/Mod/Fem/feminterface/importCcxFrdResults.py @@ -61,7 +61,7 @@ def insert(filename, docname): ########## module specific methods ########## def importFrd(filename, analysis=None, result_name_prefix=None): - import importToolsFem + from . import importToolsFem import ObjectsFem if result_name_prefix is None: result_name_prefix = '' diff --git a/src/Mod/Fem/importFenicsMesh.py b/src/Mod/Fem/feminterface/importFenicsMesh.py similarity index 98% rename from src/Mod/Fem/importFenicsMesh.py rename to src/Mod/Fem/feminterface/importFenicsMesh.py index d04fd4f505..3fea6297e5 100644 --- a/src/Mod/Fem/importFenicsMesh.py +++ b/src/Mod/Fem/feminterface/importFenicsMesh.py @@ -33,12 +33,12 @@ from PySide import QtGui, QtCore import FreeCAD import FreeCADGui -import importToolsFem import os -import readFenicsXML -import writeFenicsXML -import writeFenicsXDMF +from . import importToolsFem +from . import readFenicsXML +from . import writeFenicsXML +from . import writeFenicsXDMF # Template copied from importZ88Mesh.py. Thanks Bernd! diff --git a/src/Mod/Fem/importInpMesh.py b/src/Mod/Fem/feminterface/importInpMesh.py similarity index 99% rename from src/Mod/Fem/importInpMesh.py rename to src/Mod/Fem/feminterface/importInpMesh.py index de0e6b94c7..21bb2113a8 100644 --- a/src/Mod/Fem/importInpMesh.py +++ b/src/Mod/Fem/feminterface/importInpMesh.py @@ -64,7 +64,7 @@ def import_inp(filename): "create imported objects in FreeCAD, currently only FemMesh" m = read_inp(filename) - import importToolsFem + from . import importToolsFem mesh = importToolsFem.make_femmesh(m) mesh_name = os.path.splitext(os.path.basename(filename))[0] mesh_object = FreeCAD.ActiveDocument.addObject('Fem::FemMeshObject', mesh_name) diff --git a/src/Mod/Fem/importToolsFem.py b/src/Mod/Fem/feminterface/importToolsFem.py similarity index 100% rename from src/Mod/Fem/importToolsFem.py rename to src/Mod/Fem/feminterface/importToolsFem.py diff --git a/src/Mod/Fem/importVTKResults.py b/src/Mod/Fem/feminterface/importVTKResults.py similarity index 99% rename from src/Mod/Fem/importVTKResults.py rename to src/Mod/Fem/feminterface/importVTKResults.py index 0ce09319b0..c2967788db 100644 --- a/src/Mod/Fem/importVTKResults.py +++ b/src/Mod/Fem/feminterface/importVTKResults.py @@ -87,7 +87,7 @@ def importVTK(filename, analysis=None, result_name_prefix=None): # workaround for the DisplacementLengths (They should have been calculated by Fem.readResult) if not result_obj.DisplacementLengths: - import importToolsFem + from . import importToolsFem result_obj.DisplacementLengths = importToolsFem.calculate_disp_abs(result_obj.DisplacementVectors) if analysis: diff --git a/src/Mod/Fem/importZ88Mesh.py b/src/Mod/Fem/feminterface/importZ88Mesh.py similarity index 99% rename from src/Mod/Fem/importZ88Mesh.py rename to src/Mod/Fem/feminterface/importZ88Mesh.py index bb94278c1e..63d6f4641d 100644 --- a/src/Mod/Fem/importZ88Mesh.py +++ b/src/Mod/Fem/feminterface/importZ88Mesh.py @@ -85,7 +85,7 @@ def import_z88_mesh(filename, analysis=None): ''' mesh_data = read_z88_mesh(filename) mesh_name = os.path.basename(os.path.splitext(filename)[0]) - import importToolsFem + from . import importToolsFem femmesh = importToolsFem.make_femmesh(mesh_data) if femmesh: mesh_object = FreeCAD.ActiveDocument.addObject('Fem::FemMeshObject', mesh_name) diff --git a/src/Mod/Fem/importZ88O2Results.py b/src/Mod/Fem/feminterface/importZ88O2Results.py similarity index 97% rename from src/Mod/Fem/importZ88O2Results.py rename to src/Mod/Fem/feminterface/importZ88O2Results.py index 11b1a00518..203910399c 100644 --- a/src/Mod/Fem/importZ88O2Results.py +++ b/src/Mod/Fem/feminterface/importZ88O2Results.py @@ -64,14 +64,14 @@ def insert(filename, docname): def import_z88_disp(filename, analysis=None, result_name_prefix=None): '''insert a FreeCAD FEM mechanical result object in the ActiveDocument pure usage: - import importZ88O2Results + import feminterfaces.importZ88O2Results as importZ88O2Results disp_file = '/pathtofile/z88o2.txt' importZ88O2Results.import_z88_disp(disp_file) the z888i1.txt FEMMesh file needs to be in the same directory as z88o2.txt (ahh, make a new document first ;-)) ''' - import importZ88Mesh - import importToolsFem + from . import importZ88Mesh + from . import importToolsFem import ObjectsFem if result_name_prefix is None: result_name_prefix = '' diff --git a/src/Mod/Fem/readFenicsXDMF.py b/src/Mod/Fem/feminterface/readFenicsXDMF.py similarity index 100% rename from src/Mod/Fem/readFenicsXDMF.py rename to src/Mod/Fem/feminterface/readFenicsXDMF.py diff --git a/src/Mod/Fem/readFenicsXML.py b/src/Mod/Fem/feminterface/readFenicsXML.py similarity index 100% rename from src/Mod/Fem/readFenicsXML.py rename to src/Mod/Fem/feminterface/readFenicsXML.py diff --git a/src/Mod/Fem/writeFenicsXDMF.py b/src/Mod/Fem/feminterface/writeFenicsXDMF.py similarity index 100% rename from src/Mod/Fem/writeFenicsXDMF.py rename to src/Mod/Fem/feminterface/writeFenicsXDMF.py diff --git a/src/Mod/Fem/writeFenicsXML.py b/src/Mod/Fem/feminterface/writeFenicsXML.py similarity index 100% rename from src/Mod/Fem/writeFenicsXML.py rename to src/Mod/Fem/feminterface/writeFenicsXML.py diff --git a/src/Mod/Fem/femsolver/calculix/tasks.py b/src/Mod/Fem/femsolver/calculix/tasks.py index 8456f9dd78..95acdcbdc7 100644 --- a/src/Mod/Fem/femsolver/calculix/tasks.py +++ b/src/Mod/Fem/femsolver/calculix/tasks.py @@ -33,8 +33,8 @@ import os.path import FreeCAD as App import FemUtils -import importCcxFrdResults -import importCcxDatResults +import feminterface.importCcxFrdResults as importCcxFrdResults +import feminterface.importCcxDatResults as importCcxDatResults from .. import run from .. import settings diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index 84b075ef70..d4cec31727 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -32,7 +32,7 @@ import os.path import FreeCAD as App import FemUtils -import importZ88O2Results +import feminterface.importZ88O2Results as importZ88O2Results from .. import run from .. import settings diff --git a/src/Mod/Fem/femsolver/z88/writer.py b/src/Mod/Fem/femsolver/z88/writer.py index ca7e15910d..eb3dc5a2ab 100644 --- a/src/Mod/Fem/femsolver/z88/writer.py +++ b/src/Mod/Fem/femsolver/z88/writer.py @@ -29,7 +29,7 @@ __url__ = "http://www.freecadweb.org" import FreeCAD import FemMeshTools -import importZ88Mesh +import feminterface.importZ88Mesh as importZ88Mesh import FemInputWriter