-- RunSlicing.lua by Egaltech s.r.l. 2022/03/30 -- Calcoli prima fase per Stampa 3d -- Tabella per definizione modulo local RunSlicing = {} -- Intestazioni require( 'EgtBase') EgtOutLog( ' RunSlicing started', 1) -- Costanti generali _G.package.loaded.AddManData = nil local AMD = require( 'AddManData') -- Librerie _G.package.loaded.CalcSlices = nil local CSLICES = require( 'CalcSlices') _G.package.loaded.CalcPaths = nil local CPATHS = require( 'CalcPaths') _G.package.loaded.CalcSolids = nil local CSOLIDS = require( 'CalcSolids') _G.package.loaded.CalcToolPath = nil local CTP = require( 'CalcToolPath') --------------------------------------------------------------------- local function SetParamInfo( sFile, nParamsGrp, sSection, sKey, sDefaultVal) local sVal = EgtGetStringFromIni( sSection, sKey, sDefaultVal, sFile) EgtSetInfo( nParamsGrp, sKey, sVal) end --------------------------------------------------------------------- local function LoadParams( sFile, nPartId) -- creo gruppo dove salvare parametri local nParamsGrp = EgtGetFirstNameInGroup( GDB_ID.ROOT, PARAMS_GRP) or GDB_ID.NULL if nParamsGrp == GDB_ID.NULL then nParamsGrp = EgtGroup( GDB_ID.ROOT) EgtRelocate( nParamsGrp, GDB_ID.ROOT, GDB_IN.FIRST_SON) EgtSetName( nParamsGrp, PARAMS_GRP) EgtSetLevel( nParamsGrp, GDB_LV.SYSTEM) end EgtSetInfo( nParamsGrp, INFO_PARTD_ID, nPartId) SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SLICE_STEP, '1.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_STRAND, '6.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SHELLS_NBR, '3') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_OFFSET_SLICE, '0.0') local sStartPoint = EgtGetStringFromIni( DEFAULT_SECTION, KEY_START_POINT, '0,0', sFile) local ptStart = EgtGetVal( 'P='..sStartPoint..',0', 'P', 'p') EgtSetInfo( nParamsGrp, KEY_START_POINT, ptStart) local sStrandOrder = EgtGetStringFromIni( DEFAULT_SECTION, KEY_PRINT_ORDER, 'in', sFile) if sStrandOrder == 'out' then EgtSetInfo( nParamsGrp, KEY_PRINT_ORDER, PRINT_ORDER.EXT_INT_INF) else -- sStrandOrder == 'in' EgtSetInfo( nParamsGrp, KEY_PRINT_ORDER, PRINT_ORDER.INT_EXT_INF) end local sStrandDirection = EgtGetStringFromIni( DEFAULT_SECTION, KEY_PRINT_DIRECTION, 'CCW', sFile) if sStrandDirection == 'CW' then EgtSetInfo( nParamsGrp, KEY_PRINT_DIRECTION, PRINT_DIRECTION.CW) else -- CCW EgtSetInfo( nParamsGrp, KEY_PRINT_DIRECTION, PRINT_DIRECTION.CCW) end local sLinkType = EgtGetStringFromIni( DEFAULT_SECTION, KEY_LINK_TYPE, 'straight', sFile) if sLinkType == 'sPath' then EgtSetInfo( nParamsGrp, KEY_LINK_TYPE, LINK_TYPE.BIARC) else -- sStrandOrder == 'sPath' EgtSetInfo( nParamsGrp, KEY_LINK_TYPE, LINK_TYPE.LINEAR) end SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LINK_PARAM, '0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_FLOOR_NBR, '0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SPEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_EXT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_INT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_INFILL_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_IN_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_LEAD_OUT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_SUPPORT_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_G0_FEED, '0.0') SetParamInfo( sFile, nParamsGrp, DEFAULT_SECTION, KEY_MATERIAL, '') end function RunSlicing.Exec() -- Recupero ultimo oggetto selezionato local nStmId = EgtGetLastSelectedObj() -- Verifico sia una superficie if not nStmId or EgtGetType( nStmId) ~= GDB_TY.SRF_MESH then EgtOutText( "L'oggetto selezionato non รจ una superficie") EgtPause( 1000) return end local nPartId = EgtGetParent( EgtGetParent( nStmId)) -- Scelta del file dei parametri local sLastParamFile = EgtGetStringFromIni( '3dPrinting', 'ParamFile', 'C:\\ProgramData\\Egaltech\\EgtCam5\\3dPrinting\\Machinings\\aaa.ini', EgtGetIniFile()) local sDir = EgtSplitPath( sLastParamFile) local sParamFile = EgtFileDialog( true, sDir..'*.ini', '*.ini||') if not sParamFile then EgtOutBox('Error no file', '') return end EgtWriteStringToIni( '3dPrinting', 'ParamFile', sParamFile, EgtGetIniFile()) -- Elimino eventuale precedente file dei risultati local sCalcBaseDir = EgtGetStringFromIni( '3dPrinting', 'BaseDir', 'C:\\ProgramData\\Egaltech\\EgtCam5\\3dPrinting', EgtGetIniFile()) local sCurrProjectPath = EgtGetCurrFilePath() local _, sCurrProjectName = EgtSplitPath( sCurrProjectPath) local sResultFile = sCalcBaseDir .. '\\Results\\' .. sCurrProjectName .. '.csv' EgtEraseFile( sResultFile) -- Lettura dei parametri LoadParams( sParamFile, nPartId) -- Calcolo delle fette CSLICES.Exec( nPartId, nStmId) EgtDraw() -- Calcolo dei percorsi sul centro strand in basso CPATHS.Exec( nPartId) EgtDraw() -- Calcolo dei percorsi di lavoro CTP.Exec( nPartId) EgtDraw() -- Calcolo dei solidi degli strand a partire dai percorsi di lavoro CSOLIDS.Exec( nPartId) EgtSetStatus( nStmId, GDB_ST.OFF) EgtDraw() end --------------------------------------------------------------------- return RunSlicing