- TestElleShape 3 e 4 spostati in WallLib

- a DoubleCut aggiunto riconoscimento della sola L011
- in WallLib aggiunta funzione GetProcessAffectedFaces che restituisce le facce del grezzo interessate dalla feature
- in WallExec aggiunte alle Proc informazioni sulle facce della feature
- alcune modifiche iniziali per Mirror
This commit is contained in:
luca.mazzoleni
2023-06-20 09:35:25 +02:00
parent ac853fc74c
commit 1236d196ba
5 changed files with 158 additions and 61 deletions
+65 -1
View File
@@ -179,7 +179,17 @@ function WallExec.CollectFeatures( PartId, b3Raw)
Proc.CutId = nCutId
Proc.TaskId = nTaskId
Proc.Box = EgtGetBBoxGlob( ProcId, GDB_BB.STANDARD)
if Proc.Box and not Proc.Box:isEmpty() then
-- recupero l'elenco delle facce della parte interessate dalla feature
Proc.AffectedFaces = WL.GetProcessAffectedFaces( Proc, PartId)
-- recupero informazioni sulle facce della feature
Proc.Face = {}
for i = 1, Proc.Fct do
Proc.Face[i] = { Id = i - 1, VtN = EgtSurfTmFacetNormVersor( Proc.Id, i - 1, GDB_ID.ROOT ), Elevation = WL.GetFaceElevation( Proc.Id, i - 1, PartId)}
end
if Proc.Box and not Proc.Box:isEmpty() then
table.insert( vProc, Proc)
-- se foro
if Drill.Identify( Proc) then
@@ -580,6 +590,57 @@ local function SortMachinings( nPhase, PrevMch, nPartId)
return PrevMch
end
function VerifyLapJointMirrored( Proc, vProc, nPartId, b3Raw)
-- verifico se la geometria master è lavorabile in doppio (se la feature attuale è dal lato master)
local bIsThroughL = ( Proc.Fct == 2 and ( Proc.AffectedFaces == { true, true, false, false, true, true} or Proc.AffectedFaces == { true, false, false, true, true, true}))
local bIsU = ( Proc.Fct == 3 and not WL.TestElleShape3( Proc.Id, Proc.Fct))
local bAllowDifferentZ = false
-- 2 lati a L, passante
if bIsThroughL then
bAllowDifferentZ = true
-- 3 lati a U, passante
elseif bIsU then
-- sul fianco, parallela a X
if Proc.AffectedFaces == { false, true, false, false, true, true} or Proc.AffectedFaces == { false, false, false, true, true, true} then
bAllowDifferentZ = true
-- sopra
elseif Proc.AffectedFaces == { true, false, false, false, true, true} then
-- sul fianco, parallela a Z
elseif Proc.AffectedFaces == { true, true, true, false, false, false} then
end
-- 3 lati a L, non passante
elseif Proc.Fct == 3 then
-- 4 lati
elseif Proc.Fct == 4 then
-- 5 lati, tasca standard
elseif Proc.Fct == 5 then
end
-- se la condizione sopra è vera, verifico se esistono una o più altre features specchiate
-- se le condizioni sopra sono vere, lo segno nelle proprietà delle feature
end
-------------------------------------------------------------------------------------------------------------
-- Cerca in vProc la presenza di feature da lavorare in doppio.
local function SetMirroredFeatures( vProc, nPartId, b3Raw)
for i = 1, #vProc do
local Proc = vProc[i]
if Proc.Flg ~= 0 then
-- Proc.Double -> 2: specchiatura in Y
-- Proc.MirrorId -> Id della feature mirrorata
if ( ( LapJoint.Identify and Proc.Prc ~= 20) or DoubleCut.IdentifyStrict( Proc)) and true then -- aggiungere dipendenza da costante WallData!!
VerifyLapJointMirrored( Proc, vProc, nPartId, b3Raw)
end
end
end
end
-------------------------------------------------------------------------------------------------------------
function WallExec.ProcessFeatures()
-- errori e stato
@@ -611,6 +672,9 @@ function WallExec.ProcessFeatures()
if WD.FindFeaturesInDouble then
WD.FindFeaturesInDouble( vProc, b3Raw)
end
SetMirroredFeatures( vProc, nPartId, b3Raw)
-- debug
if EgtGetDebugLevel() >= 1 then
PrintFeatures( vProc)