-- RunGcodeGenerate.lua by Egaltech s.r.l. 2022/05/19 -- Calcoli prima fase per Stampa 3d -- Tabella per definizione modulo local RunGcodeGenerate = {} -- Intestazioni require( 'EgtBase') EgtOutLog( ' RunGcodeGenerate started', 1) -- Costanti generali _G.package.loaded.AddManData = nil local AMD = require( 'AddManData') --------------------------------------------------------------------- local function GetLayerParamsForGcodeGenerate() local nParamsGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, PARAMS_GRP) local LayerParams = {} LayerParams.LinkZup = EgtGetInfo( nParamsGrp, KEY_LINK_ZUP, 'd') return LayerParams end --------------------------------------------------------------------- function RunGcodeGenerate.Exec() -- Recupero il pezzo (per ora primo e unico) local nPartIndex = 1 local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex) if not nPartId then EgtOutBox( 'Error missing part', 'GcodeGenerate') return end -- Recupero i layer da processare local vLayIds = EgtGetNameInGroup( nPartId, SLICE_LAYER.."*") if not vLayIds then EgtOutBox( 'Error missing slices', 'GcodeGenerate') return end -- Recupero i parametri relativi al layer local LayerParams = GetLayerParamsForGcodeGenerate() -- Ciclo sui layer local vEntId = {} for nIdx = 1, #vLayIds do -- scorro tutti i gruppi di contorni local nCrvGrpId = EgtGetFirstNameInGroup( vLayIds[ nIdx], CONTOUR_GRP.."*") while nCrvGrpId do -- recupero il gruppo dei percorsi utensile local nTpathGrpId = EgtGetFirstNameInGroup( nCrvGrpId, TOOLPATH_GRP) if not nTpathGrpId then EgtOutBox( 'Error missing toolpaths', 'GcodeGenerate') return end -- recupero le entità nel gruppo local nEntId = EgtGetFirstInGroup( nTpathGrpId) while nEntId do table.insert( vEntId, nEntId) nEntId = EgtGetNext( nEntId) end --passo al gruppo di contorni successivo nCrvGrpId = EgtGetNextName( nCrvGrpId, CONTOUR_GRP.."*") end end if #vEntId == 0 then EgtOutBox( 'Error missing entities', 'GcodeGenerate') return end -- Imposto gruppo di lavoro EgtSetCurrMachGroup() -- Assegno il nome del file CN local MchGrpId = EgtGetCurrMachGroup() local sPath = EgtGetCurrFilePath() local sDir, sName, sExt = EgtSplitPath( sPath) EgtSetInfo( MchGrpId, 'NcName', sName..'.cnc') -- Rimuovo eventuali precedenti lavorazioni EgtRemoveAllOperations() -- Aggiungo la lavorazione local nMchId = EgtAddMachining( 'Extrusion 1', 'Extrusion') if not nMchId then EgtOutBox( 'Error adding Extrusion', 'GcodeGenerate') return end EgtSetMachiningGeometry( vEntId) local sNotes = EgtAdjustNotes( '', 'LinkZup', LayerParams.LinkZup) EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes) if not EgtApplyMachining() then EgtOutBox( 'Error applying Extrusion', 'GcodeGenerate') return end -- Salvo il progetto EgtSaveFile() -- Genero il programma CN local sInfo = 'EgtCAM5 ver.' .. EgtGetExeVersion() .. ' - ' .. sPath local bGenOk = EgtGenerate( '', sInfo) EgtResetCurrMachGroup() if bGenOk then EgtOutBox( 'Generation successful.', 'GcodeGeneration', 'INFO') else EgtOutBox( 'Generation failed.', 'GcodeGeneration', 'ERROR') end end --------------------------------------------------------------------- return RunGcodeGenerate