Assembly: Drag: switch from solver Solve to dragStep.
This commit is contained in:
committed by
Yorik van Havre
parent
60b902fc7e
commit
b4168c95ee
@@ -175,7 +175,6 @@ int AssemblyObject::solve(bool enableRedo, bool updateJCS)
|
||||
|
||||
void AssemblyObject::preDrag(std::vector<App::DocumentObject*> dragParts)
|
||||
{
|
||||
Base::Console().Warning("pre drag\n");
|
||||
solve();
|
||||
|
||||
dragMbdParts.clear();
|
||||
@@ -186,9 +185,8 @@ void AssemblyObject::preDrag(std::vector<App::DocumentObject*> dragParts)
|
||||
mbdAssembly->runPreDrag();
|
||||
}
|
||||
|
||||
void AssemblyObject::doDragStep(Base::Vector3d delta)
|
||||
void AssemblyObject::doDragStep()
|
||||
{
|
||||
Base::Console().Warning("doDragStep\n");
|
||||
for (auto& mbdPart : dragMbdParts) {
|
||||
App::DocumentObject* part = nullptr;
|
||||
for (auto& pair : objectPartMap) {
|
||||
@@ -201,15 +199,10 @@ void AssemblyObject::doDragStep(Base::Vector3d delta)
|
||||
continue;
|
||||
}
|
||||
|
||||
FColDsptr pos3D, delta2;
|
||||
pos3D = mbdPart->position3D;
|
||||
delta2 = std::make_shared<FullColumn<double>>(ListD {delta.x, delta.y, delta.z});
|
||||
mbdPart->updateMbDFromPosition3D(pos3D->plusFullColumn(delta2));
|
||||
|
||||
/*Base::Placement plc = getPlacementFromProp(part, "Placement");
|
||||
printPlacement(plc, "init plc");
|
||||
Base::Placement plc = getPlacementFromProp(part, "Placement");
|
||||
Base::Vector3d pos = plc.getPosition();
|
||||
mbdPart->setPosition3D(pos.x, pos.y, pos.z);
|
||||
mbdPart->updateMbDFromPosition3D(
|
||||
std::make_shared<FullColumn<double>>(ListD {pos.x, pos.y, pos.z}));
|
||||
|
||||
Base::Rotation rot = plc.getRotation();
|
||||
Base::Matrix4D mat;
|
||||
@@ -217,7 +210,7 @@ void AssemblyObject::doDragStep(Base::Vector3d delta)
|
||||
Base::Vector3d r0 = mat.getRow(0);
|
||||
Base::Vector3d r1 = mat.getRow(1);
|
||||
Base::Vector3d r2 = mat.getRow(2);
|
||||
mbdPart->setRotationMatrix(r0.x, r0.y, r0.z, r1.x, r1.y, r1.z, r2.x, r2.y, r2.z);*/
|
||||
mbdPart->updateMbDFromRotationMatrix(r0.x, r0.y, r0.z, r1.x, r1.y, r1.z, r2.x, r2.y, r2.z);
|
||||
}
|
||||
|
||||
auto dragPartsVec = std::make_shared<std::vector<std::shared_ptr<ASMTPart>>>(dragMbdParts);
|
||||
@@ -228,7 +221,6 @@ void AssemblyObject::doDragStep(Base::Vector3d delta)
|
||||
|
||||
void AssemblyObject::postDrag()
|
||||
{
|
||||
Base::Console().Warning("post drag \n");
|
||||
mbdAssembly->runPostDrag(); // Do this after last drag
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public:
|
||||
being in an active transaction (joint creation).*/
|
||||
int solve(bool enableRedo = false, bool updateJCS = true);
|
||||
void preDrag(std::vector<App::DocumentObject*> dragParts);
|
||||
void doDragStep(Base::Vector3d delta);
|
||||
void doDragStep();
|
||||
void postDrag();
|
||||
void savePlacementsForUndo();
|
||||
void undoSolve();
|
||||
|
||||
@@ -413,11 +413,6 @@ bool ViewProviderAssembly::mouseMove(const SbVec2s& cursorPos, Gui::View3DInvent
|
||||
}
|
||||
}
|
||||
|
||||
// Delta drag test :
|
||||
/*SbVec3f vec = viewer->getPointOnFocalPlane(cursorPos);
|
||||
Base::Vector3d newPos = Base::Vector3d(vec[0], vec[1], vec[2]);
|
||||
Base::Vector3d delta = newPos - prevPosition;*/
|
||||
|
||||
prevPosition = newPos;
|
||||
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(
|
||||
@@ -425,8 +420,8 @@ bool ViewProviderAssembly::mouseMove(const SbVec2s& cursorPos, Gui::View3DInvent
|
||||
bool solveOnMove = hGrp->GetBool("SolveOnMove", true);
|
||||
if (solveOnMove) {
|
||||
auto* assemblyPart = static_cast<AssemblyObject*>(getObject());
|
||||
assemblyPart->solve(/*enableRedo = */ false, /*updateJCS = */ false);
|
||||
// assemblyPart->doDragStep(delta);
|
||||
// assemblyPart->solve(/*enableRedo = */ false, /*updateJCS = */ false);
|
||||
assemblyPart->doDragStep();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -783,8 +778,7 @@ void ViewProviderAssembly::initMove(const SbVec2s& cursorPos, Gui::View3DInvento
|
||||
for (auto& pair : docsToMove) {
|
||||
dragParts.push_back(pair.first);
|
||||
}
|
||||
assemblyPart->solve();
|
||||
// assemblyPart->preDrag(dragParts);
|
||||
assemblyPart->preDrag(dragParts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -811,7 +805,7 @@ void ViewProviderAssembly::endMove()
|
||||
bool solveOnMove = hGrp->GetBool("SolveOnMove", true);
|
||||
if (solveOnMove) {
|
||||
auto* assemblyPart = static_cast<AssemblyObject*>(getObject());
|
||||
// assemblyPart->postDrag();
|
||||
assemblyPart->postDrag();
|
||||
assemblyPart->setObjMasses({});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user