diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index 7fa5dc88d6..9a86dd6761 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -175,7 +175,6 @@ int AssemblyObject::solve(bool enableRedo, bool updateJCS) void AssemblyObject::preDrag(std::vector dragParts) { - Base::Console().Warning("pre drag\n"); solve(); dragMbdParts.clear(); @@ -186,9 +185,8 @@ void AssemblyObject::preDrag(std::vector 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>(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>(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>>(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 } diff --git a/src/Mod/Assembly/App/AssemblyObject.h b/src/Mod/Assembly/App/AssemblyObject.h index 15fe4f4307..2d7f461fb8 100644 --- a/src/Mod/Assembly/App/AssemblyObject.h +++ b/src/Mod/Assembly/App/AssemblyObject.h @@ -144,7 +144,7 @@ public: being in an active transaction (joint creation).*/ int solve(bool enableRedo = false, bool updateJCS = true); void preDrag(std::vector dragParts); - void doDragStep(Base::Vector3d delta); + void doDragStep(); void postDrag(); void savePlacementsForUndo(); void undoSolve(); diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 44f100d1d3..6e568beda6 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -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(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(getObject()); - // assemblyPart->postDrag(); + assemblyPart->postDrag(); assemblyPart->setObjMasses({}); }