Files
Annamaria Sassi 4ae5012c67 CAMAuto :
- create macchinate solo con pezzi delle stesse dimensioni
- lavorazioni sulla faccia Top effetuate in fase due
- aggiunto confronto tra svuotature nell'ordinamento delle lavorazioni.
2026-07-24 13:01:47 +02:00

114 lines
5.0 KiB
Lua

-- Drilling.lua by Egalware s.r.l. 2024/06/13
-- Libreria esecuzione lavorazioni per Serramenti -> Lavorazione di foratura
-- Tabella per definizione modulo
local Drilling = {}
-- Include
require( 'EgtBase')
-- Carico i dati globali
local WinData = require( 'WinData')
local MachiningLib = require( 'MachiningLib')
EgtOutLog( ' Drilling started', 1)
EgtMdbSave()
-------------------------------------------------------------------------------------------------------------
-- funzione che decide se eseguire le forature dopo le profilature. Solo forature di testa inclinate. Altrimenti sempre prima.
local function IsDrillToMachineAfterProfile( Proc)
local bExecAfterProfile = false
if ( Proc.AffectedFaces.bLeft or Proc.AffectedFaces.bRight) and abs( Proc.vtDir:getX()) > 0.15 then
bExecAfterProfile = true
end
if not (Proc.AffectedFaces.bLeft or Proc.AffectedFaces.bRight or Proc.AffectedFaces.bBottom or Proc.AffectedFaces.bTop or Proc.AffectedFaces.bBack or Proc.AffectedFaces.bFront) then
bExecAfterProfile = true
end
return bExecAfterProfile
end
-------------------------------------------------------------------------------------------------------------
function Drilling.Make( Proc, Part)
local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}}
local AuxiliaryData = {}
local ToolSearchParameters = {}
-- cerco utensile punta a forare
ToolSearchParameters.dDiameter = Proc.dDiameter
ToolSearchParameters.dLength = Proc.dLength
local ToolInfo = MachiningLib.FindDrill( Proc, ToolSearchParameters)
-- se trovato utensile
if ToolInfo.nToolIndex then
Machining.nType = MCH_OY.DRILLING
Machining.nToolIndex = ToolInfo.nToolIndex
Machining.sDepth = 'th'
Machining.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep
Machining.Geometry = Proc.id
AuxiliaryData.bExecAfterProfile = IsDrillToMachineAfterProfile( Proc)
AuxiliaryData.bIsDrilling = true
AuxiliaryData.nIndexMachining = 1
AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc)
Machining.dStartSafetyLength = MachiningLib.GetDrillAdditionalSafeDistanceToRaw( Proc, Part, Machining)
MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData)
return true
end
-- provo a cercare una fresa che faccia una svuotatura
ToolSearchParameters.sType = 'MILL_STD'
ToolSearchParameters.dMaxToolDiameter = Proc.dDiameter - 2
ToolSearchParameters.dElevation = Proc.dLength
ToolSearchParameters.bIsVerticalHead = Proc.AffectedFaces.bTop
ToolSearchParameters.bIsHorizontalHead = (Proc.AffectedFaces.bLeft or Proc.AffectedFaces.bRight or Proc.AffectedFaces.bBack or Proc.AffectedFaces.bFront)
ToolSearchParameters.vDirection = Proc.vtDir
ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
-- se trovato utensile
if ToolInfo.nToolIndex then
Machining.nType = MCH_OY.POCKETING
Machining.nSubType = MCH_POCK_SUB.SPIRALOUT
Machining.LeadIn.nType = MCH_POCK_LI.HELIX
Machining.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep
Machining.Steps.dSideStep = TOOLS[ToolInfo.nToolIndex].dSideStep
Machining.nToolIndex = ToolInfo.nToolIndex
Machining.LeadIn.dTangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter/2
Machining.LeadIn.dElevation = TOOLS[ToolInfo.nToolIndex].dDiameter/2
Machining.sDepth = Proc.dLength
Machining.Geometry = Proc.id
AuxiliaryData.bIsPocketingDrill = true
AuxiliaryData.nIndexMachining = 1
AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc)
MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData)
return true
end
-- provo a cercare una fresa che faccia una foratura
ToolSearchParameters.sType = 'MILL_STD'
ToolSearchParameters.dMaxToolDiameter = Proc.dDiameter
ToolSearchParameters.dElevation = Proc.dLength
ToolSearchParameters.bIsVerticalHead = Proc.AffectedFaces.bTop
ToolSearchParameters.bIsHorizontalHead = (Proc.AffectedFaces.bLeft or Proc.AffectedFaces.bRight or Proc.AffectedFaces.bBack or Proc.AffectedFaces.bFront)
ToolSearchParameters.vDirection = Proc.vtDir
ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
-- se trovato utensile
if ToolInfo.nToolIndex then
Machining.nType = MCH_OY.DRILLING
Machining.nToolIndex = ToolInfo.nToolIndex
Machining.sDepth = 'th'
Machining.Steps.dStep = TOOLS[ToolInfo.nToolIndex].dStep
Machining.Geometry = Proc.id
AuxiliaryData.bExecAfterProfile = IsDrillToMachineAfterProfile( Proc)
AuxiliaryData.bIsDrilling = true
AuxiliaryData.nIndexMachining = 1
AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc)
Machining.dStartSafetyLength = MachiningLib.GetDrillAdditionalSafeDistanceToRaw( Proc, Part, Machining)
MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData)
return true
end
-- non ha trovato un utensile valido
return false
end
-------------------------------------------------------------------------------------------------------------
return Drilling