diff --git a/src/Mod/Fem/Init.py b/src/Mod/Fem/Init.py index 112d02ee40..e84bcf6609 100644 --- a/src/Mod/Fem/Init.py +++ b/src/Mod/Fem/Init.py @@ -45,8 +45,5 @@ FreeCAD.addExportType("FEM mesh Z88 (*i1.txt)", "feminout.importZ88Mesh") FreeCAD.addImportType("FEM result Z88 displacements (*o2.txt)", "feminout.importZ88O2Results") if("BUILD_FEM_VTK" in FreeCAD.__cmake__): - FreeCAD.addImportType("FEM mesh VTK Unstructure format (*.vtk *.vtu)", "Fem") - FreeCAD.addExportType("FEM mesh VTK Unstructure format (*.vtk *.vtu)", "Fem") - - FreeCAD.addImportType("FEM result VTK Unstructure format (*.vtk *.vtu)", "feminout.importVTKResults") - FreeCAD.addExportType("FEM result VTK Unstructure format (*.vtk *.vtu)", "feminout.importVTKResults") + FreeCAD.addImportType("FEM result VTK (*.vtk *.vtu)", "feminout.importVTKResults") + FreeCAD.addExportType("FEM result VTK (*.vtk *.vtu)", "feminout.importVTKResults") diff --git a/src/Mod/Fem/feminout/importVTKResults.py b/src/Mod/Fem/feminout/importVTKResults.py index 2e525a773e..65747aa151 100644 --- a/src/Mod/Fem/feminout/importVTKResults.py +++ b/src/Mod/Fem/feminout/importVTKResults.py @@ -57,7 +57,7 @@ def insert(filename, docname): except NameError: doc = FreeCAD.newDocument(docname) FreeCAD.ActiveDocument = doc - importVTK(filename) + importVtk(filename) def export(objectslist, filename): @@ -73,7 +73,41 @@ def export(objectslist, filename): ########## module specific methods ########## -def importVTK(filename, analysis=None, result_name_prefix=None): +def importVtk(filename, object_name=None, object_type=None): + if not object_type: + vtkinout_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/InOutVtk") + object_type = vtkinout_prefs.GetInt("ImportObject", 0) + if not object_name: + object_name = os.path.splitext(os.path.basename(filename))[0] + if object_type == 0: + # vtk result object + importVtkVtkResult(filename, object_name) + elif object_type == 1: + # FEM mesh object + importVtkFemMesh(filename, object_name) + elif object_type == 2: + # FreeCAD result object + importVtkFCResult(filename, object_name) + else: + FreeCAD.Console.PrintError('Error, wrong parameter in VTK import pref: {}\n'.format(object_type)) + + +def importVtkVtkResult(filename, resultname): + vtk_result_obj = FreeCAD.ActiveDocument.addObject("Fem::FemPostPipeline", resultname) + vtk_result_obj.read(filename) + vtk_result_obj.touch() + FreeCAD.ActiveDocument.recompute() + + +def importVtkFemMesh(filename, meshname): + meshobj = FreeCAD.ActiveDocument.addObject("Fem::FemMeshObject", meshname) + meshobj.FemMesh = Fem.read(filename) + meshobj.touch() + FreeCAD.ActiveDocument.recompute() + + +def importVtkFCResult(filename, resultname, analysis=None, result_name_prefix=None): + # for import restrictions see https://forum.freecadweb.org/viewtopic.php?f=18&t=22576&start=20#p179862 import ObjectsFem if result_name_prefix is None: result_name_prefix = ''