From d0928b98428aa3bafd06e109bc4db0abd06c6f88 Mon Sep 17 00:00:00 2001 From: DarioS Date: Wed, 14 Sep 2022 09:01:32 +0200 Subject: [PATCH] 3dPrinting : - nuova versione compatibile con Icarus. --- LuaLibs/AddManData.lua | 1 + LuaLibs/CalcMachParamFromSW.lua | 13 +++++++++++-- LuaLibs/CalcPaths.lua | 2 +- LuaLibs/RunGcodeGenerate.lua | 19 +++++++++++++++---- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/LuaLibs/AddManData.lua b/LuaLibs/AddManData.lua index 9a6ebf2..c50b80a 100644 --- a/LuaLibs/AddManData.lua +++ b/LuaLibs/AddManData.lua @@ -250,6 +250,7 @@ KEY_TCUR = "TCur" KEY_FCUR = "FCur" KEY_LENGTH = "Length" KEY_SLICEID = "SliceId" +KEY_MASS = "PrintMass" --------------------------------------------------------------------- return AddManData diff --git a/LuaLibs/CalcMachParamFromSW.lua b/LuaLibs/CalcMachParamFromSW.lua index 269e854..4d342e4 100644 --- a/LuaLibs/CalcMachParamFromSW.lua +++ b/LuaLibs/CalcMachParamFromSW.lua @@ -1,4 +1,4 @@ --- CalcMachParam.lua by Egaltech s.r.l. 2022/08/07 +-- CalcMachParam.lua by Egaltech s.r.l. 2022/09/14 -- Calcolo dei parametri di stampa -- Intestazioni @@ -34,6 +34,8 @@ end local sMachIni = EgtGetCurrMachineDir() .. '\\' .. EgtGetCurrMachineName() .. '.ini' local dSMin = tonumber( EgtGetStringFromIni( SEC_3DPRINTING, KEY_SPEED_MIN, 0, sMachIni)) local dSMax = tonumber( EgtGetStringFromIni( SEC_3DPRINTING, KEY_SPEED_MAX, 50000, sMachIni)) +-- massa materiale utilizzato +local dPrintMass = 0 -- massimo indice di layer calcolato local nMaxIndex = 0 -- ciclo sui pezzi @@ -133,10 +135,15 @@ while nPartId do dLayerFeed = ( MATERIAL.C1 * pow( ( dSpeed / ( 1 + MATERIAL.K)), MATERIAL.C2)) * 1000 / ( ( dStrand - dSliceStep) * dSliceStep + pi * pow( dSliceStep / 2, 2)) dLayerTime = dTotLayerLength / dLayerFeed * 60 end + -- calcolo massa dello strato + local dLayerMass = dTotLayerLength * dSliceStep * dStrand * MATERIAL.Density * 1e-6 + if dLayerMass and dLayerMass > 0 then + dPrintMass = dPrintMass + dLayerMass + end -- scrivo info feed e speed in group toolpath nCrvId = EgtGetFirstNameInGroup( nLayerId, CONTOUR_GRP .. '*') while nCrvId do - local nToolPathId = EgtGetFirstNameInGroup( nCrvId, TOOLPATH_GRP) + local nToolPathId = EgtGetFirstNameInGroup( nCrvId, TOOLPATH_GRP) or GDB_ID.NULL EgtSetInfo( nToolPathId, KEY_FEED, dLayerFeed) EgtSetInfo( nToolPathId, KEY_SPEED, dSpeed) nCrvId = EgtGetNextName( nCrvId, CONTOUR_GRP .. '*') @@ -160,3 +167,5 @@ while nPartId do nPartId = EgtGetNextPart( nPartId) ::continue:: end +-- imposto massa totale +EgtSetInfo( nResultLayerId, KEY_MASS, dPrintMass) diff --git a/LuaLibs/CalcPaths.lua b/LuaLibs/CalcPaths.lua index 70dc021..d34dbef 100644 --- a/LuaLibs/CalcPaths.lua +++ b/LuaLibs/CalcPaths.lua @@ -24,7 +24,7 @@ local function GetLayerParamsForPathCalc() LayerParams.dOffs = EgtGetInfo( s_nPartId, KEY_OFFSET_SLICE, 'd') LayerParams.nFloorNbr = EgtGetInfo( s_nPartId, KEY_FLOOR_NBR, 'i') LayerParams.nFloorType = EgtGetInfo( s_nPartId, KEY_FLOOR_TYPE, 'i') - LayerParams.nCeilNbr = EgtGetInfo( s_nPartId, KEY_CEIL_NBR, 'i') + LayerParams.nCeilNbr = EgtGetInfo( s_nPartId, KEY_CEIL_NBR, 'i') or 0 LayerParams.nCeilType = EgtGetInfo( s_nPartId, KEY_CEIL_TYPE, 'i') LayerParams.vtSlicing = EgtGetInfo( s_nPartId, KEY_SLICING_DIR, 'v') LayerParams.bPrintInvert = ( EgtGetInfo( s_nPartId, KEY_PRINT_DIRECTION, 'i') == PRINT_DIRECTION.CW) diff --git a/LuaLibs/RunGcodeGenerate.lua b/LuaLibs/RunGcodeGenerate.lua index 83ea01e..718bc56 100644 --- a/LuaLibs/RunGcodeGenerate.lua +++ b/LuaLibs/RunGcodeGenerate.lua @@ -25,7 +25,7 @@ function RunGcodeGenerate.Exec() -- Recupero il pezzo (per ora primo e unico) local nPartIndex = 1 - local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex) + local nPartId = EgtGetFirstNameInGroup( GDB_ID.ROOT, PART .. nPartIndex) or EgtGetFirstNameInGroup( GDB_ID.ROOT, PART) if not nPartId then EgtOutBox( 'Error missing part', 'GcodeGenerate') return @@ -109,13 +109,24 @@ function RunGcodeGenerate.Exec() -- Genero il programma CN local sInfo = 'EgtCAM5 ver.' .. EgtGetExeVersion() .. ' - ' .. sPath local bGenOk = EgtGenerate( '', sInfo) + if bGenOk then + EgtEstimate('') + end EgtResetCurrMachGroup() - if bGenOk then - EgtOutBox( 'Generation successful.', 'GcodeGeneration', 'INFO') + if PRINT and PRINT.PROGRAM == 1 then + if bGenOk then + PRINT.ERR = 0 + else + PRINT.ERR = 999 + end else - EgtOutBox( 'Generation failed.', 'GcodeGeneration', 'ERROR') + if bGenOk then + EgtOutBox( 'Generation successful.', 'GcodeGeneration', 'INFO') + else + EgtOutBox( 'Generation failed.', 'GcodeGeneration', 'ERROR') + end end end