- in LeadInOutLib corretto accorciamento per lati chiusi confinanti con lati inclinati
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user