diff --git a/LuaLibs/DiceCut.lua b/LuaLibs/DiceCut.lua index 8847ad0..c148f2e 100644 --- a/LuaLibs/DiceCut.lua +++ b/LuaLibs/DiceCut.lua @@ -153,6 +153,7 @@ local function GetOrtoCutCenter( FacetId, ptC, vtN, vtO, dOffsetEff, dNzLimDownU local dWidth = Box:getDimY() -- se faccia non troppo lunga, con un lato piccolo e non diretta troppo verso il basso, non servono dice + -- TODO si può eliminare questo test dato che vengono verificate già volume e dimensione del cubetto?? local dMaxLen = BeamData.MAX_LEN_DICE or 600 if dLen < dMaxLen and dWidth < dMaxLen and ( dLen < dOffsetEff + 1.0 or dWidth < dOffsetEff + 1.0) and vtN:getZ() > dNzLimDownUp then @@ -421,6 +422,8 @@ function DiceCut.GetDice( Part, Face1, Face2, OptionalParameters) local dOffsetParallel = OptionalParameters.dOffsetParallel or BeamData.MAX_DIM_DICE -- distanza tra piani ortogonali local dOffsetOrthogonal = OptionalParameters.dOffsetOrthogonal or BeamData.MAX_DIM_DICE + -- distanza ridotta tra piani ortogonali - usato in tagli orizzontali con affondamento verticale + local dOffsetOrthogonalReduced = OptionalParameters.dOffsetOrthogonalReduced or BeamData.MAX_DIM_HTCUT -- numero massimo piani paralleli local nStepParallel = OptionalParameters.nStepParallel or 100 -- numero massimo piani perpendicolari @@ -442,6 +445,12 @@ function DiceCut.GetDice( Part, Face1, Face2, OptionalParameters) dElevO = DistanzaMassima( nAddGrpId, ptCSubordinateFace, vtNSubordinateFace, ptCMainFace, vtNMainFace, b3BoxDicing, TBoxPoint) end + -- TODO parte sotto da aggiungere???? se sì va passata anche la dimensione cubetto ridotta dOffsetOrthogonalReduced + -- se non c'è testa da sotto e normali senza componenti in Y con faccia quasi verticale e trave non alta, uso per offset i limiti dei tagli di testa e coda + -- if not BD.TURN and not BD.DOWN_HEAD and abs( vtNPlanes:getY()) < 0.1 and vtNPlanes:getZ() < 0.7071 and ( not vtNBond or abs( vtNBond:getY()) < 0.1) and BBoxRawPart:getDimZ() < BD.MIN_DIM_HBEAM then + -- dOffsetOrthogonal = dOffsetOrthogonalReduced + -- end + -- aggiungo piccolo extra agli offset dOffsetParallel = dOffsetParallel + 10 * GEO.EPS_SMALL dOffsetOrthogonal = dOffsetOrthogonal + 10 * GEO.EPS_SMALL diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index 6ae1f0f..952eb33 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -179,8 +179,23 @@ function BLADETOWASTE.Make( ProcOrId, Part, OptionalParameters) nToolIndex = GetBestBladeForDicing( Proc, Part, Face1, OptionalParameters) end + -- se non trovata lama la lavorazione non è fattibile + if not nToolIndex then + return Result, dCompletionPercentage + end + + -- calcolo dimensione cubetto e eventuale cubetto ridotto (tagli orizzontali con affondamento verticale) + local dDiceDimension = min( TOOLS[nToolIndex].dMaxMaterial, BeamData.MAX_DIM_DICE) + local dDiceDimensionReduced = dDiceDimension + if TOOLS[nToolIndex].SetupInfo.dMaxMatDecrease then + dDiceDimensionReduced = min( dDiceDimension, dDiceDimension - TOOLS[nToolIndex].SetupInfo.dMaxMatDecrease) + end + -- calcolo cubetti local OptionalParametersDiceCut = {} + OptionalParametersDiceCut.dOffsetParallel = dDiceDimension + OptionalParametersDiceCut.dOffsetOrthogonal = dDiceDimension + OptionalParameters.dOffsetOrthogonalReduced = dDiceDimensionReduced local vCuts = DiceCut.GetDice( Part, Face1, Face2, OptionalParametersDiceCut)