e1440b9400
- modifiche per gestire correttamente più utensili sullo stesso profilo (strutture lua sono sempre per riferimento).
109 lines
4.9 KiB
Lua
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 |