9a3274b56c
- introduzione chiamata nuove funzioni multithread per calcolo solidi.
43 lines
1.4 KiB
Lua
43 lines
1.4 KiB
Lua
-- ShowSolid.lua by Egaltech s.r.l. 2025/10/12
|
|
-- 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
|
|
-- dal primo pezzo riconosco se da visualizzare o nascondere
|
|
local SolidId = EgtBeamGetSolid( EgtGetFirstPart() or GDB_ID.NULL)
|
|
local bShow = not ( SolidId and EgtGetInfo( SolidId, 'VALID') and EgtGetCalcStatus( SolidId) ~= GDB_ST.OFF)
|
|
if bShow then
|
|
EgtBeamCalcAllSolids( true)
|
|
else
|
|
EgtBeamShowAllSolids( false)
|
|
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 |