-- ShowBuilding.lua by Egaltech s.r.l. 2018/11/21 -- Gestione visualizzazione travi come struttura -- Intestazioni require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- recupero il gruppo di assemblaggio local AsseBaseId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'AsseBase') if not AsseBaseId then return end -- recupero il primo oggetto nel gruppo e verifico se devo assemblare o disassemblare local AsseId = EgtGetFirstInGroup( AsseBaseId) if not AsseId then return end local bMake = ( EgtGetGroupObjs( AsseId) == 0) -- ciclo sul gruppo di assemblaggio while AsseId do -- salvo il successivo nel gruppo dell'assemblato local NextId = EgtGetNext( AsseId) -- costruisco l'assemblato if bMake then -- recupero il pezzo sorgente local SouId = EgtGetInfo( AsseId, GDB_SI.SOURCE, 'i') if SouId then EgtSetMode( SouId, GDB_MD.STD) EgtSetStatus( SouId, GDB_ST.ON) -- se giĆ  utilizzato, ne faccio una copia if not EgtIsPart( SouId) then local CopyId = EgtCopy( SouId, GDB_ID.ROOT) if CopyId then EgtRemoveInfo( CopyId, GDB_SI.BASE) EgtRemoveInfo( CopyId, GDB_SI.LIST) EgtSetInfo( CopyId, GDB_SI.COPY, SouId) SouId = CopyId EgtSetInfo( AsseId, GDB_SI.SOURCE, SouId) end end EgtSetStatus( EgtGetFirstNameInGroup( SouId, 'Box') or GDB_ID.NULL, GDB_ST.OFF) EgtGroupSwap( SouId, AsseId, true, true) end -- ritorno ai pezzi else local BasId = EgtGetInfo( AsseId, GDB_SI.BASE, 'i') if BasId then EgtGroupSwap( AsseId, BasId, true, true) local CopId = EgtGetInfo( AsseId, GDB_SI.COPY, 'i') if CopId then EgtErase( AsseId) EgtSetInfo( BasId, GDB_SI.SOURCE, CopId) else EgtSetStatus( EgtGetFirstNameInGroup( AsseId, 'Box') or GDB_ID.NULL, GDB_ST.ON) end end end -- passo al successivo AsseId = NextId end EgtZoom( SCE_ZM.ALL) -- end