FEM: vtk import, fix import of generic vtk files

This commit is contained in:
Bernd Hahnebach
2018-03-12 15:09:42 +01:00
parent 224c74e9a7
commit 06df53ef6e
2 changed files with 38 additions and 7 deletions

View File

@@ -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")

View File

@@ -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 = ''