- in MachiningLib -> FindMachining si considera ottimizzazione teste solo per macchine tipo PF e non più per macchine tipo PF1250

- in SawPlusChain varie migliorie
This commit is contained in:
luca.mazzoleni
2024-05-15 17:08:50 +02:00
parent cc3b0da9e5
commit b150c75e96
2 changed files with 68 additions and 10 deletions
+64 -6
View File
@@ -4681,6 +4681,7 @@ function SawPlusChain.GetTunnelFaces( Proc)
if TunnelAddedFaces.MiddleFaceTm.Height > TunnelAddedFaces.MiddleFaceTm.Width then
TunnelAddedFaces.MiddleFaceTm.Height, TunnelAddedFaces.MiddleFaceTm.Width = TunnelAddedFaces.MiddleFaceTm.Width, TunnelAddedFaces.MiddleFaceTm.Height
end
TunnelAddedFaces.MiddleFaceTm.Type = 'Tunnel'
return TunnelAddedFaces
end
@@ -4712,6 +4713,7 @@ function SawPlusChain.GetBottomFace( Proc)
end
BottomFace.Id = nBottomFace
BottomFace.Type = 'Bottom'
BottomFace.Width = Proc.Face[nBottomFace + 1].Width
BottomFace.Height = Proc.Face[nBottomFace + 1].Height
BottomFace.Elevation = Proc.Face[nBottomFace + 1].Elevation
@@ -4725,6 +4727,7 @@ end
function SawPlusChain.GetLongFace( Proc)
local LongFace = {}
if not Proc.MainFaces.BottomFace or not Proc.MainFaces.BottomFace.Id then
Proc.MainFaces.BottomFace = SawPlusChain.GetBottomFace( Proc)
end
@@ -4746,10 +4749,10 @@ function SawPlusChain.GetLongFace( Proc)
end
-- si sceglie la più grande (tunnel) o quella adiacente sul lato lungo
local LongFace = {}
LongFace.Id = FacesToAnalyze[1].Id
for i = 1, Proc.Fct do
if LongFace.Id == Proc.Face[i].Id then
LongFace.Type = 'Long'
LongFace.Width = Proc.Face[i].Width
LongFace.Height = Proc.Face[i].Height
LongFace.Elevation = Proc.Face[i].Elevation
@@ -4760,8 +4763,6 @@ function SawPlusChain.GetLongFace( Proc)
end
end
LongFace.Edges = SawPlusChain.GetLongFaceEdges( Proc, LongFace)
return LongFace
end
@@ -4799,6 +4800,7 @@ function SawPlusChain.GetSideFaces( Proc)
( bIsLongFaceTheLargest and i > 2) then
table.insert( SideFaces, FacesToAnalyze[i])
SideFaces[#SideFaces].Id = FacesToAnalyze[i].Id
SideFaces[#SideFaces].Type = 'Side'
SideFaces[#SideFaces].Width = Proc.Face[FacesToAnalyze[i].Id + 1].Width
SideFaces[#SideFaces].Height = Proc.Face[FacesToAnalyze[i].Id + 1].Height
SideFaces[#SideFaces].Elevation = Proc.Face[FacesToAnalyze[i].Id + 1].Elevation
@@ -4813,6 +4815,51 @@ function SawPlusChain.GetSideFaces( Proc)
end
function SawPlusChain.GetBottomFaceEdges( Proc, Face)
local Edges = {}
Edges.SideEdges = {}
Edges.LongEdges = {}
local nFaceType, vEdges = EgtSurfTmGetFacetOutlineInfo( Proc.Id, Face.Id, GDB_ID.ROOT)
if nFaceType < 1 then
for j = 1, #vEdges do
local nPreviousEdgeIndex = j - 1
if j == 1 then
nPreviousEdgeIndex = #vEdges
end
local nNextEdgeIndex = j + 1
if j == #vEdges then
nNextEdgeIndex = 1
end
local CurrentEdge = {}
CurrentEdge.AdjacentFaceId = vEdges[j].Adj
CurrentEdge.ToolDirection = Vector3d( vEdges[j].Norm)
CurrentEdge.Length = vEdges[j].Len
CurrentEdge.Elevation = vEdges[j].Elev
CurrentEdge.IsOpen = vEdges[j].Open
CurrentEdge.IsStartOpen = ( vEdges[nPreviousEdgeIndex].Open)
CurrentEdge.IsEndOpen = ( vEdges[nNextEdgeIndex].Open)
if CurrentEdge.AdjacentFaceId == Proc.MainFaces.LongFace.Id then
table.insert( Edges.LongEdges, CurrentEdge)
Edges.LongEdges[#Edges.LongEdges].Type = 'Long'
elseif vEdges[nNextEdgeIndex].Adj == Proc.MainFaces.LongFace.Id or vEdges[nPreviousEdgeIndex].Adj == Proc.MainFaces.LongFace.Id then
table.insert( Edges.SideEdges, CurrentEdge)
Edges.SideEdges[#Edges.SideEdges].Type = 'Side'
else
table.insert( Edges.LongEdges, CurrentEdge)
Edges.LongEdges[#Edges.LongEdges].Type = 'Long'
end
end
else
error( 'Face with closed hole')
end
return Edges
end
function SawPlusChain.GetLongFaceEdges( Proc, Face)
local Edges = {}
Edges.SideEdges = {}
@@ -4857,6 +4904,7 @@ function SawPlusChain.GetLongFaceEdges( Proc, Face)
Edges.SideEdges.EndEdge.Type = 'Side'
else
table.insert( Edges.OppositeEdges, CurrentEdge)
Edges.OppositeEdges[#Edges.OppositeEdges].Type = 'Opposite'
end
end
end
@@ -5084,7 +5132,11 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc, FaceToMachine, Edg
if Proc.Topology == 'Tunnel' then
dPocketHeight = Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Height
else
dPocketHeight = Proc.MainFaces.BottomFace.Height
if FaceToMachine.Type == 'Long' then
dPocketHeight = Proc.MainFaces.BottomFace.Edges.SideEdges[1].Length
elseif FaceToMachine.Type == 'Side' then
dPocketHeight = Proc.MainFaces.BottomFace.Edges.LongEdges[1].Length
end
end
-- ricerca lavorazione
@@ -5254,8 +5306,11 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc, FaceToMachine
if Proc.Topology == 'Tunnel' then
dPocketHeight = Proc.MainFaces.TunnelAddedFaces.MiddleFaceTm.Height
else
-- TODO qui non va bene, sostituire con la lunghezza del lato della BottomFace corrispondente alla faccia lavorata
dPocketHeight = Proc.MainFaces.BottomFace.Height
if FaceToMachine.Type == 'Long' then
dPocketHeight = Proc.MainFaces.BottomFace.Edges.SideEdges[1].Length
elseif FaceToMachine.Type == 'Side' then
dPocketHeight = Proc.MainFaces.BottomFace.Edges.LongEdges[1].Length
end
end
-- ricerca lavorazione
@@ -5447,7 +5502,10 @@ function SawPlusChain.Make( bOnlySaw, Proc, nRawId)
Proc.MainFaces.SideFaces = SawPlusChain.GetSideFaces( Proc)
if Proc.Topology == 'Tunnel' then
Proc.MainFaces.TunnelAddedFaces = SawPlusChain.GetTunnelFaces( Proc)
else
Proc.MainFaces.BottomFace.Edges = SawPlusChain.GetBottomFaceEdges( Proc, Proc.MainFaces.BottomFace)
end
Proc.MainFaces.LongFace.Edges = SawPlusChain.GetLongFaceEdges( Proc, Proc.MainFaces.LongFace)
-- lama
-- lavorazione di lama - fondo della tasca o fino a massimo materiale se tunnel