FEM: analysis member, get rid of duplicate code in getting the analysis mesh

This commit is contained in:
Bernd Hahnebach
2019-03-04 08:30:30 +01:00
committed by wmayer
parent be1b665b78
commit a19d39d227
4 changed files with 52 additions and 29 deletions

View File

@@ -32,6 +32,8 @@ import subprocess
import os.path
import FreeCAD
if FreeCAD.GuiUp:
from PySide import QtGui
import femtools.femutils as femutils
import feminout.importCcxFrdResults as importCcxFrdResults
import feminout.importCcxDatResults as importCcxDatResults
@@ -151,7 +153,17 @@ class _Container(object):
def __init__(self, analysis):
self.analysis = analysis
self.mesh = None
# get mesh
mesh, message = femutils.get_mesh_to_solve(self.analysis)
if mesh is not None:
self.mesh = mesh
else:
if FreeCAD.GuiUp:
QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
raise Exception(message + '\n')
# get member
self.materials_linear = self.get_several_member('Fem::Material')
self.materials_nonlinear = self.get_several_member('Fem::MaterialMechanicalNonlinear')
self.fixed_constraints = self.get_several_member('Fem::ConstraintFixed')
@@ -170,13 +182,6 @@ class _Container(object):
self.contact_constraints = self.get_several_member('Fem::ConstraintContact')
self.transform_constraints = self.get_several_member('Fem::ConstraintTransform')
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemMeshObject") and not femutils.is_of_type(m, 'Fem::FemMeshResult'):
if not self.mesh:
self.mesh = m
else:
raise Exception('FEM: Multiple mesh in analysis not yet supported!')
def get_several_member(self, t):
return femutils.get_several_member(self.analysis, t)

View File

@@ -31,6 +31,8 @@ import subprocess
import os.path
import FreeCAD
if FreeCAD.GuiUp:
from PySide import QtGui
import femtools.femutils as femutils
import feminout.importZ88O2Results as importZ88O2Results
@@ -137,7 +139,17 @@ class _Container(object):
def __init__(self, analysis):
self.analysis = analysis
self.mesh = None
# get mesh
mesh, message = femutils.get_mesh_to_solve(self.analysis)
if mesh is not None:
self.mesh = mesh
else:
if FreeCAD.GuiUp:
QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
raise Exception(message + '\n')
# get member
self.materials_linear = self.get_several_member('Fem::Material')
self.fixed_constraints = self.get_several_member('Fem::ConstraintFixed')
self.force_constraints = self.get_several_member('Fem::ConstraintForce')
@@ -158,13 +170,6 @@ class _Container(object):
self.contact_constraints = []
self.transform_constraints = []
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemMeshObject") and not femutils.is_of_type(m, 'Fem::FemMeshResult'):
if not self.mesh:
self.mesh = m
else:
raise Exception('FEM: Multiple mesh in analysis not yet supported!')
def get_several_member(self, t):
return femutils.get_several_member(self.analysis, t)