- modificato ordinamento lavorazioni profili longitudinali
- aggiunte lavorazioni di svuotatura.
This commit is contained in:
Annamaria Sassi
2026-09-02 15:27:53 +02:00
parent ffc119d461
commit b667854683
3 changed files with 59 additions and 4 deletions
+6
View File
@@ -37,6 +37,12 @@ end
-------------------------------------------------------------------------------------------------------------
-- Recupero dati svuotatura
function FeatureData.GetPocketingData( Proc)
local vtDir = EgtCurveExtrusion( Proc.id)
local Frame = EgtGetGlobFrame( Proc.id)
Proc.dLength = abs( EgtCurveThickness( Proc.id)) or 0
Proc.vtDir = vtDir
Proc.sReferenceSide = EgtGetInfo( Proc.id, 'REFERENCE_SIDE', 's') or nil
return Proc
end
+10 -3
View File
@@ -303,9 +303,9 @@ local function SortByChangeToolOpt( MACHININGS)
for i = 1, #vProcToSortToolOpt do
for j = i + 1, #vProcToSortToolOpt do
-- se sono su stessa fase
if vProcToSortToolOpt[i].AuxiliaryData.nPhase == vProcToSortToolOpt[j].AuxiliaryData.nPhase then
if vProcToSortToolOpt[i].AuxiliaryData.nPhase == vProcToSortToolOpt[j].AuxiliaryData.nPhase and not vProcToSortToolOpt[i].AuxiliaryData.bHeadProfile and not vProcToSortToolOpt[j].AuxiliaryData.bHeadProfile then
-- se stesso utensile
if vProcToSortToolOpt[i].Machining.nToolIndex == vProcToSortToolOpt[j].Machining.nToolIndex then
if vProcToSortToolOpt[i].Machining.nToolIndex == vProcToSortToolOpt[j].Machining.nToolIndex and vProcToSortToolOpt[i].Machining.dLongitudinalOffset == vProcToSortToolOpt[j].Machining.dLongitudinalOffset then
if i + 1 == j then
-- il confronto riparte dall'ultimo spostato
i = j
@@ -578,6 +578,10 @@ function WinExec.ProcessFeatures( PARTS)
for i = 1, #PARTS do
maxOffsetX[i] = 80 - PARTS[i].RawOffset.dOverMatRight
end
-- variabile per offset aggiuntivo in X a causa di una lavorazione sul Top vicino alla testa
local addOffsetX = 0
-- scrivo lavorazioni seconda fase
EgtSetCurrPhase( 2)
UpdateRawPosition( PARTS)
@@ -585,6 +589,9 @@ function WinExec.ProcessFeatures( PARTS)
if MACHININGS[i].AuxiliaryData.nPhase == 2 then
-- aggiunge effettivamente la lavorazione
local bIsApplyOk, sErr, b3MachEncumbrance = MachiningLib.AddOperation( MACHININGS[i])
if MACHININGS[i].Proc.AffectedFaces.bTop and b3MachEncumbrance:getMin():getX() > (PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - maxOffsetX[MACHININGS[i].Proc.nIndexPart] - 10) then
addOffsetX = b3MachEncumbrance:getMin():getX() - (PARTS[MACHININGS[i].Proc.nIndexPart].b3Part:getMax():getX() - maxOffsetX[MACHININGS[i].Proc.nIndexPart] - 5)
end
-- se feature di testa, sposto testa in base a ingombro lavorazione
if MACHININGS[i].Proc.bHeadProfile and b3MachEncumbrance then
-- profilo di testa obliquo
@@ -600,7 +607,7 @@ function WinExec.ProcessFeatures( PARTS)
-- sposto pezzo per permettere pinzaggio migliore e non aver colisione in testa
for i = 1, #PARTS do
-- TODO controllare calcolo ingombro
local vtMove = Vector3d( PARTS[i].DispOffsets.Phase2.dOffsetX, 0, 0)
local vtMove = Vector3d( PARTS[i].DispOffsets.Phase2.dOffsetX + addOffsetX, 0, 0)
if vtMove ~= V_NULL() then
CheckAndMoveRawPart( PARTS[i].idRaw, vtMove)
end
+43 -1
View File
@@ -9,13 +9,55 @@ require( 'EgtBase')
-- Carico i dati globali
local WinData = require( 'WinData')
local MachiningLib = require( 'MachiningLib')
EgtOutLog( ' Pocketing started', 1)
EgtMdbSave()
-------------------------------------------------------------------------------------------------------------
-- funzione che decide se eseguire le forature dopo le profilature. Solo forature di testa inclinate. Altrimenti sempre prima.
local function IsPocketToMachineAfterProfile( Proc)
local bExecAfterProfile = false
if Proc.AffectedFaces.bTop then
bExecAfterProfile = true
end
return bExecAfterProfile
end
-------------------------------------------------------------------------------------------------------------
function Pocketing.Make( Proc, Part)
return true
local Machining = { LeadIn = {}, LeadOut = {}, Steps = {}}
local AuxiliaryData = {}
local ToolSearchParameters = {}
-- cerco utensile svuotatura
ToolSearchParameters.sType = 'MILL_STD'
ToolSearchParameters.dElevation = Proc.dLength
ToolSearchParameters.vDirection = Proc.vtDir
ToolSearchParameters.bIsVerticalHead = AreSameVectorApprox( Proc.vtDir, Vector3d(0,0,1))
ToolSearchParameters.bIsHorizontalHead = not ToolSearchParameters.bIsVerticalHead
local 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.nIndexMachining = 1
AuxiliaryData.nPhase = MachiningLib.GetPhaseMach( Proc)
AuxiliaryData.bExecAfterProfile = IsPocketToMachineAfterProfile( Proc)
MachiningLib.AddNewMachining( Proc, Machining, AuxiliaryData)
return true
end
-- non ha trovato un utensile valido
return false
end
-------------------------------------------------------------------------------------------------------------