-- ShowSolid.lua by Egaltech s.r.l. 2024/05/01 -- Gestione calcolo solido di una Trave require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- Se premuto Shift devo processare tutti i pezzi del progetto if EgtGetKeyPressed( GEN_VK.SHIFT) then local nPartTot = EgtGetPartCount() local nPartCnt = 0 local bShow local PartId = EgtGetFirstPart() while PartId do -- recupero l'eventuale solido del pezzo local SolidId = EgtBeamGetSolid( PartId) -- se primo pezzo, recupero lo stato if bShow == nil then if SolidId and EgtGetInfo( SolidId, 'VALID') and EgtGetCalcStatus( SolidId) ~= GDB_ST.OFF then bShow = false else bShow = true end end -- se da visualizzazione e necessario eseguo eventuale calcolo if bShow and ( not SolidId or not EgtGetInfo( SolidId, 'VALID')) then EgtBeamCalcSolid( PartId, true) end -- aggiorno visualizzazione EgtBeamShowSolid( PartId, bShow) EgtDraw() nPartCnt = nPartCnt + 1 if EgtProcessEvents( nPartCnt / nPartTot * 100, 10) == 1 then break end -- passo al pezzo successivo PartId = EgtGetNextPart( PartId) end -- altrimenti solo il pezzo selezionato else -- 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() -- Se il solido giĆ  esiste, ne aggiorno lo stato di visualizzazione local SolidId = EgtBeamGetSolid( PartId) if SolidId and EgtGetInfo( SolidId, 'VALID') then EgtBeamShowSolid( PartId, ( EgtGetCalcStatus( SolidId) == GDB_ST.OFF)) EgtDraw() return end -- Creazione e visualizzazione del solido EgtBeamCalcSolid( PartId, true) EgtBeamShowSolid( PartId, true) -- Aggiorno visulaizzazione EgtDraw() end -- end