Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8660ae3742 | |||
| 3c0d1c9593 |
+19
-18
@@ -54,6 +54,7 @@
|
||||
-- 2023/11/30 Migliorato il calcolo elevazione con l'utilizzo della nuova funzione EgtSurfTmFacetElevationInBBox.
|
||||
-- 2023/12/26 Modifiche per centrare i pezzi in Y sulla tavola.
|
||||
-- 2024/02/26 Migliorata 'CompareFeatures' per ordine lavorazioni
|
||||
-- Migliorata 'CompareFeatures' per ordine forature
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local BeamExec = {}
|
||||
@@ -786,8 +787,8 @@ local function OrderFeatures( vProc, b3Raw)
|
||||
if Hcut.Identify( B2) then
|
||||
return false
|
||||
end
|
||||
-- se uno di testa e non l'altro, privilegio quello di testa
|
||||
if B1.Head ~= B2.Head then
|
||||
-- se uno di testa e non l'altro, privilegio quello di testa (a meno che non siano dei fori)
|
||||
if B1.Head ~= B2.Head and not Drill.Identify(B1) and not Drill.Identify(B2) then
|
||||
return B1.Head
|
||||
end
|
||||
-- se entrambi di testa e intersecano stesse facce e primo è scasso a due facce e secondo è un profilo caudato, lo scasso è una riduzione e va fatto prima
|
||||
@@ -816,11 +817,21 @@ local function OrderFeatures( vProc, b3Raw)
|
||||
if B2.AdvTail and ( not Split.Identify( B1) or not B1.Tail) then
|
||||
return true
|
||||
end
|
||||
-- se primo è feature di coda e l'altro è separazione o non è feature di coda
|
||||
-- se primo è foro e secondo è un ribasso, il foro va sempre prima
|
||||
if Drill.Identify(B1) and ( LapJoint.Identify(B2) or Mortise.Identify(B2)) and
|
||||
B1.Box:getCenter():getX() > B2.Box:getMin():getX() and B1.Box:getCenter():getX() < B2.Box:getMax():getX() then
|
||||
return true
|
||||
end
|
||||
-- se primo è un ribasso e secondo è un foro, il ribasso va sempre dopo
|
||||
if ( LapJoint.Identify(B1) or Mortise.Identify(B1)) and Drill.Identify(B2) and
|
||||
B2.Box:getCenter():getX() > B1.Box:getMin():getX() and B2.Box:getCenter():getX() < B1.Box:getMax():getX() then
|
||||
return false
|
||||
end
|
||||
-- se primo è feature di coda e l'altro è separazione o non è feature di coda (e non sono dei fori)
|
||||
if B1.Tail and ( Split.Identify( B2) or not B2.Tail) then
|
||||
return false
|
||||
end
|
||||
-- se secondo è feature di coda e l'altro è separazione o non è feature di coda
|
||||
-- se secondo è feature di coda e l'altro è separazione o non è feature di coda (e non sono dei fori)
|
||||
if B2.Tail and ( Split.Identify( B1) or not B1.Tail) then
|
||||
return true
|
||||
end
|
||||
@@ -835,11 +846,11 @@ local function OrderFeatures( vProc, b3Raw)
|
||||
return true
|
||||
end
|
||||
-- se entrambi di coda e il primo è una feature taglio di lama e il secondo no, feature taglio lama sempre prima
|
||||
if B1.Tail and B2.Tail and ( B1.Prc == 10 or B1.Prc == 11) and ( B2.Prc ~= 10 and B2.Prc ~= 11) then
|
||||
if B1.Tail and B2.Tail and ( Cut.Identify( B1) or DoubleCut.Identify( B1)) and ( not Cut.Identify( B2) and not DoubleCut.Identify( B2)) then
|
||||
return true
|
||||
end
|
||||
-- se entrambi di coda e il secondo è una feature taglio di lama e il primo no, feature taglio lama sempre prima
|
||||
if B1.Tail and B2.Tail and ( B2.Prc == 10 or B2.Prc == 11) and ( B1.Prc ~= 10 and B1.Prc ~= 11) then
|
||||
if B1.Tail and B2.Tail and ( Cut.Identify( B2) or DoubleCut.Identify( B2)) and ( not Cut.Identify( B1) and not DoubleCut.Identify( B1)) then
|
||||
return false
|
||||
end
|
||||
-- se primo è taglio longitudinale completo o altra lav. lunga, dopo tutte le altre feature non di coda
|
||||
@@ -859,22 +870,12 @@ local function OrderFeatures( vProc, b3Raw)
|
||||
if abs( B2.Box:getDimX() - b3Raw:getDimX()) < 0.2 * b3Raw:getDimX() then
|
||||
return not ( B1.Tail or B2.Box:getMin():getX() + 20 > B1.Box:getCenter():getX())
|
||||
end
|
||||
-- se primo è foro e secondo è un ribasso, il foro va sempre prima
|
||||
if Drill.Identify(B1) and ( LapJoint.Identify(B2) or Mortise.Identify(B2)) and
|
||||
B1.Box:getCenter():getX() > B2.Box:getMin():getX() and B1.Box:getCenter():getX() < B2.Box:getMax():getX() then
|
||||
return true
|
||||
end
|
||||
-- se primo è un ribasso e secondo è un foro, il ribasso va sempre dopo
|
||||
if (LapJoint.Identify(B1) or Mortise.Identify(B1)) and Drill.Identify(B2) and
|
||||
B2.Box:getCenter():getX() > B1.Box:getMin():getX() and B2.Box:getCenter():getX() < B1.Box:getMax():getX() then
|
||||
return false
|
||||
end
|
||||
-- se primo è foro e l'altro no, lo penalizzo
|
||||
if B1.Prc == 40 and B2.Prc ~= 40 then
|
||||
if Drill.Identify(B1) and not Drill.Identify(B2) then
|
||||
return ( B1.Box:getCenter():getX() > B2.Box:getMax():getX() + dDrillPenalty)
|
||||
end
|
||||
-- se primo è altro e secondo è foro, lo premio
|
||||
if B1.Prc ~= 40 and B2.Prc == 40 then
|
||||
if not Drill.Identify(B1) and Drill.Identify(B2) then
|
||||
return ( B1.Box:getMax():getX() + dDrillPenalty > B2.Box:getCenter():getX())
|
||||
end
|
||||
-- se prima è mortasa coda di rondine sul fianco e secondo taglio longitudinale, la coda di rondine va sempre prima
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
-- 2023/07/21 Correzioni per mortise passanti con curva Aux che guarda in basso.
|
||||
-- 2023/08/10 Modificata scelta SCC per tasche in Y+/- in coda o quasi.
|
||||
-- 2024/01/18 Implementata GetBlockedAxis che gestisce gli assi bloccati per tutti i tipi di utensile.
|
||||
-- 2024/02/28 Forzata SPIRAL_IN se c'è anche un solo lato aperto
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessMortise = {}
|
||||
@@ -463,6 +464,13 @@ function ProcessMortise.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH)
|
||||
if bRevertSide then
|
||||
EgtSetMachiningParam( MCH_MP.TOOLINVERT, true)
|
||||
end
|
||||
|
||||
-- se ho anche solo un lato aperto, forzo SPIRAL-IN
|
||||
local vOpen = EgtGetInfo( AuxId, 'OPEN', 'vi')
|
||||
if vOpen and #vOpen > 0 then
|
||||
EgtSetMachiningParam( MCH_MP.SUBTYPE, MCH_POCK_SUB.SPIRALIN)
|
||||
end
|
||||
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ AuxId, -1}})
|
||||
-- sistemo la direzione di lavoro
|
||||
|
||||
Reference in New Issue
Block a user