Files
Carlo Baronchelli 741791a0e4 Copia locale Iniziale
2022-05-19 16:04:07 +02:00

97 lines
2.6 KiB
Lua

-- CompactId.lua 2018/04/21
-- Non funziona in presenza di lavorazioni
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
-- funzione per spostare gli Id
local function ChangeAllId( nBase, nFirstId, vTab)
local nNewId = nFirstId
local nId = EgtGetFirstInGroup( nBase)
while nId do
EgtChangeId( nId, nNewId)
vTab[nId] = nNewId
nId = nNewId
nNewId = nNewId + 1
if EgtGetType( nId) == GDB_TY.GROUP then
nNewId = ChangeAllId( nId, nNewId, vTab)
end
nId = EgtGetNext( nId)
end
return nNewId
end
-- funzione per aggiornare un riferimento agli Id
local function UpdateRefId( nId, sKey, vTab)
local sVal = EgtGetInfo( nId, sKey)
if sVal then
local sNewVal = ''
local vVal = EgtSplitString( sVal, ',')
for i = 1, #vVal do
local nRefId = tonumber( vVal[i])
local nNewRefId = vTab[nRefId]
sNewVal = sNewVal .. EgtIf( i > 1, ',', '') .. tostring( nNewRefId)
end
EgtSetInfo( nId, sKey, sNewVal)
end
end
-- funzione per aggiornare riferimenti agli Id
local function UpdateAllRefId( nBase, vTab)
local nId = EgtGetFirstInGroup( nBase)
while nId do
UpdateRefId( nId, '!SOU', vTab)
UpdateRefId( nId, '!BAS', vTab)
UpdateRefId( nId, '!LST', vTab)
if EgtGetType( nId) == GDB_TY.GROUP then
UpdateAllRefId( nId, vTab)
end
nId = EgtGetNext( nId)
end
end
-- funzione per aggiornare gli identificativi dei grezzi nelle disposizioni
-- DA FARE : manca funzione Egt per cambiare id grezzi disposizioni
-- funzione per aggiornare i riferimenti geometrici delle lavorazioni
-- DA FARE
-- devo essere in modalità disegno
if EgtGetCurrMachGroup() then
EgtOutBox( 'Non è possibile compattare gli Id in LAVORA', 'CompactId', 'WARNING')
return
end
-- per ora richiedo non ci siano gruppi di lavorazione
if EgtGetMachGroupCount() > 0 then
EgtOutBox( 'Non è possibile compattare gli Id in progetti con Gruppi di Lavoro', 'CompactId', 'WARNING')
return
end
-- elimino l'eventuale gruppo delle macchine
EgtErase( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'MachAux') or GDB_ID.NULL)
-- recupero Id Max
local nNextId = EgtGetNewId()
-- sposto tutti gli Id dal Max in su
local vTab = {}
ChangeAllId( GDB_ID.ROOT, nNextId, vTab)
-- sposto gli Id in basso
local vTab2 = {}
ChangeAllId( GDB_ID.ROOT, 1, vTab2)
for k, v in pairs( vTab) do
vTab[k] = vTab2[v]
end
-- aggiorno i riferimenti agli Id nelle Info
UpdateAllRefId( GDB_ID.ROOT, vTab)
-- aggiorni i roferimenti agli Id nelle disposizioni
-- aggiorno i riferimenti agli Id nelle lavorazioni