Files
3dprinting/LuaLibs/RunShowManager.lua
T
SaraP 0d356741ae 3dPrinting :
- modifiche al calcolo dei solidi.
2022-09-26 17:19:02 +02:00

139 lines
5.9 KiB
Lua

-- RunShowManager.lua by Egaltech s.r.l. 2022/09/15
-- Gestione visualizzazione per Stampa 3d
-- Tabella per definizione modulo
local RunShowManager = {}
-- Intestazioni
require( 'EgtBase')
EgtOutLog( ' RunShowManager started', 1)
-- Costanti generali
local AMD = require( 'AddManData')
-- Librerie
_G.package.loaded.RunCalcSolids = nil
local CSOLIDS = require( 'RunCalcSolids')
---------------------------------------------------------------------
local function ShowImportedSolid( nPartId, bShow)
local nSolidLayId = EgtGetFirstNameInGroup( nPartId, PRINT_SOLID)
EgtSetStatus( nSolidLayId or GDB_ID.NULL, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
local nRibsLayId = EgtGetFirstNameInGroup( nPartId, LAY_RIBS)
EgtSetStatus( nRibsLayId or GDB_ID.NULL, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
local nShellNbrLay = EgtGetFirstNameInGroup( nPartId, LAY_SHELL_NBR)
EgtSetStatus( nShellNbrLay or GDB_ID.NULL, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
local nAuxSolidsLay = EgtGetFirstNameInGroup( nPartId, LAY_AUX_SOLIDS)
EgtSetStatus( nAuxSolidsLay or GDB_ID.NULL, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
end
---------------------------------------------------------------------
function RunShowManager.Exec()
-- Verifico esistenza gruppo stato visualizzazione progetto
local nViewId = EgtGetFirstNameInGroup( GDB_ID.ROOT, VIEWPARAMS)
local bImportedSolid = false
local bOuterCrv = false
local bPath = false
local bSolid = false
local bToolPath = false
if not nViewId then
nViewId = EgtGroup( GDB_ID.ROOT)
EgtSetName( nViewId, VIEWPARAMS)
EgtSetLevel( nViewId, GDB_LV.SYSTEM)
else
bImportedSolid = EgtGetInfo( nViewId, IMPORTED_SOLID, 'b')
bOuterCrv = EgtGetInfo( nViewId, OUTER_CRV, 'b')
bPath = EgtGetInfo( nViewId, PATH_GRP, 'b')
bSolid = EgtGetInfo( nViewId, SOLID_GRP, 'b')
bToolPath = EgtGetInfo( nViewId, TOOLPATH_GRP, 'b')
end
local bCurrImportedSolid = bImportedSolid
local bCurrOuterCrv = bOuterCrv
local bCurrPath = bPath
local bCurrSolid = bSolid
local bCurrToolPath = bToolPath
if EgtGetUserLevel() == 1 then
local ViewValues = EgtDialogBox( 'Show Manager', { 'Imported Solid', 'CK:' .. EgtIf( bImportedSolid, '1', '0')},
{ 'Solid', 'CK:' .. EgtIf( bSolid, '1', '0')},
{ 'ToolPath', 'CK:' .. EgtIf( bToolPath, '1', '0')})
if not ViewValues or #ViewValues < 3 then return end
bCurrImportedSolid = ( ViewValues[1] == '1')
bCurrSolid = ( ViewValues[2] == '1')
bCurrToolPath = ( ViewValues[3] == '1')
else
local ViewValues = EgtDialogBox( 'Show Manager', { 'Imported Solid', 'CK:' .. EgtIf( bImportedSolid, '1', '0')},
{ 'OuterCrv', 'CK:' .. EgtIf( bOuterCrv, '1', '0')},
{ 'Path', 'CK:' .. EgtIf( bPath, '1', '0')},
{ 'Solid', 'CK:' .. EgtIf( bSolid, '1', '0')},
{ 'ToolPath', 'CK:' .. EgtIf( bToolPath, '1', '0')})
if not ViewValues or #ViewValues < 5 then return end
bCurrImportedSolid = ( ViewValues[1] == '1')
bCurrOuterCrv = ( ViewValues[2] == '1')
bCurrPath = ( ViewValues[3] == '1')
bCurrSolid = ( ViewValues[4] == '1')
bCurrToolPath = ( ViewValues[5] == '1')
end
-- ciclo sui pezzi
local nPartIndex = 1
local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex)
while nPartId do
-- eventuale calcolo dei solidi
local bHasSolids = EgtGetInfo( nPartId, KEY_HAS_SOLIDS, 'b') or false
if not bHasSolids and bCurrSolid then
EgtSetInfo( nPartId, KEY_CALC_SOLIDS, true)
CSOLIDS.Exec()
end
if bImportedSolid ~= bCurrImportedSolid then
ShowImportedSolid( nPartId, bCurrImportedSolid)
end
-- ciclo sui layer per dis/attivare il resto
local nLayerIndex = 1
local nLayerId = EgtGetFirstNameInGroup( nPartId, SLICE_LAYER .. nLayerIndex) or EgtGetFirstNameInGroup( nPartId, "__" .. SLICE_LAYER .. nLayerIndex)
while nLayerId do
local nCrvId = EgtGetFirstGroupInGroup( nLayerId)
while nCrvId do
if bOuterCrv ~= bCurrOuterCrv then
local nOuterCrvId = EgtGetFirstNameInGroup( nCrvId, OUTER_CRV)
EgtSetStatus( nOuterCrvId or GDB_ID.NULL, EgtIf( bCurrOuterCrv, GDB_ST.ON, GDB_ST.OFF))
end
if bPath ~= bCurrPath then
local nPathId = EgtGetFirstNameInGroup( nCrvId, PATH_GRP)
EgtSetStatus( nPathId or GDB_ID.NULL, EgtIf( bCurrPath, GDB_ST.ON, GDB_ST.OFF))
end
if bSolid ~= bCurrSolid then
local nSolidId = EgtGetFirstNameInGroup( nCrvId, SOLID_GRP)
EgtSetStatus( nSolidId or GDB_ID.NULL, EgtIf( bCurrSolid, GDB_ST.ON, GDB_ST.OFF))
end
if bToolPath ~= bCurrToolPath then
local nToolPathId = EgtGetFirstNameInGroup( nCrvId, TOOLPATH_GRP)
EgtSetStatus( nToolPathId or GDB_ID.NULL, EgtIf( bCurrToolPath, GDB_ST.ON, GDB_ST.OFF))
end
nCrvId = EgtGetNext( nCrvId)
end
nLayerIndex = nLayerIndex + 1
nLayerId = EgtGetFirstNameInGroup( nPartId, SLICE_LAYER .. nLayerIndex) or EgtGetFirstNameInGroup( nPartId, "__" .. SLICE_LAYER .. nLayerIndex)
end
nPartIndex = nPartIndex + 1
nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex)
end
-- riporto impostazioni in gruppo apposito
EgtSetInfo( nViewId, IMPORTED_SOLID, bCurrImportedSolid)
EgtSetInfo( nViewId, OUTER_CRV, bCurrOuterCrv)
EgtSetInfo( nViewId, PATH_GRP, bCurrPath)
EgtSetInfo( nViewId, SOLID_GRP, bCurrSolid)
EgtSetInfo( nViewId, TOOLPATH_GRP, bCurrToolPath)
EgtDraw()
end
---------------------------------------------------------------------
return RunShowManager