DataWall :

- migliorie a nesting
- aggiunta gestione prefori
- migliorie a rifinitura tagli inclinati.
This commit is contained in:
DarioS
2022-02-23 10:43:55 +01:00
parent 68be7a5b4a
commit b484872281
5 changed files with 302 additions and 116 deletions
+33 -6
View File
@@ -112,9 +112,9 @@ function WPF.FlipClassify( Proc, b3Raw)
nFlip1 = 100
elseif dVtNZMedia >= 0 + GEO.EPS_SMALL then
nFlip0 = 75
nFlip1 = 25
nFlip1 = 50
else
nFlip0 = 25
nFlip0 = 50
nFlip1 = 75
end
end
@@ -1245,6 +1245,19 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
end
end
local dEal = vFace[i].Whisk - vFace[i].Len
-- se angolo interno prima e faccia precedente inclinata verso l'alto oltre 16.1deg
if vFace[i].PrevAng < -30 and j and vFace[j].Norm:getZ() < 0.96078 and vFace[j].Norm:getZ() > 0 then
dEal = dEal + vFace[j].Width * vFace[j].Norm:getZ()
end
-- se angolo interno dopo e faccia successiva inclinata verso l'alto oltre 16.1deg
local k = EgtIf( i < #vFace, i + 1, EgtIf( bClosed, 1, nil))
if k and vFace[k].PrevAng < -30 and vFace[k].Norm:getZ() < 0.96078 and vFace[k].Norm:getZ() > 0 then
dEal = dEal + vFace[k].Width * vFace[j].Norm:getZ()
-- se l'inclinazione è inferiore a 46.1deg
if vFace[k].Norm:getZ() > 0.72055 then
dEal = dEal - vFace[k].Width
end
end
EgtSetMachiningParam( MCH_MP.STARTADDLEN, dSal)
EgtSetMachiningParam( MCH_MP.ENDADDLEN, dEal)
-- percorso da non invertire
@@ -1306,6 +1319,7 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
local dSal = EgtIf( ( vFace[i].Type & 2) ~= 0, vFace[i].Whisk - vFace[i].Len, 0)
local dEal = 0
local OrigI = i
local OrigH = j
local LastJ
i = i + 1
local j = EgtIf( i <= #vFace, i, EgtIf( bAllType4 or not bClosed, nil, 1))
@@ -1333,14 +1347,12 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
local dTanA = -tan( vFace[OrigI].PlPrevAng + 90)
dSal = -dMillDiam / 2 * ( 1 + ( 1 + dSinA) * dTanA) + min( 0, vFace[OrigI].Width * vFace[OrigI].Norm:getZ() * dTanA)
-- se faccia precedente inclinata verso il basso
local OrigH = EgtIf( OrigI > 1, OrigI - 1, EgtIf( bClosed, #vFace, nil))
if OrigH and vFace[OrigH].Norm:getZ() < -0.017 then
dSal = dSal + vFace[OrigH].Width * vFace[OrigH].Norm:getZ()
end
-- se angolo esterno prima
elseif vFace[OrigI].PrevAng > 30 then
-- se faccia precedente inclinata verso il basso
local OrigH = EgtIf( OrigI > 1, OrigI - 1, EgtIf( bClosed, #vFace, nil))
if OrigH and vFace[OrigH].Norm:getZ() < -0.017 then
dSal = dSal - vFace[OrigH].Width * vFace[OrigH].Norm:getZ()
end
@@ -1348,8 +1360,8 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
end
-- se lavorazione completa o finale su faccia finale
local LastFace = ( LastJ or OrigI)
if vFace[LastFace].Type == 4 or vFace[LastFace].Type == 2 then
local OrigK = EgtIf( LastFace < #vFace, LastFace + 1, EgtIf( bClosed, 1, nil))
local OrigK = EgtIf( LastFace < #vFace, LastFace + 1, EgtIf( bClosed, 1, nil))
if vFace[LastFace].Type == 4 or ( vFace[LastFace].Type & 2) ~= 0 then
-- se angolo interno dopo
if OrigK and vFace[OrigK].PrevAng < -30 then
local dSinA = -sin( vFace[OrigK].PlPrevAng + 90)
@@ -1367,6 +1379,21 @@ local function AddMillings( sMilling, vFace, Proc, nRawId, b3Raw, nConeCut, nAdd
end
end
end
-- per sola lavorazione finale
if ( vFace[LastFace].Type & 2) ~= 0 then
-- se angolo interno dopo e faccia successiva inclinata verso l'alto oltre 16.1 deg
if OrigK and vFace[OrigK].PrevAng < -30 and vFace[OrigK].Norm:getZ() < 0.96078 and vFace[OrigK].Norm:getZ() > 0 then
dSal = dSal + vFace[OrigK].Width * vFace[OrigK].Norm:getZ()
end
-- se angolo interno prima e faccia precedente inclinata verso l'alto oltre 16.1 deg
if vFace[OrigI].PrevAng < -30 and OrigH and vFace[OrigH].Norm:getZ() < 0.96078 and vFace[OrigH].Norm:getZ() > 0 then
dSal = dSal + vFace[OrigH].Width * vFace[OrigH].Norm:getZ()
-- se l'inclinazione è inferiore a 46.1deg
if vFace[OrigH].Norm:getZ() > 0.72055 then
dSal = dSal - vFace[OrigH].Width
end
end
end
-- se percorso chiuso e completo con fresa
if bClosed and bAllType4 then
dSal = 0