inherit FemAnalysis from DocumentObjectGroup and remove Member property

This commit is contained in:
wmayer
2017-10-11 22:04:07 +02:00
parent 8f8f890259
commit ce6809415b
35 changed files with 112 additions and 142 deletions

View File

@@ -35,13 +35,12 @@
using namespace Fem;
using namespace App;
PROPERTY_SOURCE(Fem::FemAnalysis, App::DocumentObject)
PROPERTY_SOURCE(Fem::FemAnalysis, App::DocumentObjectGroup)
FemAnalysis::FemAnalysis()
{
Base::Uuid id;
ADD_PROPERTY_TYPE(Member,(0), "Analysis member",Prop_None,"All objects belonging to the Analysis");
ADD_PROPERTY_TYPE(Uid,(id),0,App::Prop_None,"UUID of the Analysis");
}
@@ -56,16 +55,12 @@ short FemAnalysis::mustExecute(void) const
PyObject *FemAnalysis::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new DocumentObjectPy(this),true);
}
return Py::new_reference_to(PythonObject);
return App::DocumentObjectGroup::getPyObject();
}
void FemAnalysis::onChanged(const Property* prop)
{
App::DocumentObject::onChanged(prop);
App::DocumentObjectGroup::onChanged(prop);
}

View File

@@ -25,7 +25,7 @@
#define Fem_FemAnalysis_H
#include <App/DocumentObject.h>
#include <App/DocumentObjectGroup.h>
#include <App/PropertyLinks.h>
#include <App/FeaturePython.h>
@@ -34,7 +34,7 @@
namespace Fem
{
class AppFemExport FemAnalysis : public App::DocumentObject
class AppFemExport FemAnalysis : public App::DocumentObjectGroup
{
PROPERTY_HEADER(Fem::FemAnalysis);
@@ -53,8 +53,6 @@ public:
virtual short mustExecute(void) const;
virtual PyObject *getPyObject(void);
/// Member objects of the Analysis
App::PropertyLinkList Member;
/// unique identifier of the Analysis
App::PropertyUUID Uid;

View File

@@ -451,7 +451,7 @@ App::DocumentObject* getObjectByType(const Base::Type type)
}
if(obj->getTypeId() == FemAnalysis::getClassTypeId())
{
std::vector<App::DocumentObject*> fem = (static_cast<FemAnalysis*>(obj))->Member.getValues();
std::vector<App::DocumentObject*> fem = (static_cast<FemAnalysis*>(obj))->Group.getValues();
for (std::vector<App::DocumentObject*>::iterator it = fem.begin(); it != fem.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(type))
return static_cast<App::DocumentObject*>(*it); // return the first of that type
@@ -472,10 +472,8 @@ App::DocumentObject* createObjectByType(const Base::Type type)
if(obj->getTypeId() == FemAnalysis::getClassTypeId())
{
std::vector<App::DocumentObject*> fem = (static_cast<FemAnalysis*>(obj))->Member.getValues();
App::DocumentObject* newobj = pcDoc->addObject(type.getName());
fem.push_back(newobj); // FemAnalysis is not a DocumentGroup derived class but DocumentObject
(static_cast<FemAnalysis*>(obj))->Member.setValues(fem);
static_cast<FemAnalysis*>(obj)->addObject(newobj);
return newobj;
}
else

View File

@@ -1049,7 +1049,7 @@ def get_analysis_group_elements(aAnalysis, aPart):
'''
group_elements = {} # { name : [element, element, ... , element]}
empty_references = []
for m in aAnalysis.Member:
for m in aAnalysis.Group:
if hasattr(m, "References"):
if m.References:
grp_ele = get_reference_group_elements(m, aPart)
@@ -1141,7 +1141,7 @@ def get_anlysis_empty_references_group_elements(group_elements, aAnalysis, aShap
material_shape_type = ''
missed_material_refshapes = []
empty_reference_material = None
for m in aAnalysis.Member:
for m in aAnalysis.Group:
if m.isDerivedFrom("App::MaterialObjectPython"):
if hasattr(m, "References") and not m.References:
if not empty_reference_material:

View File

@@ -33,7 +33,7 @@ import FreeCAD
## Removes all result objects from an analysis group
# @param analysis
def purge_results(analysis):
for m in analysis.Member:
for m in analysis.Group:
if (m.isDerivedFrom('Fem::FemResultObject')):
if m.Mesh and hasattr(m.Mesh, "Proxy") and m.Mesh.Proxy.Type == "FemMeshResult":
analysis.Document.removeObject(m.Mesh.Name)

View File

@@ -62,7 +62,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
## Removes all result objects
# @param self The python object self
def purge_results(self):
for m in self.analysis.Member:
for m in self.analysis.Group:
if (m.isDerivedFrom('Fem::FemResultObject')):
if m.Mesh and hasattr(m.Mesh, "Proxy") and m.Mesh.Proxy.Type == "FemMeshResult":
self.analysis.Document.removeObject(m.Mesh.Name)
@@ -165,7 +165,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
self.transform_constraints = []
found_solver_for_use = False
for m in self.analysis.Member:
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemSolverObjectPython"):
# for some methods no solver is needed (purge_results) --> solver could be none
# analysis has one solver and no solver was set --> use the one solver

View File

@@ -290,7 +290,7 @@ class FemToolsCcx(FemTools.FemTools):
if os.path.isfile(frd_result_file):
result_name_prefix = 'CalculiX_' + self.solver.AnalysisType + '_'
importCcxFrdResults.importFrd(frd_result_file, self.analysis, result_name_prefix)
for m in self.analysis.Member:
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemResultObject"):
self.results_present = True
break
@@ -311,7 +311,7 @@ class FemToolsCcx(FemTools.FemTools):
raise Exception('FEM: No .dat results found at {}!'.format(dat_result_file))
if mode_frequencies:
# print(mode_frequencies)
for m in self.analysis.Member:
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemResultObject") and m.Eigenmode > 0:
for mf in mode_frequencies:
if m.Eigenmode == mf['eigenmode']:

View File

@@ -196,7 +196,7 @@ class FemToolsZ88(FemTools.FemTools):
if os.path.isfile(disp_result_file):
result_name_prefix = 'Z88_' + self.solver.AnalysisType + '_'
importZ88O2Results.import_z88_disp(disp_result_file, self.analysis, result_name_prefix)
for m in self.analysis.Member:
for m in self.analysis.Group:
if m.isDerivedFrom("Fem::FemResultObject"):
self.results_present = True
else:

View File

@@ -147,7 +147,7 @@ void CmdFemCreateAnalysis::activated(int)
doCommand(Doc,"App.activeDocument().addObject('Fem::FemAnalysis','%s')",AnalysisName.c_str());
doCommand(Doc,"App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','%s')",MeshName.c_str());
doCommand(Doc,"App.activeDocument().ActiveObject.Shape = App.activeDocument().%s",base->getNameInDocument());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s",AnalysisName.c_str(),MeshName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",AnalysisName.c_str(),MeshName.c_str());
addModule(Gui,"FemGui");
doCommand(Gui,"FemGui.setActiveAnalysis(App.activeDocument().%s)",AnalysisName.c_str());
commitCommand();
@@ -207,7 +207,7 @@ void CmdFemAddPart::activated(int)
doCommand(Doc,"App.activeDocument().addObject('Fem::FemAnalysis','%s')",AnalysisName.c_str());
doCommand(Doc,"App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','%s')",MeshName.c_str());
doCommand(Doc,"App.activeDocument().ActiveObject.Shape = App.activeDocument().%s",base->getNameInDocument());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s",AnalysisName.c_str(),MeshName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",AnalysisName.c_str(),MeshName.c_str());
addModule(Gui,"FemGui");
doCommand(Gui,"FemGui.setActiveAnalysis(App.activeDocument().%s)",AnalysisName.c_str());
commitCommand();
@@ -256,7 +256,7 @@ void CmdFemCreateSolver::activated(int)
openCommand("Create solver for FEM or CFD analysis");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::FemSolverObject\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
updateActive();
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
@@ -295,7 +295,7 @@ void CmdFemConstraintBearing::activated(int)
openCommand("Make FEM constraint for bearing");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintBearing\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -337,7 +337,7 @@ void CmdFemConstraintFixed::activated(int)
openCommand("Make FEM constraint fixed geometry");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFixed\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -379,7 +379,7 @@ void CmdFemConstraintPlaneRotation::activated(int)
openCommand("Make FEM constraint Plane Rotation face");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintPlaneRotation\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -422,8 +422,8 @@ void CmdFemConstraintContact::activated(int)
doCommand(Doc,"App.activeDocument().%s.Slope = 1000000.00",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.Friction = 0.0",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -467,8 +467,8 @@ void CmdFemConstraintTransform::activated(int)
doCommand(Doc,"App.activeDocument().%s.Y_rot = 0.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Z_rot = 0.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -510,8 +510,8 @@ void CmdFemConstraintHeatflux::activated(int)
doCommand(Doc,"App.activeDocument().%s.AmbientTemp = 300.0",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.FilmCoef = 10.0",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts
@@ -554,7 +554,7 @@ void CmdFemConstraintForce::activated(int)
doCommand(Doc,"App.activeDocument().%s.Force = 1.0",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.Reversed = False",FeatName.c_str()); //OvG: set default to False
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -599,8 +599,8 @@ void CmdFemConstraintFluidBoundary::activated(int)
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFluidBoundary\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
//BoundaryValue is already the default value, zero is acceptable
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
updateActive();
@@ -644,8 +644,8 @@ void CmdFemConstraintPressure::activated(int)
doCommand(Doc,"App.activeDocument().%s.Pressure = 1000.0",FeatName.c_str()); //OvG: set default not equal to 0
doCommand(Doc,"App.activeDocument().%s.Reversed = False",FeatName.c_str()); //OvG: set default to False
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -686,7 +686,7 @@ void CmdFemConstraintGear::activated(int)
openCommand("Make FEM constraint for gear");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintGear\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Diameter = 100.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -732,7 +732,7 @@ void CmdFemConstraintPulley::activated(int)
doCommand(Doc,"App.activeDocument().%s.CenterDistance = 500.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Force = 100.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.TensionForce = 100.0",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -773,8 +773,8 @@ void CmdFemConstraintDisplacement::activated(int)
openCommand("Make FEM constraint displacement on face");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintDisplacement\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
@@ -816,8 +816,8 @@ void CmdFemConstraintTemperature::activated(int)
openCommand("Make FEM constraint temperature on face");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintTemperature\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts
@@ -859,8 +859,8 @@ void CmdFemConstraintInitialTemperature::activated(int)
openCommand("Make FEM constraint initial temperature on body");
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintInitialTemperature\",\"%s\")",FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",
Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"App.activeDocument().%s.addObject(App.activeDocument().%s)",
Analysis->getNameInDocument(),FeatName.c_str());
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts
@@ -943,7 +943,7 @@ void DefineNodesCallback(void * ud, SoEventCallback * n)
Gui::Command::openCommand("Place robot");
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject('Fem::FemSetNodesObject','NodeSet')");
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.ActiveObject.Nodes = %s",set.str().c_str());
Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().NodeSet]",Analysis->getNameInDocument(),Analysis->getNameInDocument());
Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.addObject(App.activeDocument().NodeSet)",Analysis->getNameInDocument());
////Gui::Command::updateActive();
Gui::Command::commitCommand();

View File

@@ -188,7 +188,7 @@ TaskFemConstraintFluidBoundary::TaskFemConstraintFluidBoundary(ViewProviderFemCo
Fem::FemMeshObject* pcMesh = NULL;
if (pcAnalysis) {
std::vector<App::DocumentObject*> fem = pcAnalysis->Member.getValues();
std::vector<App::DocumentObject*> fem = pcAnalysis->Group.getValues();
for (std::vector<App::DocumentObject*>::iterator it = fem.begin(); it != fem.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(Fem::FemMeshObject::getClassTypeId()))
pcMesh = static_cast<Fem::FemMeshObject*>(*it);
@@ -221,7 +221,7 @@ TaskFemConstraintFluidBoundary::TaskFemConstraintFluidBoundary(ViewProviderFemCo
pcSolver = NULL; // this is an private object of type Fem::FemSolverObject*
if (pcAnalysis) {
std::vector<App::DocumentObject*> fem = pcAnalysis->Member.getValues();
std::vector<App::DocumentObject*> fem = pcAnalysis->Group.getValues();
for (std::vector<App::DocumentObject*>::iterator it = fem.begin(); it != fem.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(Fem::FemSolverObject::getClassTypeId()))
pcSolver = static_cast<Fem::FemSolverObject*>(*it);

View File

@@ -440,8 +440,8 @@ std::string TaskFemConstraintTransform::getSurfaceReferences(std::string showCon
{
return "for obj in FreeCAD.ActiveDocument.Objects:\n\
if obj.isDerivedFrom(\"Fem::FemAnalysisPython\"):\n\
if FreeCAD.ActiveDocument."+showConstr+" in obj.Member:\n\
members = obj.Member\n\
if FreeCAD.ActiveDocument."+showConstr+" in obj.Group:\n\
members = obj.Group\n\
A = []\n\
i = 0\n\
ss = []\n\

View File

@@ -52,7 +52,7 @@ using namespace FemGui;
/* TRANSLATOR FemGui::ViewProviderFemAnalysis */
PROPERTY_SOURCE(FemGui::ViewProviderFemAnalysis, Gui::ViewProviderDocumentObject)
PROPERTY_SOURCE(FemGui::ViewProviderFemAnalysis, Gui::ViewProviderDocumentObjectGroup)
ViewProviderFemAnalysis::ViewProviderFemAnalysis()
@@ -75,7 +75,7 @@ bool ViewProviderFemAnalysis::doubleClicked(void)
std::vector<App::DocumentObject*> ViewProviderFemAnalysis::claimChildren(void)const
{
return static_cast<Fem::FemAnalysis*>(getObject())->Member.getValues();
return Gui::ViewProviderDocumentObjectGroup::claimChildren();
}
bool ViewProviderFemAnalysis::canDelete(App::DocumentObject* obj) const
@@ -91,22 +91,12 @@ std::vector<std::string> ViewProviderFemAnalysis::getDisplayModes(void) const
void ViewProviderFemAnalysis::hide(void)
{
Gui::ViewProviderDocumentObject::hide();
std::vector<App::DocumentObject*> temp(static_cast<Fem::FemAnalysis*>
(getObject())->Member.getValues());
for (auto it : temp) {
Gui::Application::Instance->hideViewProvider(it);
}
Gui::ViewProviderDocumentObjectGroup::hide();
}
void ViewProviderFemAnalysis::show(void)
{
Gui::ViewProviderDocumentObject::show();
std::vector<App::DocumentObject*> temp(static_cast<Fem::FemAnalysis*>
(getObject())->Member.getValues());
for (auto it : temp) {
Gui::Application::Instance->showViewProvider(it);
}
Gui::ViewProviderDocumentObjectGroup::show();
}
void ViewProviderFemAnalysis::setupContextMenu(QMenu* menu, QObject* , const char* )
@@ -150,7 +140,7 @@ bool ViewProviderFemAnalysis::setEdit(int ModNum)
return false;
}
else {
return Gui::ViewProviderDocumentObject::setEdit(ModNum);
return Gui::ViewProviderDocumentObjectGroup::setEdit(ModNum);
}
}
@@ -161,7 +151,7 @@ void ViewProviderFemAnalysis::unsetEdit(int ModNum)
Gui::Control().closeDialog();
}
else {
Gui::ViewProviderDocumentObject::unsetEdit(ModNum);
Gui::ViewProviderDocumentObjectGroup::unsetEdit(ModNum);
}
}
@@ -214,15 +204,7 @@ bool ViewProviderFemAnalysis::canDragObject(App::DocumentObject* obj) const
void ViewProviderFemAnalysis::dragObject(App::DocumentObject* obj)
{
Fem::FemAnalysis* analyze = static_cast<Fem::FemAnalysis*>(getObject());
std::vector<App::DocumentObject*> fem = analyze->Member.getValues();
for (std::vector<App::DocumentObject*>::iterator it = fem.begin(); it != fem.end(); ++it) {
if (*it == obj) {
fem.erase(it);
analyze->Member.setValues(fem);
break;
}
}
ViewProviderDocumentObjectGroup::dragObject(obj);
}
bool ViewProviderFemAnalysis::canDropObjects() const
@@ -237,10 +219,7 @@ bool ViewProviderFemAnalysis::canDropObject(App::DocumentObject* obj) const
void ViewProviderFemAnalysis::dropObject(App::DocumentObject* obj)
{
Fem::FemAnalysis* analyze = static_cast<Fem::FemAnalysis*>(getObject());
std::vector<App::DocumentObject*> fem = analyze->Member.getValues();
fem.push_back(obj);
analyze->Member.setValues(fem);
ViewProviderDocumentObjectGroup::dropObject(obj);
}
// Python feature -----------------------------------------------------------------------

View File

@@ -24,14 +24,14 @@
#ifndef FEM_ViewProviderAnalysis_H
#define FEM_ViewProviderAnalysis_H
#include <Gui/ViewProviderDocumentObject.h>
#include <Gui/ViewProviderDocumentObjectGroup.h>
#include <Gui/ViewProviderPythonFeature.h>
#include <QCoreApplication>
namespace FemGui
{
class FemGuiExport ViewProviderFemAnalysis : public Gui::ViewProviderDocumentObject
class FemGuiExport ViewProviderFemAnalysis : public Gui::ViewProviderDocumentObjectGroup
{
Q_DECLARE_TR_FUNCTIONS(FemGui::ViewProviderFemAnalysis)
PROPERTY_HEADER(FemGui::ViewProviderAnalysis);

View File

@@ -78,7 +78,7 @@ class FemCommands(object):
def results_present(self):
results = False
analysis_members = FemGui.getActiveAnalysis().Member
analysis_members = FemGui.getActiveAnalysis().Group
for o in analysis_members:
if o.isDerivedFrom('Fem::FemResultObject'):
results = True
@@ -88,7 +88,7 @@ class FemCommands(object):
result_is_in_active_analysis = False
sel = FreeCADGui.Selection.getSelection()
if len(sel) == 1 and sel[0].isDerivedFrom("Fem::FemResultObject"):
for o in FemGui.getActiveAnalysis().Member:
for o in FemGui.getActiveAnalysis().Group:
if o == sel[0]:
result_is_in_active_analysis = True
break
@@ -164,7 +164,7 @@ class FemCommands(object):
def analysis_has_solver(self):
solver = False
analysis_members = FemGui.getActiveAnalysis().Member
analysis_members = FemGui.getActiveAnalysis().Group
for o in analysis_members:
if o.isDerivedFrom("Fem::FemSolverObjectPython"):
solver = True
@@ -175,7 +175,7 @@ class FemCommands(object):
def hide_meshes_show_parts_constraints(self):
if FreeCAD.GuiUp:
for acnstrmesh in FemGui.getActiveAnalysis().Member:
for acnstrmesh in FemGui.getActiveAnalysis().Group:
if "Constraint" in acnstrmesh.TypeId:
acnstrmesh.ViewObject.Visibility = True
if "Mesh" in acnstrmesh.TypeId:

View File

@@ -50,7 +50,7 @@ class _CommandFemAnalysis(FemCommands):
FreeCADGui.doCommand("ObjectsFem.makeAnalysis(FreeCAD.ActiveDocument, 'Analysis')")
FreeCADGui.doCommand("FemGui.setActiveAnalysis(FreeCAD.ActiveDocument.ActiveObject)")
FreeCADGui.doCommand("ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument, 'CalculiX')")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FreeCAD.ActiveDocument.ActiveObject]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(FreeCAD.ActiveDocument.ActiveObject)")
FreeCADGui.addCommand('FEM_Analysis', _CommandFemAnalysis())

View File

@@ -46,7 +46,7 @@ class _CommandFemConstraintSelfWeight(FemCommands):
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create FemConstraintSelfWeight")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeConstraintSelfWeight(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeConstraintSelfWeight(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_ConstraintSelfWeight', _CommandFemConstraintSelfWeight())

View File

@@ -47,7 +47,7 @@ class _CommandFemElementFluid1D(FemCommands):
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create FemElementFluid1D")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementFluid1D(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeElementFluid1D(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_ElementFluid1D', _CommandFemElementFluid1D())

View File

@@ -46,7 +46,7 @@ class _CommandFemElementGeometry1D(FemCommands):
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create FemElementGeometry1D")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry1D(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeElementGeometry1D(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_ElementGeometry1D', _CommandFemElementGeometry1D())

View File

@@ -46,7 +46,7 @@ class _CommandFemElementGeometry2D(FemCommands):
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create FemElementGeometry2D")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeElementGeometry2D(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeElementGeometry2D(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_ElementGeometry2D', _CommandFemElementGeometry2D())

View File

@@ -51,7 +51,7 @@ class _CommandFemMaterialFluid(FemCommands):
FreeCAD.ActiveDocument.openTransaction("Create Fluid Material")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("ObjectsFem.makeMaterialFluid(FreeCAD.ActiveDocument, 'FluidMaterial')")
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member = FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member + [App.ActiveDocument.ActiveObject]")
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".addObject(App.ActiveDocument.ActiveObject)")
FreeCADGui.doCommand("FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")

View File

@@ -57,7 +57,7 @@ class _CommandFemMaterialMechanicalNonlinear(FemCommands):
break
if allow_nonlinear_material:
string_lin_mat_obj = "FreeCAD.ActiveDocument.getObject('" + lin_mat_obj.Name + "')"
command_to_run = "FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeMaterialMechanicalNonlinear(FreeCAD.ActiveDocument, " + string_lin_mat_obj + ")]"
command_to_run = "FemGui.getActiveAnalysis().addObject(ObjectsFem.makeMaterialMechanicalNonlinear(FreeCAD.ActiveDocument, " + string_lin_mat_obj + "))"
FreeCAD.ActiveDocument.openTransaction("Create FemMaterialMechanicalNonlinear")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand(command_to_run)
@@ -65,7 +65,7 @@ class _CommandFemMaterialMechanicalNonlinear(FemCommands):
# nonlinear material
# nonlinear geometry --> its is triggered anyway https://forum.freecadweb.org/viewtopic.php?f=18&t=23101&p=180489#p180489
solver_object = None
for m in FemGui.getActiveAnalysis().Member:
for m in FemGui.getActiveAnalysis().Group:
if m.isDerivedFrom('Fem::FemSolverObjectPython'):
if not solver_object:
solver_object = m

View File

@@ -51,7 +51,7 @@ class _CommandFemMaterialSolid(FemCommands):
FreeCAD.ActiveDocument.openTransaction("Create Solid Material")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("ObjectsFem.makeMaterialSolid(FreeCAD.ActiveDocument, 'SolidMaterial')")
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member = FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".Member + [FreeCAD.ActiveDocument.ActiveObject]")
FreeCADGui.doCommand("FreeCAD.ActiveDocument." + FemGui.getActiveAnalysis().Name + ".addObject(FreeCAD.ActiveDocument.ActiveObject)")
FreeCADGui.doCommand("FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")

View File

@@ -56,7 +56,7 @@ class _CommandFemMeshGmshFromShape(FemCommands):
FreeCADGui.doCommand("FreeCAD.ActiveDocument.ActiveObject.Part = FreeCAD.ActiveDocument." + sel[0].Name)
if FemGui.getActiveAnalysis():
FreeCADGui.addModule("FemGui")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FreeCAD.ActiveDocument.ActiveObject]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(FreeCAD.ActiveDocument.ActiveObject)")
FreeCADGui.doCommand("Gui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)")
FreeCADGui.Selection.clearSelection()

View File

@@ -55,7 +55,7 @@ class _CommandFemMeshNetgenFromShape(FemCommands):
FreeCADGui.doCommand("App.ActiveDocument.ActiveObject.Shape = App.activeDocument()." + sel[0].Name)
if FemGui.getActiveAnalysis():
FreeCADGui.addModule("FemGui")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.ActiveDocument.ActiveObject]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(App.ActiveDocument.ActiveObject)")
FreeCADGui.doCommand("Gui.ActiveDocument.setEdit(App.ActiveDocument.ActiveObject.Name)")
FreeCADGui.Selection.clearSelection()

View File

@@ -46,7 +46,7 @@ class _CommandFemSolverCalculix(FemCommands):
def Activated(self):
has_nonlinear_material_obj = False
for m in FemGui.getActiveAnalysis().Member:
for m in FemGui.getActiveAnalysis().Group:
if hasattr(m, "Proxy") and m.Proxy.Type == "FemMaterialMechanicalNonlinear":
has_nonlinear_material_obj = True
FreeCAD.ActiveDocument.openTransaction("Create SolverCalculix")
@@ -55,9 +55,9 @@ class _CommandFemSolverCalculix(FemCommands):
FreeCADGui.doCommand("solver = ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument)")
FreeCADGui.doCommand("solver.GeometricalNonlinearity = 'nonlinear'")
FreeCADGui.doCommand("solver.MaterialNonlinearity = 'nonlinear'")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [solver]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(solver)")
else:
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeSolverCalculix(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_SolverCalculix', _CommandFemSolverCalculix())

View File

@@ -46,7 +46,7 @@ class _CommandFemSolverZ88(FemCommands):
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create SolverZ88")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverZ88(FreeCAD.ActiveDocument)]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().addObject(ObjectsFem.makeSolverZ88(FreeCAD.ActiveDocument))")
FreeCADGui.addCommand('FEM_SolverZ88', _CommandFemSolverZ88())

View File

@@ -162,7 +162,7 @@ class _TaskPanelFemMeshGmsh:
import FemGui
self.analysis = FemGui.getActiveAnalysis()
if self.analysis:
for m in FemGui.getActiveAnalysis().Member:
for m in FemGui.getActiveAnalysis().Group:
if m.Name == self.mesh_obj.Name:
print('Active analysis found: ' + self.analysis.Name)
return

View File

@@ -415,7 +415,7 @@ def hide_parts_constraints():
if hide_constraints:
for o in FreeCAD.ActiveDocument.Objects:
if o.isDerivedFrom('Fem::FemAnalysis'):
for acnstrmesh in FemGui.getActiveAnalysis().Member:
for acnstrmesh in FemGui.getActiveAnalysis().Group:
if "Constraint" in acnstrmesh.TypeId:
acnstrmesh.ViewObject.Visibility = False
break

View File

@@ -79,7 +79,7 @@ class _ViewProviderFemMeshGmsh:
if found_an_analysis:
if FemGui.getActiveAnalysis() is not None:
if FemGui.getActiveAnalysis().Document is FreeCAD.ActiveDocument:
if self.Object in FemGui.getActiveAnalysis().Member:
if self.Object in FemGui.getActiveAnalysis().Group:
if not gui_doc.getInEdit():
gui_doc.setEdit(vobj.Object.Name)
else:
@@ -89,7 +89,7 @@ class _ViewProviderFemMeshGmsh:
found_mesh_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
for m in o.Member:
for m in o.Group:
if m == self.Object:
found_mesh_analysis = True
FemGui.setActiveAnalysis(o)
@@ -106,7 +106,7 @@ class _ViewProviderFemMeshGmsh:
found_mesh_analysis = False
for o in gui_doc.Document.Objects:
if o.isDerivedFrom('Fem::FemAnalysisPython'):
for m in o.Member:
for m in o.Group:
if m == self.Object:
found_mesh_analysis = True
FemGui.setActiveAnalysis(o)

View File

@@ -66,7 +66,7 @@ class _ViewProviderFemSolverCalculix:
# may be go the other way around and just activate the analysis the user has doubleClicked on ?!
if FemGui.getActiveAnalysis() is not None:
if FemGui.getActiveAnalysis().Document is FreeCAD.ActiveDocument:
if self.Object in FemGui.getActiveAnalysis().Member:
if self.Object in FemGui.getActiveAnalysis().Group:
doc.setEdit(vobj.Object.Name)
else:
FreeCAD.Console.PrintError('Activate the analysis this solver belongs to!\n')

View File

@@ -56,7 +56,7 @@ class _ViewProviderFemSolverZ88:
# may be go the other way around and just activate the analysis the user has doubleClicked on ?!
if FemGui.getActiveAnalysis() is not None:
if FemGui.getActiveAnalysis().Document is FreeCAD.ActiveDocument:
if self.Object in FemGui.getActiveAnalysis().Member:
if self.Object in FemGui.getActiveAnalysis().Group:
FreeCAD.Console.PrintError('Not yet supported, use property editor and "run analysis" button!\n')
# doc.setEdit(vobj.Object.Name)
else:

View File

@@ -397,7 +397,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
solver_object.EigenmodeHighLimit = 1000000.0
solver_object.EigenmodeLowLimit = 0.0
self.assertTrue(solver_object, "FemTest of new solver failed")
analysis.Member = analysis.Member + [solver_object]
analysis.addObject(solver_object)
fcc_print('Checking FEM new material...')
material_object = ObjectsFem.makeMaterialSolid(self.active_doc, 'MechanicalMaterial')
@@ -408,13 +408,13 @@ class FemCcxAnalysisTest(unittest.TestCase):
mat['Density'] = "7900 kg/m^3"
material_object.Material = mat
self.assertTrue(material_object, "FemTest of new material failed")
analysis.Member = analysis.Member + [material_object]
analysis.addObject(material_object)
fcc_print('Checking FEM new fixed constraint...')
fixed_constraint = self.active_doc.addObject("Fem::ConstraintFixed", "FemConstraintFixed")
fixed_constraint.References = [(box, "Face1")]
self.assertTrue(fixed_constraint, "FemTest of new fixed constraint failed")
analysis.Member = analysis.Member + [fixed_constraint]
analysis.addObject(fixed_constraint)
fcc_print('Checking FEM new force constraint...')
force_constraint = self.active_doc.addObject("Fem::ConstraintForce", "FemConstraintForce")
@@ -425,7 +425,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
force_constraint.Reversed = True
self.active_doc.recompute()
self.assertTrue(force_constraint, "FemTest of new force constraint failed")
analysis.Member = analysis.Member + [force_constraint]
analysis.addObject(force_constraint)
fcc_print('Checking FEM new pressure constraint...')
pressure_constraint = self.active_doc.addObject("Fem::ConstraintPressure", "FemConstraintPressure")
@@ -433,7 +433,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
pressure_constraint.Pressure = 1000.0
pressure_constraint.Reversed = False
self.assertTrue(pressure_constraint, "FemTest of new pressure constraint failed")
analysis.Member = analysis.Member + [pressure_constraint]
analysis.addObject(pressure_constraint)
fcc_print('Checking FEM new mesh...')
from test_files.ccx.cube_mesh import create_nodes_cube, create_elements_cube
@@ -445,7 +445,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
mesh_object = self.active_doc.addObject('Fem::FemMeshObject', mesh_name)
mesh_object.FemMesh = mesh
self.assertTrue(mesh, "FemTest of new mesh failed")
analysis.Member = analysis.Member + [mesh_object]
analysis.addObject(mesh_object)
self.active_doc.recompute()
@@ -570,7 +570,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
solver_object.IterationsThermoMechMaximum = 2000
solver_object.IterationsControlParameterTimeUse = True
self.assertTrue(solver_object, "FemTest of new solver failed")
analysis.Member = analysis.Member + [solver_object]
analysis.addObject(solver_object)
fcc_print('Checking FEM new material...')
material_object = ObjectsFem.makeMaterialSolid(self.active_doc, 'MechanicalMaterial')
@@ -584,26 +584,26 @@ class FemCcxAnalysisTest(unittest.TestCase):
mat['SpecificHeat'] = "500 J/kg/K" # SvdW: Change to Ansys model values
material_object.Material = mat
self.assertTrue(material_object, "FemTest of new material failed")
analysis.Member = analysis.Member + [material_object]
analysis.addObject(material_object)
fcc_print('Checking FEM new fixed constraint...')
fixed_constraint = self.active_doc.addObject("Fem::ConstraintFixed", "FemConstraintFixed")
fixed_constraint.References = [(box, "Face1")]
self.assertTrue(fixed_constraint, "FemTest of new fixed constraint failed")
analysis.Member = analysis.Member + [fixed_constraint]
analysis.addObject(fixed_constraint)
fcc_print('Checking FEM new initial temperature constraint...')
initialtemperature_constraint = self.active_doc.addObject("Fem::ConstraintInitialTemperature", "FemConstraintInitialTemperature")
initialtemperature_constraint.initialTemperature = 300.0
self.assertTrue(initialtemperature_constraint, "FemTest of new initial temperature constraint failed")
analysis.Member = analysis.Member + [initialtemperature_constraint]
analysis.addObject(initialtemperature_constraint)
fcc_print('Checking FEM new temperature constraint...')
temperature_constraint = self.active_doc.addObject("Fem::ConstraintTemperature", "FemConstraintTemperature")
temperature_constraint.References = [(box, "Face1")]
temperature_constraint.Temperature = 310.93
self.assertTrue(temperature_constraint, "FemTest of new temperature constraint failed")
analysis.Member = analysis.Member + [temperature_constraint]
analysis.addObject(temperature_constraint)
fcc_print('Checking FEM new heatflux constraint...')
heatflux_constraint = self.active_doc.addObject("Fem::ConstraintHeatflux", "FemConstraintHeatflux")
@@ -611,7 +611,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
heatflux_constraint.AmbientTemp = 255.3722
heatflux_constraint.FilmCoef = 5.678
self.assertTrue(heatflux_constraint, "FemTest of new heatflux constraint failed")
analysis.Member = analysis.Member + [heatflux_constraint]
analysis.addObject(heatflux_constraint)
fcc_print('Checking FEM new mesh...')
from test_files.ccx.spine_mesh import create_nodes_spine, create_elements_spine
@@ -623,7 +623,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
mesh_object = self.active_doc.addObject('Fem::FemMeshObject', mesh_name)
mesh_object.FemMesh = mesh
self.assertTrue(mesh, "FemTest of new mesh failed")
analysis.Member = analysis.Member + [mesh_object]
analysis.addObject(mesh_object)
self.active_doc.recompute()
@@ -724,7 +724,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
solver_object.IterationsThermoMechMaximum = 2000
solver_object.IterationsControlParameterTimeUse = False
self.assertTrue(solver_object, "FemTest of new solver failed")
analysis.Member = analysis.Member + [solver_object]
analysis.addObject(solver_object)
fcc_print('Checking FEM new material...')
material_object = ObjectsFem.makeMaterialFluid(self.active_doc, 'FluidMaterial')
@@ -737,7 +737,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
mat['ThermalConductivity'] = "0.591 W/m/K"
material_object.Material = mat
self.assertTrue(material_object, "FemTest of new material failed")
analysis.Member = analysis.Member + [material_object]
analysis.addObject(material_object)
fcc_print('Checking FEM Flow1D inlet constraint...')
Flow1d_inlet = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -746,7 +746,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_inlet.InletPressure = 0.1
Flow1d_inlet.References = [(line, "Edge1")]
self.assertTrue(Flow1d_inlet, "FemTest of new Flow1D inlet constraint failed")
analysis.Member = analysis.Member + [Flow1d_inlet]
analysis.addObject(Flow1d_inlet)
fcc_print('Checking FEM new Flow1D entrance constraint...')
Flow1d_entrance = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -756,7 +756,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_entrance.EntranceArea = 25133.00
Flow1d_entrance.References = [(line, "Edge2")]
self.assertTrue(Flow1d_entrance, "FemTest of new Flow1D entrance constraint failed")
analysis.Member = analysis.Member + [Flow1d_entrance]
analysis.addObject(Flow1d_entrance)
fcc_print('Checking FEM new Flow1D manning constraint...')
Flow1d_manning = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -767,7 +767,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_manning.ManningCoefficient = 0.002
Flow1d_manning.References = [(line, "Edge3"), (line, "Edge5")]
self.assertTrue(Flow1d_manning, "FemTest of new Flow1D manning constraint failed")
analysis.Member = analysis.Member + [Flow1d_manning]
analysis.addObject(Flow1d_manning)
fcc_print('Checking FEM new Flow1D bend constraint...')
Flow1d_bend = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -779,7 +779,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_bend.BendLossCoefficient = 0.4
Flow1d_bend.References = [(line, "Edge4")]
self.assertTrue(Flow1d_bend, "FemTest of new Flow1D bend constraint failed")
analysis.Member = analysis.Member + [Flow1d_bend]
analysis.addObject(Flow1d_bend)
fcc_print('Checking FEM new Flow1D enlargement constraint...')
Flow1d_enlargement = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -789,7 +789,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_enlargement.EnlargeArea2 = 70686.00
Flow1d_enlargement.References = [(line, "Edge6")]
self.assertTrue(Flow1d_enlargement, "FemTest of new Flow1D enlargement constraint failed")
analysis.Member = analysis.Member + [Flow1d_enlargement]
analysis.addObject(Flow1d_enlargement)
fcc_print('Checking FEM new Flow1D manning constraint...')
Flow1d_manning1 = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -800,7 +800,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_manning1.ManningCoefficient = 0.002
Flow1d_manning1.References = [(line, "Edge7")]
self.assertTrue(Flow1d_manning1, "FemTest of new Flow1D manning constraint failed")
analysis.Member = analysis.Member + [Flow1d_manning1]
analysis.addObject(Flow1d_manning1)
fcc_print('Checking FEM new Flow1D contraction constraint...')
Flow1d_contraction = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -810,7 +810,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_contraction.ContractArea2 = 17671
Flow1d_contraction.References = [(line, "Edge8")]
self.assertTrue(Flow1d_contraction, "FemTest of new Flow1D contraction constraint failed")
analysis.Member = analysis.Member + [Flow1d_contraction]
analysis.addObject(Flow1d_contraction)
fcc_print('Checking FEM new Flow1D manning constraint...')
Flow1d_manning2 = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -821,7 +821,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_manning2.ManningCoefficient = 0.002
Flow1d_manning2.References = [(line, "Edge11"), (line, "Edge9")]
self.assertTrue(Flow1d_manning2, "FemTest of new Flow1D manning constraint failed")
analysis.Member = analysis.Member + [Flow1d_manning2]
analysis.addObject(Flow1d_manning2)
fcc_print('Checking FEM new Flow1D gate valve constraint...')
Flow1d_gate_valve = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -831,7 +831,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_gate_valve.GateValveClosingCoeff = 0.5
Flow1d_gate_valve.References = [(line, "Edge10")]
self.assertTrue(Flow1d_gate_valve, "FemTest of new Flow1D gate valve constraint failed")
analysis.Member = analysis.Member + [Flow1d_gate_valve]
analysis.addObject(Flow1d_gate_valve)
fcc_print('Checking FEM new Flow1D enlargement constraint...')
Flow1d_enlargement1 = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -841,7 +841,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_enlargement1.EnlargeArea2 = 1e12
Flow1d_enlargement1.References = [(line, "Edge12")]
self.assertTrue(Flow1d_enlargement1, "FemTest of new Flow1D enlargement constraint failed")
analysis.Member = analysis.Member + [Flow1d_enlargement1]
analysis.addObject(Flow1d_enlargement1)
fcc_print('Checking FEM Flow1D outlet constraint...')
Flow1d_outlet = ObjectsFem.makeElementFluid1D(self.active_doc, "ElementFluid1D")
@@ -850,7 +850,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_outlet.OutletPressure = 0.1
Flow1d_outlet.References = [(line, "Edge13")]
self.assertTrue(Flow1d_outlet, "FemTest of new Flow1D inlet constraint failed")
analysis.Member = analysis.Member + [Flow1d_outlet]
analysis.addObject(Flow1d_outlet)
fcc_print('Checking FEM self weight constraint...')
Flow1d_self_weight = ObjectsFem.makeConstraintSelfWeight(self.active_doc, "ConstraintSelfWeight")
@@ -858,7 +858,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
Flow1d_self_weight.Gravity_y = 0.0
Flow1d_self_weight.Gravity_z = -1.0
self.assertTrue(Flow1d_outlet, "FemTest of new Flow1D self weight constraint failed")
analysis.Member = analysis.Member + [Flow1d_self_weight]
analysis.addObject(Flow1d_self_weight)
fcc_print('Checking FEM new mesh...')
from test_files.ccx.Flow1D_mesh import create_nodes_Flow1D, create_elements_Flow1D
@@ -870,7 +870,7 @@ class FemCcxAnalysisTest(unittest.TestCase):
mesh_object = self.active_doc.addObject('Fem::FemMeshObject', mesh_name)
mesh_object.FemMesh = mesh
self.assertTrue(mesh, "FemTest of new mesh failed")
analysis.Member = analysis.Member + [mesh_object]
analysis.addObject(mesh_object)
self.active_doc.recompute()

View File

@@ -101,7 +101,7 @@ def importFrd(filename, analysis=None, result_name_prefix=None):
results.Mesh = result_mesh_object
results = importToolsFem.fill_femresult_mechanical(results, result_set, span)
if analysis:
analysis_object.Member = analysis_object.Member + [results]
analysis_object.addObject(results)
if FreeCAD.GuiUp:
if analysis:

View File

@@ -91,7 +91,7 @@ def importVTK(filename, analysis=None, result_name_prefix=None):
result_obj.DisplacementLengths = importToolsFem.calculate_disp_abs(result_obj.DisplacementVectors)
if analysis:
analysis_object.Member = analysis_object.Member + [result_obj]
analysis_object.addObject(result_obj)
''' seams not used at the moment
filenamebase = '.'.join(filename.split('.')[:-1]) # pattern: filebase_timestamp.vtk

View File

@@ -99,7 +99,7 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None):
results.Mesh = result_mesh_object
results = importToolsFem.fill_femresult_mechanical(results, result_set, 0)
if analysis:
analysis_object.Member = analysis_object.Member + [results]
analysis_object.addObject(results)
if FreeCAD.GuiUp:
if analysis: