-- 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 bIgnoreGrainDirection = OptionalParameters.bIgnoreGrainDirection or false local ClosingFacesAgainstGrain1 = {} for i = 1, #Face.Edges do local CurrentFace = Proc.Faces[Face.Edges[i].idAdjacentFace + 1] if ( not Face.Edges[i].bIsOpen) and ( ( abs( CurrentFace.vtN:getX()) > 0.707) or bIgnoreGrainDirection) then table.insert( ClosingFacesAgainstGrain1, CurrentFace) end end for i = 1, #ClosingFacesAgainstGrain1 do local EdgeToMachine = {} for j = 1, #ClosingFacesAgainstGrain1[i].Edges do if ClosingFacesAgainstGrain1[i].Edges[j].idAdjacentFace == Face.id then EdgeToMachine = ClosingFacesAgainstGrain1[i].Edges[j] break end end local Cutting = {} local OptionalParametersFaceByBlade = { bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = dExtendAfterTail} Cutting = FaceByBlade.Make( Proc, Part, ClosingFacesAgainstGrain1[i], EdgeToMachine, OptionalParametersFaceByBlade) Cutting.nInternalSortingPriority = nInternalSortingPriority Cutting.dResultWeight = dResultWeight table.insert( Machinings, Cutting) end return Machinings end ------------------------------------------------------------------------------------------------------------- return ANTISPLINTONFACE