Skip to content

Commit 566c8aa

Browse files
committed
Fem: Update rigid body
1 parent 5847805 commit 566c8aa

8 files changed

+875
-734
lines changed

src/Mod/Fem/App/FemConstraintRigidBody.cpp

+56-27
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,7 @@ using namespace Fem;
2929

3030
PROPERTY_SOURCE(Fem::ConstraintRigidBody, Fem::Constraint)
3131

32-
const char* ConstraintRigidBody::loadModeEnum[] = {"Displacement-Rotation",
33-
"Force-Moment",
34-
"Displacement-Moment",
35-
"Force-Rotation",
36-
nullptr};
37-
38-
const char* ConstraintRigidBody::freeModeEnum[] =
39-
{"None", "X", "Y", "Z", "XY", "XZ", "YZ", "All", nullptr};
32+
const char* ConstraintRigidBody::boundaryModeEnum[] = {"Free", "Constraint", "Load", nullptr};
4033

4134
ConstraintRigidBody::ConstraintRigidBody()
4235
{
@@ -51,41 +44,77 @@ ConstraintRigidBody::ConstraintRigidBody()
5144
App::Prop_Output,
5245
"Reference node displacement");
5346
ADD_PROPERTY_TYPE(Rotation,
54-
(Base::Rotation(0.0, 0.0, 0.0, 0.0)),
47+
(Base::Rotation(0.0, 0.0, 0.0, 1.0)),
5548
"ConstraintRigidBody",
5649
App::Prop_Output,
5750
"Reference node rotation");
58-
ADD_PROPERTY_TYPE(Force, (0.0), "ConstraintRigidBody", App::Prop_Output, "Applied force");
59-
ADD_PROPERTY_TYPE(ForceDirection,
60-
(0.0, 0.0, 0.0),
51+
ADD_PROPERTY_TYPE(ForceX,
52+
(0.0),
6153
"ConstraintRigidBody",
6254
App::Prop_Output,
63-
"Direction of applied force");
64-
ADD_PROPERTY_TYPE(Moment, (0.0), "ConstraintRigidBody", App::Prop_Output, "Applied moment");
65-
ADD_PROPERTY_TYPE(MomentDirection,
66-
(0.0, 0.0, 0.0),
55+
"Applied force in X direction");
56+
ADD_PROPERTY_TYPE(ForceY,
57+
(0.0),
58+
"ConstraintRigidBody",
59+
App::Prop_Output,
60+
"Applied force in Y direction");
61+
ADD_PROPERTY_TYPE(ForceZ,
62+
(0.0),
63+
"ConstraintRigidBody",
64+
App::Prop_Output,
65+
"Applied force in Z direction");
66+
ADD_PROPERTY_TYPE(MomentX,
67+
(0.0),
68+
"ConstraintRigidBody",
69+
App::Prop_Output,
70+
"Applied moment in X direction");
71+
ADD_PROPERTY_TYPE(MomentY,
72+
(0.0),
6773
"ConstraintRigidBody",
6874
App::Prop_Output,
69-
"Direction of applied moment");
70-
ADD_PROPERTY_TYPE(FreeTranslationalMode,
75+
"Applied moment in Y direction");
76+
ADD_PROPERTY_TYPE(MomentZ,
77+
(0.0),
78+
"ConstraintRigidBody",
79+
App::Prop_Output,
80+
"Applied moment in Z direction");
81+
ADD_PROPERTY_TYPE(TranslationalModeX,
82+
("Free"),
83+
"ConstraintRigidBody",
84+
App::Prop_Output,
85+
"X-direction displacement/force mode");
86+
ADD_PROPERTY_TYPE(TranslationalModeY,
87+
("Free"),
88+
"ConstraintRigidBody",
89+
App::Prop_Output,
90+
"Y-direction displacement/force mode");
91+
ADD_PROPERTY_TYPE(TranslationalModeZ,
92+
("Free"),
93+
"ConstraintRigidBody",
94+
App::Prop_Output,
95+
"Z-direction displacement/force mode");
96+
ADD_PROPERTY_TYPE(RotationalModeX,
7197
("None"),
7298
"ConstraintRigidBody",
7399
App::Prop_Output,
74-
"Free displacement/force mode");
75-
ADD_PROPERTY_TYPE(FreeRotationalMode,
100+
"X-direction rotation/moment mode");
101+
ADD_PROPERTY_TYPE(RotationalModeY,
76102
("None"),
77103
"ConstraintRigidBody",
78104
App::Prop_Output,
79-
"Free rotation/moment mode");
80-
ADD_PROPERTY_TYPE(LoadMode,
81-
("Displacement-Rotation"),
105+
"Y-direction rotation/moment mode");
106+
ADD_PROPERTY_TYPE(RotationalModeZ,
107+
("None"),
82108
"ConstraintRigidBody",
83109
App::Prop_Output,
84-
"Load/boundary condition mode");
110+
"Z-direction rotation/moment mode");
85111

86-
FreeTranslationalMode.setEnums(freeModeEnum);
87-
FreeRotationalMode.setEnums(freeModeEnum);
88-
LoadMode.setEnums(loadModeEnum);
112+
TranslationalModeX.setEnums(boundaryModeEnum);
113+
TranslationalModeY.setEnums(boundaryModeEnum);
114+
TranslationalModeZ.setEnums(boundaryModeEnum);
115+
RotationalModeX.setEnums(boundaryModeEnum);
116+
RotationalModeY.setEnums(boundaryModeEnum);
117+
RotationalModeZ.setEnums(boundaryModeEnum);
89118
}
90119

91120
App::DocumentObjectExecReturn* ConstraintRigidBody::execute()

src/Mod/Fem/App/FemConstraintRigidBody.h

+13-9
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,18 @@ class FemExport ConstraintRigidBody: public Fem::Constraint
4141
App::PropertyPosition ReferenceNode;
4242
App::PropertyPosition Displacement;
4343
App::PropertyRotation Rotation;
44-
App::PropertyForce Force;
45-
App::PropertyVector ForceDirection;
46-
App::PropertyMoment Moment;
47-
App::PropertyVector MomentDirection;
48-
App::PropertyEnumeration FreeTranslationalMode;
49-
App::PropertyEnumeration FreeRotationalMode;
50-
App::PropertyEnumeration LoadMode;
44+
App::PropertyForce ForceX;
45+
App::PropertyForce ForceY;
46+
App::PropertyForce ForceZ;
47+
App::PropertyMoment MomentX;
48+
App::PropertyMoment MomentY;
49+
App::PropertyMoment MomentZ;
50+
App::PropertyEnumeration TranslationalModeX;
51+
App::PropertyEnumeration TranslationalModeY;
52+
App::PropertyEnumeration TranslationalModeZ;
53+
App::PropertyEnumeration RotationalModeX;
54+
App::PropertyEnumeration RotationalModeY;
55+
App::PropertyEnumeration RotationalModeZ;
5156

5257
/// recalculate the object
5358
App::DocumentObjectExecReturn* execute() override;
@@ -62,8 +67,7 @@ class FemExport ConstraintRigidBody: public Fem::Constraint
6267
void onChanged(const App::Property* prop) override;
6368

6469
private:
65-
static const char* loadModeEnum[];
66-
static const char* freeModeEnum[];
70+
static const char* boundaryModeEnum[];
6771
};
6872

6973
} // namespace Fem

src/Mod/Fem/Gui/Resources/Fem.qrc

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<file>icons/FEM_ConstraintPlaneRotation.svg</file>
3030
<file>icons/FEM_ConstraintPressure.svg</file>
3131
<file>icons/FEM_ConstraintPulley.svg</file>
32+
<file>icons/FEM_ConstraintRigidBody.svg</file>
3233
<file>icons/FEM_ConstraintSectionPrint.svg</file>
3334
<file>icons/FEM_ConstraintSelfWeight.svg</file>
3435
<file>icons/FEM_ConstraintSpring.svg</file>

0 commit comments

Comments
 (0)