-- SliceAdvancement.lua by Egaltech s.r.l. 2022/04/05 -- Gestione visualizzazione per Stampa 3d -- Intestazioni require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- Imposto direttorio libreria specializzata per Stampa 3d local sBaseDir = EgtGetSourceDir() EgtAddToPackagePath( sBaseDir .. 'LuaLibs\\?.lua') -- Costanti generali local AMD = require( 'AddManData') ViewValues = EgtDialogBox( 'Slice advancement', { 'Type', 'CB:*All,Only Outer,Only Inner,Only Infill'}, { 'Percentage (0-100)', '30'}) if not ViewValues or #ViewValues < 1 then return end local nAdvancementType = 1 -- 1 = All, 2 = Only Outer, 3 = Only Inner, 4 = Only Infill if ViewValues[1] == 'All' then nAdvancementType = 1 elseif ViewValues[1] == 'Only Outer' then nAdvancementType = 2 elseif ViewValues[1] == 'Only Inner' then nAdvancementType = 3 elseif ViewValues[1] == 'Only Infill' then nAdvancementType = 4 end local nPercentage = tonumber( ViewValues[2]) local function ManageSegmentVisibility( SegmentList, nLastActiveIndex, ToHideList) for Index = 1, #SegmentList do EgtSetStatus( SegmentList[Index], EgtIf( Index <= nLastActiveIndex, GDB_ST.ON, GDB_ST.OFF)) end if ToHideList and #ToHideList > 0 then for Index = 1, #ToHideList do EgtSetStatus( ToHideList[Index], GDB_ST.OFF) end end end -- ciclo sui pezzi local nPartIndex = 1 local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex) while nPartId do -- ciclo sui layer per dis/attivare il resto local nLayerIndex = 1 local nLayerId = EgtGetFirstNameInGroup( nPartId, SLICE_LAYER .. nLayerIndex) while nLayerId do local nCrvId = EgtGetFirstGroupInGroup( nLayerId) while nCrvId do local nSolidId = EgtGetFirstNameInGroup( nCrvId, SOLID_GRP) local ShellList = { {}, {}} local nSurfId = EgtGetFirstInGroup( nSolidId) while nSurfId do local nType = EgtGetInfo( nSurfId, KEY_TYPE, 'i') table.insert( ShellList[nType + 1], nSurfId) nSurfId = EgtGetNext( nSurfId) end local nSegmentQty = 1 local SegmentList local ToHideList if nAdvancementType == 1 then nSegmentQty = #ShellList[1] + #ShellList[2] SegmentList = ShellList[1] for i = 1, #ShellList[2] do SegmentList[#SegmentList + 1] = ShellList[2][i] end elseif nAdvancementType == 2 then nSegmentQty = #ShellList[1] SegmentList = ShellList[1] ToHideList = ShellList[2] elseif nAdvancementType == 3 then nSegmentQty = #ShellList[2] SegmentList = ShellList[2] ToHideList = ShellList[1] end local nLastActiveIndex = ceil( nSegmentQty * nPercentage / 100) ManageSegmentVisibility( SegmentList, nLastActiveIndex, ToHideList) nCrvId = EgtGetNext( nCrvId) end nLayerIndex = nLayerIndex + 1 nLayerId = EgtGetFirstNameInGroup( nPartId, SLICE_LAYER .. nLayerIndex) end nPartIndex = nPartIndex + 1 nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex) end EgtDraw() ------------------------- MAIN --------------------------------------