From 73f031b2346766688fa4c634786ce134d1825cc9 Mon Sep 17 00:00:00 2001 From: Daniel Wood Date: Wed, 29 Apr 2020 19:41:42 +0100 Subject: [PATCH] Extract the shape of the tool from the solid shape --- src/Mod/Path/PathSimulator/App/VolSim.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Mod/Path/PathSimulator/App/VolSim.cpp b/src/Mod/Path/PathSimulator/App/VolSim.cpp index 4c6bd6ec82e5..cd1840ce1944 100644 --- a/src/Mod/Path/PathSimulator/App/VolSim.cpp +++ b/src/Mod/Path/PathSimulator/App/VolSim.cpp @@ -780,24 +780,25 @@ float cSimTool::GetToolProfileAt(float pos) // pos is -1..1 location along the float radPos = std::abs(pos) * radius; toolShapePoint test; test.radiusPos = radPos; auto it = std::lower_bound(m_toolShape.begin(), m_toolShape.end(), test, toolShapePoint::less_than()); - //float diff = std::abs(radPos - it->radiusPos); + float diff = std::abs(radPos - it->radiusPos); - //if (diff > 0.05){ - // Base::Console().Log("requested pos: %f rad: %f diff: %f\n", radPos, it->radiusPos, diff); - //} + if (diff > 0.05){ + Base::Console().Log("requested pos: %f rad: %f diff: %f\n", radPos, it->radiusPos, diff); + } return it->heightPos; } -bool cSimTool::isInside(const TopoDS_Shape& toolShape, Base::Vector3d pnt, float res) +bool cSimTool::isInside(const TopoDS_Shape& toolShape, Base::Vector3d pnt) { + double tolerance = 0.011; bool checkFace = true; TopAbs_State stateIn = TopAbs_IN; try { BRepClass3d_SolidClassifier solidClassifier(toolShape); gp_Pnt vertex = gp_Pnt(pnt.x, pnt.y, pnt.z); - solidClassifier.Perform(vertex, res); + solidClassifier.Perform(vertex, tolerance); bool inside = (solidClassifier.State() == stateIn); if (checkFace && solidClassifier.IsOnAFace()){ inside = true;