6436826c86
- aggiunto comando ShowSolid - aggiunte tagli antischeggia a LapJoint a U di traverso - piccole migliorie.
66 lines
2.2 KiB
Lua
66 lines
2.2 KiB
Lua
-- 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()
|