diff --git a/LuaLibs/AddManData.lua b/LuaLibs/AddManData.lua index 93185ce..008f07f 100644 --- a/LuaLibs/AddManData.lua +++ b/LuaLibs/AddManData.lua @@ -113,6 +113,8 @@ KEY_AUX_SOLIDS_WIPE_DIR = "AuxSolidsWipeDir" SEC_3DPRINTING = "3dPrinting" KEY_COEFF_X = "CoeffX" KEY_COEFF_Y = "CoeffY" +KEY_SPEED_MIN = "SpeedMin" +KEY_SPEED_MAX = "SpeedMax" -- Altre chiavi KEY_SLICE_NBR = "SliceNbr" diff --git a/LuaLibs/CalcMachParamFromSW.lua b/LuaLibs/CalcMachParamFromSW.lua index d0b160a..269e854 100644 --- a/LuaLibs/CalcMachParamFromSW.lua +++ b/LuaLibs/CalcMachParamFromSW.lua @@ -30,6 +30,10 @@ if not nResultLayerId then nResultLayerId = EgtGroup( GDB_ID.ROOT) EgtSetName( nResultLayerId, LAY_TFSCALC) end +-- recupero Speed minima e massima dalla macchina +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)) -- massimo indice di layer calcolato local nMaxIndex = 0 -- ciclo sui pezzi @@ -54,7 +58,7 @@ while nPartId do -- calcolo lunghezza totale del layer local dTotLayerLength = 0 local dTotLayerArea = 0 - local nCrvId = EgtGetFirstGroupInGroup( nLayerId) + local nCrvId = EgtGetFirstNameInGroup( nLayerId, CONTOUR_GRP .. '*') while nCrvId do local nToolPathId = EgtGetFirstNameInGroup( nCrvId, TOOLPATH_GRP) -- sommo lunghezze percorsi @@ -73,7 +77,7 @@ while nPartId do local dOffset = EgtGetInfo( nPartId, KEY_OFFSET_SLICE, 'd') dTotCrvArea = dTotCrvArea + ( dOffset * dOuterLength) dTotLayerArea = dTotLayerArea + dTotCrvArea - nCrvId = EgtGetNext( nCrvId) + nCrvId = EgtGetNextName( nCrvId, CONTOUR_GRP .. '*') end -- recupero feed del layer local dLayerFeed = 0 @@ -114,7 +118,21 @@ while nPartId do -- calcolo la portata local Vf = dLayerFeed * ( ( dStrand - dSliceStep) * dSliceStep + pi * pow( dSliceStep / 2, 2)) / 1000 -- calcolo speed - local dSpeed = ( 1 + MATERIAL.K ) * pow( Vf / MATERIAL.C1, 1 / MATERIAL.C2) + local dSpeed = ( 1 + MATERIAL.K) * pow( Vf / MATERIAL.C1, 1 / MATERIAL.C2) + -- verifico se speed esce da minimo e massimo della macchina + local bSpeedOk = true + if dSpeed < dSMin then + bSpeedOk = false + dSpeed = dSMin + end + if dSpeed > dSMax then + bSpeedOk = false + dSpeed = dSMax + end + if not bSpeedOk then + dLayerFeed = ( MATERIAL.C1 * pow( ( dSpeed / ( 1 + MATERIAL.K)), MATERIAL.C2)) * 1000 / ( ( dStrand - dSliceStep) * dSliceStep + pi * pow( dSliceStep / 2, 2)) + dLayerTime = dTotLayerLength / dLayerFeed * 60 + end -- scrivo info feed e speed in group toolpath nCrvId = EgtGetFirstNameInGroup( nLayerId, CONTOUR_GRP .. '*') while nCrvId do