- aggiunta ricerca e esecuzione di fresature in doppio da percorso specchiato
- piccole correzioni
This commit is contained in:
+81
-14
@@ -670,6 +670,7 @@ end
|
||||
-- Controlla in vProc la presenza di feature da lavorare in doppio e, se trovate, ne setta i parametri
|
||||
local function SetMirroredFeatures( vProc, b3Raw)
|
||||
|
||||
-- interasse minimo
|
||||
local dMinimumDistanceMirroredFeatures = 780
|
||||
local vPockets = {}
|
||||
local vDrillings = {}
|
||||
@@ -760,8 +761,7 @@ local function SetMirroredFeatures( vProc, b3Raw)
|
||||
Proc.TopologyLongName == 'Groove-Blind-RightAngles-Parallel-4' and Proc.AffectedFaces.Top and Proc.AffectedFaces.Right and ProcMirror.AffectedFaces.Top and ProcMirror.AffectedFaces.Right or
|
||||
Proc.TopologyLongName == 'Tunnel-Blind-RightAngles-Parallel-5' and Proc.AffectedFaces.Top and ProcMirror.AffectedFaces.Top
|
||||
-- box delle stesse dimensioni
|
||||
local bIsMirrorFeatureSameDimension = false
|
||||
bIsMirrorFeatureSameDimension = abs( b3Proc:getDimX() - b3ProcMirror:getDimX()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
local bIsMirrorFeatureSameDimension = abs( b3Proc:getDimX() - b3ProcMirror:getDimX()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
abs( b3Proc:getDimY() - b3ProcMirror:getDimY()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
abs( b3Proc:getDimZ() - b3ProcMirror:getDimZ()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5)
|
||||
-- box allineati in X
|
||||
@@ -822,8 +822,7 @@ local function SetMirroredFeatures( vProc, b3Raw)
|
||||
-- feature non disattivata e diversa da nCurrentDrilling
|
||||
local bIsMirrorIdOk = ( Proc.Id ~= ProcMirror.Id and ProcMirror.Flg ~= 0)
|
||||
-- box delle stesse dimensioni
|
||||
local bIsMirrorFeatureSameDimension = false
|
||||
bIsMirrorFeatureSameDimension = abs( b3Proc:getDimX() - b3ProcMirror:getDimX()) < ( WD.DOUBLE_HEAD_DRILLING_TOLERANCE or 0.1) and
|
||||
local bIsMirrorFeatureSameDimension = abs( b3Proc:getDimX() - b3ProcMirror:getDimX()) < ( WD.DOUBLE_HEAD_DRILLING_TOLERANCE or 0.1) and
|
||||
abs( b3Proc:getDimY() - b3ProcMirror:getDimY()) < ( WD.DOUBLE_HEAD_DRILLING_TOLERANCE or 0.1) and
|
||||
abs( b3Proc:getDimZ() - b3ProcMirror:getDimZ()) < ( WD.DOUBLE_HEAD_DRILLING_TOLERANCE or 0.1)
|
||||
-- box allineati in X
|
||||
@@ -862,6 +861,82 @@ local function SetMirroredFeatures( vProc, b3Raw)
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- verifico e imposto le fresature da specchiare
|
||||
local function SetMirroredOperations()
|
||||
-- interasse minimo
|
||||
local dMinimumDistanceMirroredOperations = 780
|
||||
local nOperIdMaster = EgtGetNextOperation( EgtGetPhaseDisposition( 1))
|
||||
while nOperIdMaster do
|
||||
EgtSetCurrMachining( nOperIdMaster)
|
||||
local nClId = EgtGetFirstNameInGroup( nOperIdMaster, 'CL')
|
||||
local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL)
|
||||
-- vettore direzione utensile lavorazione master
|
||||
local vtTool = EgtGetInfo( nPathId, 'EXTR', 'v')
|
||||
local ptMin = EgtGetInfo( nClId, 'MMIN', 'p')
|
||||
local ptMax = EgtGetInfo( nClId, 'MMAX', 'p')
|
||||
-- box percorso lavorazione master
|
||||
local b3Operation = BBox3d( ptMin, ptMax)
|
||||
local sMachining = EgtGetMachiningParam( MCH_MP.NAME, 's')
|
||||
-- lavorazione master adatta alla specchiatura
|
||||
local bIsMachiningOk = ( EgtGetMachiningParam( MCH_MP.TYPE) == MCH_OY.MILLING) and EgtGetOperationMode( nOperIdMaster) and WM.IsMachiningOkForDouble( sMachining)
|
||||
local nOperIdMirror = EgtGetNextOperation( EgtGetPhaseDisposition( 1))
|
||||
if bIsMachiningOk then
|
||||
while nOperIdMirror do
|
||||
EgtSetCurrMachining( nOperIdMirror)
|
||||
local nClIdMirror = EgtGetFirstNameInGroup( nOperIdMirror, 'CL')
|
||||
local nPathIdMirror = EgtGetFirstInGroup( nClIdMirror or GDB_ID.NULL)
|
||||
-- vettore direzione utensile lavorazione mirror
|
||||
local vtToolMirror = EgtGetInfo( nPathIdMirror, 'EXTR', 'v')
|
||||
local ptMinMirror = EgtGetInfo( nClIdMirror, 'MMIN', 'p')
|
||||
local ptMaxMirror = EgtGetInfo( nClIdMirror, 'MMAX', 'p')
|
||||
-- box percorso lavorazione mirror
|
||||
local b3OperationMirror = BBox3d( ptMinMirror, ptMaxMirror)
|
||||
-- lavorazione mirror adatta alla specchiatura
|
||||
local bIsMirrorMachiningOk = ( EgtGetMachiningParam( MCH_MP.TYPE) == MCH_OY.MILLING) and EgtGetOperationMode( nOperIdMirror) and nOperIdMaster ~= nOperIdMirror
|
||||
-- lavorazione master più a sinistra
|
||||
local bIsMirrorSideOk = ( b3OperationMirror:getCenter():getY() - b3Operation:getCenter():getY()) > ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5)
|
||||
-- box delle stesse dimensioni
|
||||
local bIsMirrorOperationSameDimension = abs( b3Operation:getDimX() - b3OperationMirror:getDimX()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
abs( b3Operation:getDimY() - b3OperationMirror:getDimY()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
abs( b3Operation:getDimZ() - b3OperationMirror:getDimZ()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5)
|
||||
-- box allineati in X
|
||||
local bIsMirrorBoxXAligned = abs( b3Operation:getCenter():getX() - b3OperationMirror:getCenter():getX()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5) and
|
||||
abs( b3Operation:getCenter():getX() - b3OperationMirror:getCenter():getX()) < ( WD.DOUBLE_HEAD_POCKET_TOLERANCE or 0.5)
|
||||
-- box che non si intersecano
|
||||
local bIsNotMirrorBoxOverlapping = not OverlapsXY( b3Operation, b3OperationMirror)
|
||||
-- distanza minima tra le feature
|
||||
local dYMinDistance = max( b3Operation:getMin():getY(), b3OperationMirror:getMin():getY()) - min( b3Operation:getMax():getY(), b3OperationMirror:getMax():getY())
|
||||
local bIsMirrorOperationDistanceOk = dYMinDistance > dMinimumDistanceMirroredOperations + 10 * GEO.EPS_SMALL
|
||||
-- vettori utensile specchiati
|
||||
vtTool:mirror( Y_AX())
|
||||
local bIsMirrorVectorOk = AreSameVectorApprox( vtTool, vtToolMirror)
|
||||
-- se condizioni corrette, scrivo le note e cancello la specchiata
|
||||
if bIsMirrorMachiningOk and bIsMirrorSideOk and bIsMirrorOperationSameDimension and bIsMirrorBoxXAligned and bIsNotMirrorBoxOverlapping and bIsMirrorOperationDistanceOk and bIsMirrorVectorOk then
|
||||
-- calcolo asse di specchiatura
|
||||
local dYMirrorAx
|
||||
local b3Tab = EgtGetTableArea()
|
||||
local ptOnMirrorAx = ( b3Operation:getCenter() + b3OperationMirror:getCenter()) / 2
|
||||
dYMirrorAx = ptOnMirrorAx:getY() - b3Tab:getMin():getY()
|
||||
EgtSetCurrMachining( nOperIdMaster)
|
||||
-- leggo note esistenti
|
||||
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
|
||||
-- aggiungo note per doppio
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'DOUBLE', 2)
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'MirrorAx', dYMirrorAx)
|
||||
-- scrivo le note della lavorazione
|
||||
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
|
||||
-- cancello l'operazione specchiata
|
||||
EgtRemoveOperation( nOperIdMirror)
|
||||
break
|
||||
end
|
||||
nOperIdMirror = EgtGetNextOperation( nOperIdMirror)
|
||||
end
|
||||
end
|
||||
nOperIdMaster = EgtGetNextOperation( nOperIdMaster)
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
function WallExec.ProcessFeatures()
|
||||
-- errori e stato
|
||||
@@ -962,7 +1037,7 @@ function WallExec.ProcessFeatures()
|
||||
local ProcId = vProcToDisable[i]
|
||||
if nOperationProcId == ProcId then
|
||||
nOperId = EgtGetNextOperation( nOperId)
|
||||
EgtRemoveOperation(nCurrentOperId)
|
||||
EgtRemoveOperation( nCurrentOperId)
|
||||
break
|
||||
end
|
||||
end
|
||||
@@ -971,15 +1046,7 @@ function WallExec.ProcessFeatures()
|
||||
end
|
||||
end
|
||||
|
||||
-- -- verifico le fresature da specchiare
|
||||
-- local nClId = EgtGetFirstNameInGroup( nOperId, 'CL')
|
||||
-- local nPathId = EgtGetFirstInGroup( nClId or GDB_ID.NULL)
|
||||
-- local vtTool = EgtGetInfo( nPathId, 'EXTR', 'v')
|
||||
-- local ptMin = EgtGetInfo( nClId, 'MMIN', 'p')
|
||||
-- local ptMax = EgtGetInfo( nClId, 'MMAX', 'p')
|
||||
-- local b3Operation = BBox3d( ptMin, ptMax)
|
||||
-- local sMachining = EgtGetMachiningParam( MCH_MP.NAME, 's')
|
||||
|
||||
SetMirroredOperations()
|
||||
|
||||
-- se macchina pareti
|
||||
if not WD.BEAM_MACHINE then
|
||||
|
||||
Reference in New Issue
Block a user