diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 66167cc..0ab6135 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -324,6 +324,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) -- leggo se ci sono feature collegate local nAddAdjId = EgtGetInfo( ProcId, 'ADJID', 'i') local nAddMainId = EgtGetInfo( ProcId, 'MAINID', 'i') + local nFeatureId = EgtGetInfo( ProcId, 'PRID', 'i') if nGrp and nPrc and nDo == 1 then local Proc = {} Proc.PartId = PartId @@ -337,6 +338,7 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) Proc.Fce = 0 Proc.CutId = nCutId Proc.TaskId = nTaskId + Proc.FeatureId = nFeatureId or Proc.TaskId -- se ci sono feature collegate ne scrivo il riferimento nella Proc if nAddAdjId then Proc.AdjId = Proc.Id + nAddAdjId @@ -345,8 +347,6 @@ local function CollectFeatures( PartId, b3Raw, dCurrOvmH, dCurrOvmT) end Proc.Box = EgtGetBBoxGlob( ProcId, GDB_BB.STANDARD) if b3Raw then - -- id della feature - Proc.FeatureId = EgtGetInfo( ProcId, 'PRID', 'i') or Proc.TaskId -- recupero l'elenco delle facce della parte interessate dalla feature Proc.AffectedFaces = BL.GetProcessAffectedFaces( Proc) -- recupero informazioni sulle facce della feature @@ -2100,6 +2100,10 @@ function BeamExec.ProcessFeatures() -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and Proc.Down then + -- dato che ho ruotato, aggiorno alcune proprietà della feature + Proc.Box = EgtGetBBoxGlob( Proc.Id, GDB_BB.STANDARD) + Proc.Face = BL.GetFacetsInfo( Proc, b3Raw) + Proc.AffectedFaces = BL.GetProcessAffectedFaces( Proc) Proc.PrevDouble = nPrevDouble nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, bNeedHCut, b3Raw, nOrd, sDownOrSideOrStd, nil, nil, dCurrOvmT) @@ -2177,6 +2181,10 @@ function BeamExec.ProcessFeatures() -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and Proc.Side then + -- dato che ho ruotato, aggiorno alcune proprietà della feature + Proc.Box = EgtGetBBoxGlob( Proc.Id, GDB_BB.STANDARD) + Proc.Face = BL.GetFacetsInfo( Proc, b3Raw) + Proc.AffectedFaces = BL.GetProcessAffectedFaces( Proc) Proc.PrevDouble = nPrevDouble nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, false, b3Raw, nOrd, sDownOrSideOrStd, bPreMove, vtMove, dCurrOvmT) @@ -2242,6 +2250,10 @@ function BeamExec.ProcessFeatures() -- creo la lavorazione local Proc = vProc[i] if Proc.Flg ~= 0 and ( not ( Proc.Down or Proc.Side) or BD.DOWN_HEAD or BD.TURN) then + -- dato che ho ruotato, aggiorno alcune proprietà della feature + Proc.Box = EgtGetBBoxGlob( Proc.Id, GDB_BB.STANDARD) + Proc.Face = BL.GetFacetsInfo( Proc, b3Raw) + Proc.AffectedFaces = BL.GetProcessAffectedFaces( Proc) Proc.PrevDouble = nPrevDouble nPrevDouble = Proc.Double local bOk, sMsg, nNewPhase = AddFeatureMachining( Proc, nPhase, nRawId, nPartId, dCurrOvmH, false, b3Raw, nOrd, sDownOrSideOrStd, nil, nil, dCurrOvmT) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 11178a2..69b2963 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -5455,9 +5455,10 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa local bIsU = ( Proc.Fct == 3 and not TestElleShape3( Proc)) -- verifico se due facce o L con una o due facce di terminazione local bIsL = ( Proc.Fct == 2 or TestElleShape3( Proc) or TestElleShape4( Proc) == 2) - -- se parametro Q03=2 forzo la fresatura di lato; con Q03=3 forzo solo se la faccia di lavoro non è rivolta verso l'alto +/-10°; se rabbet lungo X che guarda in giù sempre fresatura di lato + -- se parametro Q03=2 forzo la fresatura di lato; con Q03=3 forzo solo se la faccia di lavoro non è rivolta verso l'alto +/-10°; per rabbet e groove che guardano in giù sempre fresatura di lato local bIsRabbetAlongXTowardsBottom = ( Proc.TopologyLongName == 'Rabbet-Through-RightAngles-Parallel-2' and ( Proc.AffectedFaces.Front or Proc.AffectedFaces.Back) and Proc.AffectedFaces.Bottom and Proc.AffectedFaces.Left and Proc.AffectedFaces.Right) - local bForceSideMill = bIsRabbetAlongXTowardsBottom or ( ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') == 2 or ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') == 3 and vtN:getZ() < 0.985)) and ( ( Proc.Fct == 4 and ( Proc.AffectedFaces.Front or Proc.AffectedFaces.Back)) or Proc.Fct == 3 or Proc.Fct == 2)) + local bIsBlindGrooveAlongXTowardsBottom = ( Proc.TopologyLongName == 'Groove-Blind-RightAngles-Parallel-3' and ( Proc.AffectedFaces.Front or Proc.AffectedFaces.Back) and Proc.AffectedFaces.Bottom and ( Proc.AffectedFaces.Left or Proc.AffectedFaces.Right)) + local bForceSideMill = bIsRabbetAlongXTowardsBottom or bIsBlindGrooveAlongXTowardsBottom or ( ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') == 2 or ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'i') == 3 and vtN:getZ() < 0.985)) and ( ( Proc.Fct == 4 and ( Proc.AffectedFaces.Front or Proc.AffectedFaces.Back)) or Proc.Fct == 3 or Proc.Fct == 2)) -- se fattibile con fresa BH di fianco e spessore utensile inferiore alla larghezza faccia local bMakeBySideMill, bHead, bHeadDir, sMilling, dMaxMat, dToolDiam = VerifyBHSideMill( Proc, bIsU, bIsL, bSinglePart, bPrevBhSideMill) if bPrevBhSideMill == nil then @@ -6497,7 +6498,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead) for i = 1, #vAddId do local b3Box = EgtGetBBoxGlob( vAddId[i], GDB_BB.STANDARD) local nFct = EgtSurfTmFacetCount( vAddId[i]) - local AddProc = { Id = vAddId[i], Grp = Proc.Grp, Prc = Proc.Prc, Box = b3Box, TotBox = Proc.Box, Fct = nFct, Flg = Proc.Flg, PartId = Proc.PartId, TaskId = Proc.TaskId, FeatureId = Proc.FeatureId, IsSplittedLapJoint = true} + local AddProc = { Id = vAddId[i], Grp = Proc.Grp, Prc = Proc.Prc, Box = b3Box, TotBox = Proc.Box, Fct = nFct, Flg = Proc.Flg, PartId = Proc.PartId, TaskId = Proc.TaskId, FeatureId = Proc.FeatureId, IsSplittedLapJoint = true, AffectedFaces = Proc.AffectedFaces} Topology.Classify( AddProc, b3Raw) -- lasciare il false nel sesto parametro (perchè internamente viene verificato se diverso da nil) local bOk, sMyWarn