Files
Carlo Baronchelli 741791a0e4 Copia locale Iniziale
2022-05-19 16:04:07 +02:00

113 lines
3.5 KiB
Lua

-- 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()