- in BLADETOWASTE si passano i dati corretti alla DiceCut; manca calcolo lavorazioni su facce con relativo calcolo vtToolDirection ad ogni faccia

- in DiceCut aggiunta condizione, al momento commentata, per usare la dimensione cubetto ridotta in caso di faccia quasi verticale senza componenti in Y
This commit is contained in:
luca.mazzoleni
2025-02-28 16:40:49 +01:00
parent 8f1f99a628
commit bbf28a2ed7
2 changed files with 24 additions and 0 deletions
+9
View File
@@ -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
+15
View File
@@ -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)