Files
DataBeamWall/ShowSolid.lua
Dario Sassi b5fe2461bc DataBeamWall :
- eliminato modulo SolidProcess pechè già da tempo le sue funzioni sono svolte nel programma
- in ShowSolid aggiunta gestione modalità tutti i pezzi mediante riconoscimento pressione tasto Shift.
2024-05-03 11:34:17 +02:00

64 lines
2.1 KiB
Lua

-- 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