CAMAuto :

- gestione offset in X tenendo conto dei tagli obliqui.
This commit is contained in:
Annamaria Sassi
2026-05-29 12:28:23 +02:00
parent b896c3551d
commit b156c2d282
+12 -7
View File
@@ -205,7 +205,7 @@ function WinExec.AddApplyResultToGlobalList( nErr, idCut, sMsg)
end
-------------------------------------------------------------------------------------------------------------
-- *** Inserimento delle lavorazioni nelle travi ***
-- *** Inserimento delle lavorazioni nei pezzi ***
-------------------------------------------------------------------------------------------------------------
local function CollectFeatures( vProc, Part, nIndexPart)
@@ -488,7 +488,7 @@ local function UpdateRawPosition( PARTS)
end
-------------------------------------------------------------------------------------------------------------
local function CheckAndMovePawPart( nIdRawToMove, vtMove)
local function CheckAndMoveRawPart( nIdRawToMove, vtMove)
EgtMoveRawPart( nIdRawToMove, vtMove)
end
@@ -506,7 +506,7 @@ function WinExec.ProcessFeatures( PARTS)
-- si recuperano tutte le feature di tutti i pezzi in una lista unica
for nPart = 1, #PARTS do
-- recupero le feature di lavorazione della trave
-- recupero le feature di lavorazione dei pezzi
vProc = CollectFeatures( vProc, PARTS[nPart], nPart)
-- recupero informazioni ausiliarie feature e dipendenze tra feature dello stesso pezzo
@@ -525,6 +525,11 @@ function WinExec.ProcessFeatures( PARTS)
-- ordina le lavorazioni
OrderMachining( MACHININGS)
local maxOffsetX = {}
for i = 1, #PARTS do
maxOffsetX[i] = 99 - PARTS[i].OffsetPartToRaw.X
end
for i = 1, #MACHININGS do
if MACHININGS[i].AuxiliaryData.nPhase == 1 then
@@ -532,7 +537,7 @@ function WinExec.ProcessFeatures( PARTS)
local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento?
-- se feature di testa, sposto testa in base a ingombro lavorazione
if MACHININGS[i].Proc.bHeadProfile and b3MachEncumbrance then
PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5
PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase1.dOffsetX = min( b3MachEncumbrance:getMax():getX() - PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMin():getX() + 5, maxOffsetX[MACHININGS[i].Proc.nIndexPart])
end
end
end
@@ -545,7 +550,7 @@ function WinExec.ProcessFeatures( PARTS)
-- TODO controllare calcolo ingombro
local vtMove = Vector3d( - PARTS[i].DispOffsets.Phase1.dOffsetX, 0, 0)
if vtMove ~= V_NULL() then
CheckAndMovePawPart( PARTS[i].idRaw, vtMove)
CheckAndMoveRawPart( PARTS[i].idRaw, vtMove)
end
end
@@ -558,7 +563,7 @@ function WinExec.ProcessFeatures( PARTS)
local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i]) -- TODO ingombro lavorazione mi restituisce dati sbagliati. C'è un riferimento?
-- se feature di testa, sposto testa in base a ingombro lavorazione
if MACHININGS[i].Proc.bHeadProfile and b3MachEncumbrance then
PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5
PARTS[MACHININGS[i].Proc.nIndexPart].DispOffsets.Phase2.dOffsetX = min( PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - b3MachEncumbrance:getMin():getX() + 5, 94)
end
end
end
@@ -567,7 +572,7 @@ function WinExec.ProcessFeatures( PARTS)
-- TODO controllare calcolo ingombro
local vtMove = Vector3d( PARTS[i].DispOffsets.Phase2.dOffsetX, 0, 0)
if vtMove ~= V_NULL() then
CheckAndMovePawPart( PARTS[i].idRaw, vtMove)
CheckAndMoveRawPart( PARTS[i].idRaw, vtMove)
end
end