- in LeadInOutLib corretto accorciamento per lati chiusi confinanti con lati inclinati

This commit is contained in:
luca.mazzoleni
2026-01-09 16:22:10 +01:00
parent fe309e338b
commit 667da4e3d1
2 changed files with 36 additions and 7 deletions
+35 -5
View File
@@ -7,9 +7,38 @@ local LeadInOutLib = {}
-- Include
require( 'EgtBase')
local BeamData = require( 'BeamDataNew')
local FaceData = require( 'FaceData')
EgtOutLog( ' LeadInOutLib started', 1)
-------------------------------------------------------------------------------------------------------------
local function GetExtraAddLengthInclinedSides( Face, Edge)
-- se faccia rettangolare i lati sono tutti a 90deg, inutile fare conti
if FaceData.IsFaceRectangle( Face) then
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 vtEdgePrevious = Face.Edges[nPreviousEdgeIndex].vtEdge
local vtEdgeNext = Face.Edges[nNextEdgeIndex].vtEdge
local dLengthEdgePrevious = Face.Edges[nPreviousEdgeIndex].dLength
local dLengthEdgeNext = Face.Edges[nNextEdgeIndex].dLength
local dExtraPrevious = dLengthEdgePrevious * ( Edge.vtEdge * -vtEdgePrevious)
local dExtraNext = dLengthEdgeNext * ( -Edge.vtEdge * vtEdgeNext)
return dExtraPrevious, dExtraNext
end
-------------------------------------------------------------------------------------------------------------
local function GetPerpendicularLeadInOutDirection( Face, Edge)
@@ -83,8 +112,9 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters)
local bIsStartClosed = not Edge.bIsStartOpen
local bIsEndClosed = not Edge.bIsEndOpen
-- accorciamento per lati chiusi (è sempre l'impronta utensile)
-- accorciamento per lati chiusi
LeadInOut.dToolMarkLength = sqrt( dDepthToMachine * Tool.dDiameter - dDepthToMachine * dDepthToMachine)
LeadInOut.dExtraAddLengthStart, LeadInOut.dExtraAddLengthEnd = GetExtraAddLengthInclinedSides( Face, Edge)
-- allungamento per faccia singola (aperta in tutte le direzioni)
LeadInOut.dAddedLengthOpenFace = BeamData.CUT_EXTRA
@@ -105,14 +135,14 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters)
-- calcolo allungamenti / accorciamenti
if bIsStartClosed and bIsEndClosed then
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength
LeadOut.dEndAddLength = -LeadInOut.dToolMarkLength
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthStart
LeadOut.dEndAddLength = -LeadInOut.dToolMarkLength - LeadInOut.dExtraAddLengthEnd
elseif bIsStartClosed then
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength
LeadIn.dStartAddLength = -LeadInOut.dToolMarkLength - 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
LeadOut.dEndAddLength = -LeadInOut.dToolMarkLength - 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