- Crazione strategie di lavorazione (per ora è una per tipo)

- Rimosso da WinExec gestione strategie derivata da Beam
- Pulita Collect da parametri provenienti da BTL
- ProcessFeature semplitifacta. Non contempla rotazioni/ribaltamenti del pezzo
- Aggiunta libreria delle lavorazioni
- Aggiunta libreria identità di una lavorazione
- Aggiunta libreria recupero informazioni feature
- AlignRawsToTable spostata in ProcessWin (prima era nella macchina)
This commit is contained in:
andrea.villa
2024-06-17 17:09:43 +02:00
parent 51ac46ca73
commit 1c00c1224b
11 changed files with 679 additions and 419 deletions
+31 -4
View File
@@ -40,6 +40,7 @@ EgtOutLog( '*** Window Process Start ***', 1)
_G.package.loaded.WinData = nil
_G.package.loaded.WinExec = nil
_G.package.loaded.WinLib = nil
_G.package.loaded.FeatureData = nil
-- TODO controllare se c'è un modo migliore per resettare librerie delle strategie caricate precedentemente
-- Per ottimizzare potremmo anche ciclare solo fino al numero di strategie raggiunto per il momento.
@@ -212,7 +213,33 @@ local function CreateRaws( PARTS)
EgtAddPartToRawPart( PARTS[i].id, ORIG(), PARTS[i].idRaw)
end
end
---------------------------------------------------------------------
-- Allinea i pezzi in base a come devono essere disposti sulla tavola
---------------------------------------------------------------------
-- TODO in questa fase bisogna già sapere qual è la prima fase e posizionare il pezzo di conseguenza
-- TODO (bassa priorità) adesso allinea sempre in X, ma bisognerebbe farlo in base ad un parametro in WINDATA che dice come si dispongono in macchina
local function AlignRawsToTable( PARTS)
for i = 1, #PARTS do
-- allineo il pezzo all'interno del grezzo
local dRotX, dRotY, dRotZ = GetFixedAxesRotABCFromFrame( PARTS[i].frame)
-- se devo ruotare
if dRotZ ~= 0 then
EgtRotatePartInRawPart( PARTS[i].id, Z_AX(), -dRotZ)
-- sposto punto in basso a sinistra del pezzo sul punto in basso a sinistra del grezzo
local dPartPosX = EgtGetBBoxGlob( PARTS[i].id, GDB_BB.STANDARD):getMin():getX()
local dPartPosY = EgtGetBBoxGlob( PARTS[i].id, GDB_BB.STANDARD):getMin():getY()
local dRawPosX = EgtGetRawPartBBox( PARTS[i].idRaw):getMin():getX()
local dRawPosY = EgtGetRawPartBBox( PARTS[i].idRaw):getMin():getY()
local vtMove = Vector3d( dRawPosX - dPartPosX, dRawPosY - dPartPosY, 0)
EgtMovePartInRawPart( PARTS[i].id, vtMove)
end
end
return true
end
-------------------------------------------------------------------------------------------------------------
-- *** Funzione per trovare nome MachGroup ***
-------------------------------------------------------------------------------------------------------------
@@ -244,7 +271,7 @@ local function MyProcessPieces()
CreateRaws( PARTS)
-- allineo i pezzi come orientamento richiesto dalla macchina
WinData.AlignRawsToTable( PARTS)
AlignRawsToTable( PARTS)
-- aggiungo sovramateriale ai grezzi
AddOverMaterialToRaw( PARTS)
@@ -267,7 +294,7 @@ local function MyProcessPieces()
end
-- si dispongono i pezzi sulla tavola
WinData.Disposition( PARTS)
WinData.ExecDisposition( PARTS)
return true
end
@@ -276,7 +303,7 @@ end
-- *** Inserimento delle lavorazioni ***
-------------------------------------------------------------------------------------------------------------
local function MyProcessFeatures()
--local bOk = WinExec.ProcessFeatures( PARTS)
local bOk = WinExec.ProcessFeatures( PARTS)
return true
end