Files
Dario Sassi e1440b9400 DataWindow :
- modifiche per gestire correttamente più utensili sullo stesso profilo (strutture lua sono sempre per riferimento).
2025-03-20 00:44:20 +01:00

109 lines
4.9 KiB
Lua

-- 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