Files
3dprinting/LuaLibs/RunGcodeGenerate.lua
T
DarioS 33e461b914 3dPrinting :
- in Generazione Cn si genera anche il codice e si rimane in Disegna
- in Posizionamento Pezzo si inserisce il punto di Inizio dopo la creazione del grezzo.
2022-05-20 11:20:49 +02:00

118 lines
3.5 KiB
Lua

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