b5fe2461bc
- 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.
64 lines
2.1 KiB
Lua
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 |