113 lines
3.5 KiB
Lua
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()
|