FEM: vtk result file reading, activate import in python vtk import module

This commit is contained in:
Bernd Hahnebach 2017-02-16 07:54:26 +01:00
parent 1c18867d1e
commit ea1829c9fa
2 changed files with 29 additions and 6 deletions

View File

@ -32,7 +32,7 @@ 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 *.vtp *.vts *.vtr *.vtu *.vti)", "importVTKResults") # not implemented yet
FreeCAD.addImportType("FEM results (*.vtk *.vtu)", "importVTKResults")
FreeCAD.addExportType("FEM CFD Result in VTK format (*.vtk *.vtu)", "importVTKResults")
FreeCAD.addExportType("FEM formats (*.unv *.med *.dat *.inp)", "Fem")

View File

@ -23,7 +23,7 @@
# ***************************************************************************/
__title__ = "FreeCAD Result import and export VTK file library"
__author__ = "Qingfeng Xia"
__author__ = "Qingfeng Xia, Bernd Hahnebach"
__url__ = "http://www.freecadweb.org"
## @package importVTKResults
@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org"
import os
import FreeCAD
import Fem
if open.__module__ == '__builtin__':
@ -44,7 +45,7 @@ def insert(filename, docname):
except NameError:
doc = FreeCAD.newDocument(docname)
FreeCAD.ActiveDocument = doc
importFemResult(filename)
importVTK(filename)
def open(filename):
@ -53,8 +54,31 @@ def open(filename):
insert(filename, docname)
def importFemResult(filename):
FreeCAD.Console.PrintError("FemResult import is not implemented, actually not necessary\n")
def importVTK(filename, analysis=None, result_name_prefix=None):
if result_name_prefix is None:
result_name_prefix = ''
if analysis is None:
analysis_name = os.path.splitext(os.path.basename(filename))[0]
import FemAnalysis
analysis_object = FemAnalysis.makeFemAnalysis('Analysis')
analysis_object.Label = analysis_name
else:
analysis_object = analysis
# if properties can be added in FemVTKTools importCfdResult(), this file can be used for CFD workbench
results_name = result_name_prefix + 'results'
result_obj = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name)
Fem.readResult(filename, result_obj.Name) # readResult always creates a new femmesh named ResultMesh
analysis_object.Member = analysis_object.Member + [result_obj]
# FIXME move the ResultMesh in the analysis
filenamebase = '.'.join(filename.split('.')[:-1]) # pattern: filebase_timestamp.vtk
ts = filenamebase.split('_')[-1]
try:
time_step = float(ts)
except:
time_step = 0.0
# Stats has been setup in C++ function FemVTKTools importCfdResult()
def export(objectslist, filename):
@ -66,5 +90,4 @@ def export(objectslist, filename):
if not obj.isDerivedFrom("Fem::FemResultObject"):
FreeCAD.Console.PrintError("object selcted is not FemResultObject.\n")
return
import Fem
Fem.writeResult(filename, obj)