- in tutte le strategie di base accorciamento percorsi corretto (non funzionava in caso di utensile che entra più del raggio)

- piccole correzioni e migliorie varie
This commit is contained in:
luca.mazzoleni
2026-06-23 17:49:33 +02:00
parent c56c5f4522
commit 3e74e7f1e2
4 changed files with 41 additions and 32 deletions
+14 -13
View File
@@ -20,14 +20,7 @@ local function GetExtraAddLengthInclinedSides( Face, Edge)
return 0, 0
end
local nPreviousEdgeIndex = Edge.id + 1 - 1
if nPreviousEdgeIndex < 1 then
nPreviousEdgeIndex = #Face.Edges
end
local nNextEdgeIndex = Edge.id + 1 + 1
if nNextEdgeIndex > #Face.Edges then
nNextEdgeIndex = 1
end
local nPreviousEdgeIndex, nNextEdgeIndex = BeamLib.GetAdjacentIndices( Edge.id + 1, #Face.Edges)
local vtEdgePrevious = Face.Edges[nPreviousEdgeIndex].vtEdge
local vtEdgeNext = Face.Edges[nNextEdgeIndex].vtEdge
@@ -99,6 +92,14 @@ local function CalculateLeadInOutLength( ptToolCenter, vtNFace, b3Box, vtLeadInO
end
-------------------------------------------------------------------------------------------------------------
local function GetToolAddLength( dToolDiameter, dDepthToMachine)
local dCheckDepth = min( dToolDiameter / 2, dDepthToMachine)
local dToolAddLength = sqrt( dCheckDepth * dToolDiameter - dCheckDepth * dCheckDepth)
return dToolAddLength
end
-------------------------------------------------------------------------------------------------------------
function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters, OptionalParameters)
@@ -118,7 +119,7 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters, OptionalPa
local bIsEndClosed = not Edge.bIsEndOpen
-- accorciamento per lati chiusi
LeadInOut.dToolMarkLength = sqrt( dDepthToMachine * Tool.dDiameter - dDepthToMachine * dDepthToMachine)
LeadInOut.dToolAddLength = GetToolAddLength( Tool.dDiameter, dDepthToMachine)
LeadInOut.dExtraAddLengthStart, LeadInOut.dExtraAddLengthEnd = GetExtraAddLengthInclinedSides( Face, Edge)
-- allungamento per faccia singola (aperta in tutte le direzioni)
LeadInOut.dAddedLengthOpenFace = BeamData.CUT_EXTRA
@@ -140,14 +141,14 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters, OptionalPa
-- calcolo allungamenti / accorciamenti
if bIsStartClosed and bIsEndClosed then
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthStart
LeadOut.dEndAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthEnd
LeadIn.dStartAddLength = -LeadInOut.dToolAddLength - LeadInOut.dExtraAddLengthStart
LeadOut.dEndAddLength = -LeadInOut.dToolAddLength - LeadInOut.dExtraAddLengthEnd
elseif bIsStartClosed then
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthStart
LeadIn.dStartAddLength = -LeadInOut.dToolAddLength - LeadInOut.dExtraAddLengthStart
-- eventuale correzione per accorciamento maggiore di larghezza tasca
LeadOut.dEndAddLength = max( -LeadIn.dStartAddLength - Edge.dLength + 10 * BeamData.CUT_EXTRA, BeamData.CUT_EXTRA)
elseif bIsEndClosed then
LeadOut.dEndAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthEnd
LeadOut.dEndAddLength = -LeadInOut.dToolAddLength - LeadInOut.dExtraAddLengthEnd
-- eventuale correzione per accorciamento maggiore di larghezza tasca
LeadIn.dStartAddLength = max( -LeadOut.dEndAddLength - Edge.dLength + 10 * BeamData.CUT_EXTRA, BeamData.CUT_EXTRA)
else