-- 2019/04/24 -- Salvataggio Virtual Milling -- Intestazioni require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- Recupero numero dei gruppi di lavoro local nMGrpCount = EgtGetMachGroupCount() -- Se non ci sono gruppi di lavoro, non c'è niente da fare if nMGrpCount == 0 then EgtOutBox( 'VMills missing (no Machining Group)', 'Warning', 'WARNING') end -- Se esiste il gruppo dei VMill (per macchine travi) local VMillId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') if VMillId then -- Disabilito segnalazione modifiche local bOldEnabModif = EgtGetEnableModified() EgtDisableModified() -- Lo rendo user level e visibile EgtSetLevel( VMillId, GDB_LV.USER) EgtSetStatus( VMillId, GDB_ST.ON) -- Chiedo il nome del file in cui salvare local sFile = EgtSplitPath( EgtGetCurrFilePath()) .. 'VMill.nge' local sFilePath = EgtFileDialog( false, sFile, "Nge Files (*.nge)|*.nge||") -- Lo salvo EgtSaveObjToFile( VMillId, sFilePath, GDB_NT.CMPTXT) EgtOutText( sFilePath .. ' saved') -- Ripristino il livello temporaneo e lo stato nascosto EgtSetLevel( VMillId, GDB_LV.TEMP) EgtSetStatus( VMillId, GDB_ST.OFF) -- Ripristino precedente stato segnalazione modifiche if bOldEnabModif then EgtEnableModified() end return end -- Se c'è un solo gruppo di lavoro, lo rendo corrente if nMGrpCount == 1 then EgtSetCurrMachGroup() -- altrimenti ci sono più gruppi di lavoro, chiedo da quale prendere i VMill e lo rendo corrente else -- Creo la lista dei gruppi di lavoro local sMGrp = 'CB:' local nMGrpId = EgtGetFirstMachGroup() while nMGrpId do sMGrp = sMGrp .. EgtGetMachGroupName( nMGrpId) .. ',' nMGrpId = EgtGetNextMachGroup( nMGrpId) end -- Dialogo di scelta local vVal = EgtDialogBox( 'SaveVmill 2', { 'Gruppo di lavoro', sMGrp}) if not vVal or #vVal == 0 then return end EgtSetCurrMachGroup( EgtGetMachGroupId( vVal[1]) or GDB_ID.NULL) end -- Recupero tutti i Vmill del gruppo di lavoro corrente local vVMill = {} local nRawId = EgtGetFirstRawPart() while nRawId do local nVMillId = EgtGetFirstNameInGroup( nRawId, 'VMill') if nVMillId then table.insert( vVMill, nVMillId) end nRawId = EgtGetNextRawPart( nRawId) end -- Se trovati VMill, creo un pezzo+layer e ve li copio if #vVMill > 0 then -- Disabilito segnalazione modifiche local bOldEnabModif = EgtGetEnableModified() EgtDisableModified() -- Creo o svuoto gruppo per copia finale degli oggetti virtual milling local nVmPrtId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') if nVmPrtId then EgtSetStatus( nVmPrtId, GDB_ST.ON) EgtEmptyGroup( nVmPrtId) else nVmPrtId = EgtGroup( GDB_ID.ROOT) EgtSetName( nVmPrtId, 'VMill') end -- Creo layer local nVmLayId = EgtGroup( nVmPrtId) -- Copio tutti i VMill nel layer for i = 1, #vVMill do local nNewId = EgtCopyGlob( vVMill[i], nVmLayId) EgtSetLevel( nNewId, GDB_LV.USER) EgtSetStatus( nNewId, GDB_ST.ON) end -- Chiedo il nome del file in cui salvare local sFile = EgtSplitPath( EgtGetCurrFilePath()) .. 'VMill.nge' local sFilePath = EgtFileDialog( false, sFile, "Nge Files (*.nge)|*.nge||") -- Lo salvo EgtSaveObjToFile( nVmPrtId, sFilePath, GDB_NT.CMPTXT) EgtOutText( sFilePath .. ' saved') -- Elimino il gruppo EgtErase( nVmPrtId) -- Ripristino precedente stato segnalazione modifiche if bOldEnabModif then EgtEnableModified() end else EgtOutBox( 'VMills missing', 'Warning', 'WARNING') end -- Reset gruppo di lavoro corrente EgtResetCurrMachGroup()