142 lines
5.4 KiB
Lua
142 lines
5.4 KiB
Lua
-- 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
|