Files
3dprinting/LuaLibs/RunGcodeGenerate.lua
T
SaraP 37dd22aa3e 3dPrinting :
- riorganizzazione
- correzioni nel collegamento e nel riordino dei setti.
2022-06-29 11:34:46 +02:00

124 lines
3.6 KiB
Lua

-- RunGcodeGenerate.lua by Egaltech s.r.l. 2022/06/14
-- 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( nPartId)
local LayerParams = {}
LayerParams.LinkZup = EgtGetInfo( nPartId, 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( nPartId)
-- 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
local nErr, sErr = EgtGetLastMachMgrError()
local sMsg = 'Error applying Extrusion'
if nErr == 2803 and string.find( sErr, '(3)', 1, true) then
sMsg = sMsg .. ' (missing Feed & Speed)'
end
EgtResetCurrMachGroup()
EgtOutBox( sMsg, '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