-- ShowSolid.lua by Egaltech s.r.l. 2019/11/22 -- Gestione calcolo solido di una Trave require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- Funzione per visualizzazione del solido o standard local function Show( PartId, bSolid) local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') EgtSetStatus( BoxLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) local OutlineLy = EgtGetFirstNameInGroup( PartId, 'Outline') EgtSetStatus( OutlineLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) local ProcessingsLy = EgtGetFirstNameInGroup( PartId, 'Processings') EgtSetStatus( ProcessingsLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') EgtSetStatus( SolidLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.ON, GDB_ST.OFF)) end -- Recupero il pezzo del primo oggetto selezionato local ObjId = EgtGetFirstSelectedObj() local PartId = EgtGetParent( EgtGetParent( ObjId or GDB_ID.NULL) or GDB_ID.NULL) if not PartId or not EgtIsPart( PartId) then EgtOutBox( 'Nessuna trave selezionata', 'Show Solid', 'ERROR') return end EgtDeselectAll() -- Recupero il Box local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') local BoxId = EgtGetFirstNameInGroup( BoxLy or GDB_ID.NULL, 'Box') if not BoxId then EgtOutBox( 'Trave senza Box', 'Show Solid', 'ERROR') return end -- Verifico esistenza del solido local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') if not SolidLy then SolidLy = EgtGroup( PartId) EgtSetName( SolidLy, 'Solid') end local SolidId = EgtGetFirstNameInGroup( SolidLy, 'Solid') if not SolidId then SolidId = EgtCopyGlob( BoxId, SolidLy) EgtSetName( SolidId, 'Solid') EgtSetColor( SolidId, Color3d( 228, 196, 64)) Show( PartId, true) else Show( PartId, ( EgtGetStatus( SolidLy) == GDB_ST.OFF)) EgtDraw() return end -- Ciclo sulle features local ProcLy = EgtGetFirstNameInGroup( PartId, 'Processings') local ProcId = EgtGetFirstInGroup( ProcLy) while ProcId do if EgtGetInfo( ProcId, 'DO', 'i') ~= 0 and EgtGetType( ProcId) == GDB_TY.SRF_MESH then EgtSurfTmIntersect( SolidId, ProcId) end ProcId = EgtGetNext( ProcId) end EgtDraw()