-- Strategia: FACEBYBLADE -- Descrizione -- Strategia di base per la lavorazione delle facce con lama -- carico librerie local FaceByBlade = require( 'FACEBYBLADE') -- Tabella per definizione modulo local ANTISPLINTONFACE = {} ------------------------------------------------------------------------------------------------------------- function ANTISPLINTONFACE.Make( Proc, Part, Face, OptionalParameters) local Machinings = {} -- parametri opzionali if not OptionalParameters then OptionalParameters = {} end local bIsSplitFeature = OptionalParameters.bIsSplitFeature or false local dExtendAfterTail = OptionalParameters.dExtendAfterTail or 10000 local nInternalSortingPriority = OptionalParameters.nInternalSortingPriority or 1 local dResultWeight = OptionalParameters.dResultWeight or 0.15 local bMachineAllClosedEdges = OptionalParameters.bMachineAllClosedEdges or false local ClosingFacesAgainstGrain = {} for i = 1, #Face.Edges do local CurrentFace = Proc.Faces[Face.Edges[i].idAdjacentFace + 1] if ( not Face.Edges[i].bIsOpen) and ( Face.Edges[i].bIsStartOpen or Face.Edges[i].bIsEndOpen or bMachineAllClosedEdges) then table.insert( ClosingFacesAgainstGrain, CurrentFace) end end for i = 1, #ClosingFacesAgainstGrain do local EdgeToMachine = {} for j = 1, #ClosingFacesAgainstGrain[i].Edges do if ClosingFacesAgainstGrain[i].Edges[j].idAdjacentFace == Face.id then EdgeToMachine = ClosingFacesAgainstGrain[i].Edges[j] break end end local Cutting = {} local OptionalParametersFaceByBlade = { bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = dExtendAfterTail} Cutting = FaceByBlade.Make( Proc, Part, ClosingFacesAgainstGrain[i], EdgeToMachine, OptionalParametersFaceByBlade) Cutting.nInternalSortingPriority = nInternalSortingPriority Cutting.dResultWeight = dResultWeight table.insert( Machinings, Cutting) end return Machinings end ------------------------------------------------------------------------------------------------------------- return ANTISPLINTONFACE