- in FaceData GetMainFaces aggiunti MainEdges per SideFaces e piccole correzioni

This commit is contained in:
luca.mazzoleni
2024-06-03 16:41:24 +02:00
parent 342082bb82
commit 2edfd52628
2 changed files with 61 additions and 13 deletions
+55 -7
View File
@@ -125,7 +125,7 @@ function FaceData.GetFacesInfo( Proc, Part)
Faces[i].dArea = dShortEdgeDimension * dLongEdgeDimension
local nFaceType, vEdges = EgtSurfTmGetFacetOutlineInfo( Proc.id, i - 1, GDB_ID.ROOT)
Faces[i].IsOkForMachining = nFaceType < 1
Faces[i].bIsOkForMachining = nFaceType < 1
Faces[i].Edges = vEdges
-- TODO valutare se fare un output unico alla fine o gestire log in altro modo
@@ -220,7 +220,7 @@ local function GetBottomFace( Proc)
end
end
if not BottomFace.IsOkForMachining then
if not BottomFace.bIsOkForMachining then
return nil
end
@@ -308,10 +308,10 @@ local function GetLongFaces( Proc, MainFaces)
idSecondLongFace = BottomFace.MainEdges.LongEdges[2].idAdjacentFace
end
end
if idFirstLongFace > -1 then
if idFirstLongFace > -1 and Proc.Faces[idFirstLongFace + 1].bIsOkForMachining then
table.insert( LongFaces, Proc.Faces[idFirstLongFace + 1])
end
if idSecondLongFace > -1 then
if idSecondLongFace > -1 and Proc.Faces[idSecondLongFace + 1].bIsOkForMachining then
table.insert( LongFaces, Proc.Faces[idSecondLongFace + 1])
end
@@ -375,6 +375,7 @@ local function GetSideFaces( Proc, MainFaces)
error( 'GetSideFaces : Topology not implemented')
end
local BottomFace = MainFaces.BottomFace or GetBottomFace( Proc)
local LongFaces = MainFaces.LongFaces or GetLongFaces( Proc, MainFaces)
local idFirstSideFace = GDB_ID.NULL
@@ -385,16 +386,63 @@ local function GetSideFaces( Proc, MainFaces)
if not LongFaces[1].MainEdges.SideEdges[2].bIsOpen then
idSecondSideFace = LongFaces[1].MainEdges.SideEdges[2].idAdjacentFace
end
if idFirstSideFace > -1 then
if idFirstSideFace > -1 and Proc.Faces[idFirstSideFace + 1].bIsOkForMachining then
table.insert( SideFaces, Proc.Faces[idFirstSideFace + 1])
SideFaces[#SideFaces].Type = 'Side'
end
if idSecondSideFace > -1 then
if idSecondSideFace > -1 and Proc.Faces[idSecondSideFace + 1].bIsOkForMachining then
table.insert( SideFaces, Proc.Faces[idSecondSideFace + 1])
SideFaces[#SideFaces].Type = 'Side'
end
-- TODO aggiungere anche informazioni Edges??
for i = 1, #SideFaces do
SideFaces[i].Type = 'Side'
SideFaces[i].MainEdges = {}
SideFaces[i].MainEdges.LongEdges = {}
SideFaces[i].MainEdges.OppositeEdges = {}
for j = 1, #SideFaces[i].Edges do
local nPreviousEdgeIndex = j - 1
if j == 1 then
nPreviousEdgeIndex = #SideFaces[1].Edges
end
local nNextEdgeIndex = j + 1
if j == #SideFaces[i].Edges then
nNextEdgeIndex = 1
end
local CurrentEdge = {}
CurrentEdge.idAdjacentFace = SideFaces[i].Edges[j].Adj
CurrentEdge.vtToolDirection = Vector3d( SideFaces[i].Edges[j].Norm)
CurrentEdge.dLength = SideFaces[i].Edges[j].Len
CurrentEdge.dElevation = SideFaces[i].Edges[j].Elev
CurrentEdge.bIsOpen = SideFaces[i].Edges[j].Open
CurrentEdge.bIsStartOpen = SideFaces[i].Edges[nPreviousEdgeIndex].Open
CurrentEdge.bIsEndOpen = SideFaces[i].Edges[nNextEdgeIndex].Open
if Proc.Topology.sFamily == 'Tunnel' then
if CurrentEdge.idAdjacentFace > -1 then
table.insert( SideFaces[i].MainEdges.LongEdges, CurrentEdge)
else
table.insert( SideFaces[i].MainEdges.OppositeEdges, CurrentEdge)
end
else
if CurrentEdge.idAdjacentFace == BottomFace.id then
SideFaces[i].MainEdges.BottomEdge = CurrentEdge
SideFaces[i].MainEdges.BottomEdge.Type = 'Bottom'
elseif SideFaces[i].Edges[nNextEdgeIndex].Adj == BottomFace.id then
SideFaces[i].MainEdges.LongEdges[1] = CurrentEdge
SideFaces[i].MainEdges.LongEdges[1].Type = 'Long'
elseif SideFaces[i].Edges[nPreviousEdgeIndex].Adj == BottomFace.id then
SideFaces[i].MainEdges.LongEdges[2] = CurrentEdge
SideFaces[i].MainEdges.LongEdges[2].Type = 'Long'
else
table.insert( SideFaces[i].MainEdges.OppositeEdges, CurrentEdge)
SideFaces[i].MainEdges.OppositeEdges[#SideFaces[i].MainEdges.OppositeEdges].Type = 'Opposite'
end
end
end
end
return SideFaces
end