inherit FemAnalysis from DocumentObjectGroup and remove Member property
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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']:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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\
|
||||
|
||||
@@ -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 -----------------------------------------------------------------------
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)")
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)")
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user