-- Profiling.lua by Egalware s.r.l. 2024/06/13 -- Libreria esecuzione lavorazioni per Serramenti -> Lavorazione di profilatura -- Tabella per definizione modulo local Profiling = {} -- Include require( 'EgtBase') -- Carico i dati globali local WinData = require( 'WinData') local WinLib = require( 'WinLib') local MachiningLib = require( 'MachiningLib') EgtOutLog( ' Profiling started', 1) EgtMdbSave() ------------------------------------------------------------------------------------------------------------- function Profiling.Make( Proc, Part) -- se so che utensili utilizzare, associazione diretta if Proc.nToolsToUse > 0 then for i = 1, Proc.nToolsToUse do -- definizione liste local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}} local AuxiliaryData = {} local ToolSearchParameters = {} -- ricerca utensile ToolSearchParameters.sName = Proc.Tools[i].sName ToolSearchParameters.dElevation = 0 local ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) -- se trovato utensile if ToolInfo.nToolIndex then Machining.nType = MCH_MY.MILLING Machining.nWorkside = MCH_MILL_WS.RIGHT Machining.nToolIndex = ToolInfo.nToolIndex Machining.sDepth = 0 Machining.dRadialOffset = Proc.Tools[i].dRadialOffset Machining.dLongitudinalOffset = Proc.Tools[i].dLongitudinalOffset -- se il pezzo ha cambio-profilo if Proc.sProfileInfo == 'Mixed' then Machining.LeadIn.nType = MCH_MILL_LI.LINEAR Machining.LeadOut.nType = MCH_MILL_LO.LINEAR Machining.LeadIn.dTangentDistance = 0 Machining.LeadIn.dPerpDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) + 30 Machining.LeadOut.dTangentDistance = 0 Machining.LeadOut.dPerpDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) + 30 else Machining.LeadIn.nType = MCH_MILL_LI.TANGENT Machining.LeadOut.nType = MCH_MILL_LO.TANGENT Machining.LeadIn.dTangentDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) + 30 Machining.LeadIn.dPerpDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) + 30 Machining.LeadOut.dTangentDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) + 30 Machining.LeadOut.dPerpDistance = 0 end Machining.Geometry = Proc.id AuxiliaryData.bIsProfiling = true AuxiliaryData.nIndexMachining = i AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc) MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData) else return false, 'Associated tool not found' end end -- altrimenti cerco tra quelli disponibili else -- definizione liste local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}} local AuxiliaryData = {} local ToolSearchParameters = {} -- se profilatura generica, cerco fresa che possa lavorare la geometria considerando spessore e raggio if Proc.sProfileInfo == 'Generic' then ToolSearchParameters.dElevation = abs( EgtCurveThickness( Proc.id)) ToolSearchParameters.dMaxToolDiameter = WinLib.GetPathMinRadius( Proc.id) * 2 ToolSearchParameters.sType = 'MILL_STD' local ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) -- se trovato utensile if ToolInfo.nToolIndex then Machining.nType = MCH_MY.MILLING Machining.nWorkside = MCH_MILL_WS.LEFT Machining.nToolIndex = ToolInfo.nToolIndex Machining.sDepth = ToolSearchParameters.dElevation Machining.dRadialOffset = EgtGetInfo( Proc.id, 'OFFR', 'd') or 0 Machining.dLongitudinalOffset = EgtGetInfo( Proc.id, 'OFFL', 'd') or 0 Machining.LeadIn.nType = MCH_MILL_LI.TANGENT Machining.LeadOut.nType = MCH_MILL_LO.TANGENT Machining.LeadIn.dTangentDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) Machining.LeadIn.dPerpDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) Machining.LeadOut.dTangentDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) Machining.LeadOut.dPerpDistance = (TOOLS[ToolInfo.nToolIndex].dTotDiameter / 2) Machining.Geometry = Proc.id AuxiliaryData.bIsProfiling = true AuxiliaryData.nIndexMachining = 1 AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc) MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData) else return false, 'Tool for generic profiling not found' end else return false, 'Tool for profiling not found' end end return true end ------------------------------------------------------------------------------------------------------------- return Profiling