Assembly: Add 'Angle', 'Perpendicular' and 'Parallel' joints.
This commit is contained in:
committed by
Chris Hennes
parent
751aed1813
commit
5fb3589f26
@@ -58,12 +58,15 @@
|
||||
#include <OndselSolver/ASMTMarker.h>
|
||||
#include <OndselSolver/ASMTPart.h>
|
||||
#include <OndselSolver/ASMTJoint.h>
|
||||
#include <OndselSolver/ASMTAngleJoint.h>
|
||||
#include <OndselSolver/ASMTFixedJoint.h>
|
||||
#include <OndselSolver/ASMTGearJoint.h>
|
||||
#include <OndselSolver/ASMTRevoluteJoint.h>
|
||||
#include <OndselSolver/ASMTCylindricalJoint.h>
|
||||
#include <OndselSolver/ASMTTranslationalJoint.h>
|
||||
#include <OndselSolver/ASMTSphericalJoint.h>
|
||||
#include <OndselSolver/ASMTParallelAxesJoint.h>
|
||||
#include <OndselSolver/ASMTPerpendicularJoint.h>
|
||||
#include <OndselSolver/ASMTPointInPlaneJoint.h>
|
||||
#include <OndselSolver/ASMTPointInLineJoint.h>
|
||||
#include <OndselSolver/ASMTLineInPlaneJoint.h>
|
||||
@@ -846,6 +849,23 @@ std::shared_ptr<ASMTJoint> AssemblyObject::makeMbdJointOfType(App::DocumentObjec
|
||||
else if (type == JointType::Distance) {
|
||||
return makeMbdJointDistance(joint);
|
||||
}
|
||||
else if (type == JointType::Parallel) {
|
||||
return CREATE<ASMTParallelAxesJoint>::With();
|
||||
}
|
||||
else if (type == JointType::Perpendicular) {
|
||||
return CREATE<ASMTPerpendicularJoint>::With();
|
||||
}
|
||||
else if (type == JointType::Angle) {
|
||||
double angle = fabs(Base::toRadians(getJointDistance(joint)));
|
||||
if (fmod(angle, 2 * M_PI) < Precision::Confusion()) {
|
||||
return CREATE<ASMTParallelAxesJoint>::With();
|
||||
}
|
||||
else {
|
||||
auto mbdJoint = CREATE<ASMTAngleJoint>::With();
|
||||
mbdJoint->theIzJz = angle;
|
||||
return mbdJoint;
|
||||
}
|
||||
}
|
||||
else if (type == JointType::RackPinion) {
|
||||
auto mbdJoint = CREATE<ASMTRackPinionJoint>::With();
|
||||
mbdJoint->pitchRadius = getJointDistance(joint);
|
||||
|
||||
Reference in New Issue
Block a user