From f6e8f2c0bd276ca7d1e4ab86e732e148f9478a3c Mon Sep 17 00:00:00 2001 From: Michel Date: Tue, 17 Dec 2024 11:06:39 +0100 Subject: [PATCH] Remove obsolete Face.AllEdgesIterated() --- CADability/BRepIntersection.cs | 86 ++++++++++++++++----------------- CADability/Constr3DScrewPath.cs | 4 +- CADability/Face.cs | 68 ++++++++++---------------- CADability/ImportStep.cs | 2 +- CADability/Make3D.cs | 10 ++-- CADability/Parametric.cs | 20 ++++---- CADability/RemoveFillet.cs | 6 +-- CADability/Shell.cs | 22 ++++----- 8 files changed, 100 insertions(+), 118 deletions(-) diff --git a/CADability/BRepIntersection.cs b/CADability/BRepIntersection.cs index 67399183..d6e592b7 100644 --- a/CADability/BRepIntersection.cs +++ b/CADability/BRepIntersection.cs @@ -1749,7 +1749,7 @@ public BRepOperation(Shell s1, Shell s2, Operation operation) //{ // if (fce.Surface is ConicalSurface) // { - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // ICurve2D cv = fce.Surface.GetProjectedCurve(edg.Curve3D, 0.0); // if (!edg.Forward(fce)) cv.Reverse(); @@ -2138,7 +2138,7 @@ public static Shell RoundEdges(Shell toRound, Edge[] edges, double radius) Face part = Face.MakeFace(fillet.Surface.Clone(), new SimpleShape(bdr)); if (part != null) { - foreach (Edge fedg in part.AllEdgesIterated()) + foreach (Edge fedg in part.Edges) { if (fedg.PrimaryCurve2D.UserData.Contains("BRepOperation.OnFace1")) { @@ -2181,7 +2181,7 @@ public static Shell RoundEdges(Shell toRound, Edge[] edges, double radius) if (vertexToEdge.Key == edg.Vertex1) // the axis curve goes from edg.Vertex1 to edg.Vertex2 { cnt = filletAxis.StartPoint; - foreach (Edge edge in filletFace.AllEdgesIterated()) + foreach (Edge edge in filletFace.Edges) { if (edge.Curve3D is Ellipse elli) { @@ -2198,7 +2198,7 @@ public static Shell RoundEdges(Shell toRound, Edge[] edges, double radius) else // if (vertexToEdge.Key == edg.Vertex2) // which mus be the case { cnt = filletAxis.EndPoint; - foreach (Edge edge in filletFace.AllEdgesIterated()) + foreach (Edge edge in filletFace.Edges) { if (edge.Curve3D is Ellipse elli) { @@ -2218,7 +2218,7 @@ public static Shell RoundEdges(Shell toRound, Edge[] edges, double radius) Line l1 = Line.TwoPoints(cnt, cnt + 2 * radius * dir); // 2*radius is arbitrary! Face filletExtend = Make3D.ExtrudeCurveToFace(arc, l1); // this cylindrical face has two line edges, which may or may not be tangential to the primary and secondary face of the rounded edge - foreach (Edge cedg in filletExtend.AllEdgesIterated()) + foreach (Edge cedg in filletExtend.Edges) { if (cedg.Curve3D is Line l) { @@ -3265,7 +3265,7 @@ public Shell[] Result() int dbgc = 0; double arrowSize = kv.Key.Area.GetExtent().Size * 0.02; dc.Add(kv.Value, kv.Key, arrowSize, Color.Red, 0); - dc.Add(kv.Key.AllEdgesIterated(), kv.Key, arrowSize, Color.Blue, 0); + dc.Add(kv.Key.Edges, kv.Key, arrowSize, Color.Blue, 0); } #endif #if DEBUG @@ -3286,7 +3286,7 @@ public Shell[] Result() int dbgc = 0; double arrowSize = kv.Key.Area.GetExtent().Size * 0.02; dc.Add(kv.Value, kv.Key, arrowSize, Color.Red, 0); - dc.Add(kv.Key.AllEdgesIterated(), kv.Key, arrowSize, Color.Blue, 0); + dc.Add(kv.Key.Edges, kv.Key, arrowSize, Color.Blue, 0); } #endif Set discardedFaces = new Set(faceToIntersectionEdges.Keys); // these faces may not appear in the final result, because they will be trimmed @@ -3319,7 +3319,7 @@ public Shell[] Result() // if the duplicates have the same orientation, discard one of the edges, if they have opposite direction, discard both Dictionary, Edge> avoidDuplicates = new Dictionary, Edge>(); Dictionary, Edge> avoidOriginalEdges = new Dictionary, Edge>(); - foreach (Edge edg in faceToSplit.AllEdgesIterated()) + foreach (Edge edg in faceToSplit.Edges) { Pair k = new Pair(edg.StartVertex(faceToSplit), edg.EndVertex(faceToSplit)); avoidOriginalEdges[k] = edg; @@ -3768,7 +3768,7 @@ public Shell[] Result() added = false; foreach (Face fce in allFaces.Clone()) // use a clone to be able to add faces to allfaces in this foreach loop { - foreach (Edge edg in fce.AllEdgesIterated()) + foreach (Edge edg in fce.Edges) { if (!allFaces.Contains(edg.PrimaryFace)) { @@ -4214,7 +4214,7 @@ private List FindLoop(Edge edg, Vertex startVertex, Face onThisFace, Set discardedFaces = new Set(faceToIntersectionEdges.Keys); // these faces may not apper in the final result, because they will be trimmed @@ -4243,7 +4243,7 @@ private List FindLoop(Edge edg, Vertex startVertex, Face onThisFace, Set> kv in faceToIntersectionEdges) @@ -4265,7 +4265,7 @@ private List FindLoop(Edge edg, Vertex startVertex, Face onThisFace, Set, Edge> avoidDuplicates = new Dictionary, Edge>(); // Dictionary, Edge> avoidOriginalEdges = new Dictionary, Edge>(); - // foreach (Edge edg in faceToSplit.AllEdgesIterated()) + // foreach (Edge edg in faceToSplit.Edges) // { // Pair k = new Pair(edg.StartVertex(faceToSplit), edg.EndVertex(faceToSplit)); // avoidOriginalEdges[k] = edg; @@ -4341,7 +4341,7 @@ private List FindLoop(Edge edg, Vertex startVertex, Face onThisFace, Set FindLoop(Edge edg, Vertex startVertex, Face onThisFace, Set con1, List con2, Face face1 // Set openEdges = new Wintellect.PowerCollections.Set(); // foreach (Face fce in cancelledfaces) // { - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // edg.RemoveFace(fce); // openEdges.Add(edg); @@ -6019,7 +6019,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // // - common to both faces // // - edge of face1 which is inside face2 (easy to check, because common edges don't need to be checked here) // // - vice versa - // foreach (Edge edg in dfk.face1.AllEdgesIterated()) + // foreach (Edge edg in dfk.face1.Edges) // { // foreach (Edge edg2 in Vertex.ConnectingEdges(edg.Vertex1, edg.Vertex2)) // { @@ -6038,7 +6038,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // } // } // } - // foreach (Edge edg in dfk.face1.AllEdgesIterated()) + // foreach (Edge edg in dfk.face1.Edges) // { // if (commonEdges.Contains(edg)) continue; // already processed // // is this edge inside the bounds of face2? @@ -6064,7 +6064,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // } // } // BoundingRect face1Domain = dfk.face1.Area.GetExtent(); - // foreach (Edge edg in dfk.face2.AllEdgesIterated()) + // foreach (Edge edg in dfk.face2.Edges) // { // if (commonEdges.Contains(edg)) continue; // already processed // // is this edge inside the bounds of face1? @@ -6138,7 +6138,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // // Surface wird hier gecloned, denn es können mehrere Faces mit der selben Surface entstehen // // und diese Surface würde sonst bei ReverseOrientation (bei union) ggf. mehrfach umgedreht // fc.Set(dfk.face1.Surface.Clone(), outline, holes); - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (edg.Curve3D != null) edg.SurfaceChanged(dfk.face1.Surface, fc.Surface); // } @@ -6188,7 +6188,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // } // } // availableEdges.AddMany(faceToSplitEdges); - // //foreach (Edge edg in faceToSplit.AllEdgesIterated()) + // //foreach (Edge edg in faceToSplit.Edges) // //{ // // bool dontUseEdg = false; // // foreach (Edge tst in Vertex.ConnectingEdges(edg.Vertex1, edg.Vertex2)) @@ -6218,7 +6218,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // DebuggerContainer dc0 = new CADability.DebuggerContainer(); // double arrowsize = faceToSplit.Area.GetExtent().Size / 100.0; // //dc.Add(fc.DebugEdges2D.toShow); - // foreach (Edge edg in faceToSplit.AllEdgesIterated()) + // foreach (Edge edg in faceToSplit.Edges) // { // dc0.Add(edg.Curve2D(faceToSplit), Color.Blue, edg.GetHashCode()); // } @@ -6299,7 +6299,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 //#if DEBUG // SimpleShape dbga = fc.Area; //#endif - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (edg.Curve3D != null) edg.SurfaceChanged(faceToSplit.Surface, fc.Surface); // } @@ -6323,7 +6323,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // } // } //#if DEBUG - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (edg.Curve3D is InterpolatedDualSurfaceCurve) // { @@ -6427,7 +6427,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // // diese sollen hier jetzt zusammengenäht werden (die Vertices sind ja eindeutig und nur einmal vorhanden) // foreach (Face fc in trimmedFaces) // { - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (destroyedFaces.Contains(edg.PrimaryFace)) edg.RemovePrimaryFace(); // if (edg.SecondaryFace != null && destroyedFaces.Contains(edg.SecondaryFace)) edg.RemoveSecondaryFace(); @@ -6477,7 +6477,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // Set moreFaces = new Set(); // foreach (Face fce in facesToAdd) // { - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // if (!allFaces.Contains(edg.PrimaryFace) && !destroyedFaces.Contains(edg.PrimaryFace)) // { @@ -6521,7 +6521,7 @@ internal static bool SameConnection(List con1, List con2, Face face1 // Set allEdges = new Set(); // foreach (Face fce in allFaces) // { - // allEdges.AddMany(fce.AllEdgesIterated()); + // allEdges.AddMany(fce.Edges); // } // while (toConnect.Count > 0) // { @@ -7964,7 +7964,7 @@ internal static Dictionary> SortCycles(List> cycles, F // foreach (Face fce in intersectionFaces) // { // fce.UserData.Clear(); - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // edg.PrimaryCurve2D.UserData.Clear(); // UserData stört das Serialisieren, da es Set<> enthält, damit geht DebuggerVisualizer auch nicht // edg.SecondaryCurve2D.UserData.Clear(); // UserData stört das Serialisieren, da es Set<> enthält, damit geht DebuggerVisualizer auch nicht @@ -7980,7 +7980,7 @@ internal static Dictionary> SortCycles(List> cycles, F // List> combineEdges = new List>(); // foreach (Face fce in intersectionFaces) // { - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // DoubleVertexKey vk = new DoubleVertexKey(edg.StartVertex(fce), edg.EndVertex(fce)); // Pair other; @@ -8008,7 +8008,7 @@ internal static Dictionary> SortCycles(List> cycles, F // foreach (Face fc in intersectionFaces) // { // dcif.Add(fc); - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (edg.PrimaryFace == null || edg.SecondaryFace == null) // { @@ -8043,7 +8043,7 @@ internal static Dictionary> SortCycles(List> cycles, F //#if DEBUG // foreach (Face fc in intersectionFaces) // { - // foreach (Edge edg in fc.AllEdgesIterated()) + // foreach (Edge edg in fc.Edges) // { // if (edg.PrimaryFace == null || edg.SecondaryFace == null) // { @@ -8070,7 +8070,7 @@ internal static Dictionary> SortCycles(List> cycles, F // Set moreFaces = new Set(); // foreach (Face fce in facesToAdd) // { - // foreach (Edge edg in fce.AllEdgesIterated()) + // foreach (Edge edg in fce.Edges) // { // if (!allFaces.Contains(edg.PrimaryFace)) // { @@ -8116,7 +8116,7 @@ internal static Set extractConnectedFaces(Set allFaces, Face startWi Set result = new Set(); result.Add(startWith); allFaces.Remove(startWith); - foreach (Edge edge in startWith.AllEdgesIterated()) + foreach (Edge edge in startWith.Edges) { if (allFaces.Contains(edge.SecondaryFace) && edge.IsOrientedConnection) { @@ -8232,7 +8232,7 @@ private void createNewEdges() //Set overlapping1 = findOverlappingPartner(item.Key.face1); //if (overlapping1.Count > 0) //{ - // foreach (Edge edg in item.Key.face2.AllEdgesIterated()) + // foreach (Edge edg in item.Key.face2.Edges) // { // if (overlapping1.Contains(edg.OtherFace(item.Key.face2))) edgesOnOverlappingFaces.Add(edg); // } @@ -8240,7 +8240,7 @@ private void createNewEdges() //Set overlapping2 = findOverlappingPartner(item.Key.face2); //if (overlapping2.Count > 0) //{ - // foreach (Edge edg in item.Key.face1.AllEdgesIterated()) + // foreach (Edge edg in item.Key.face1.Edges) // { // if (overlapping2.Contains(edg.OtherFace(item.Key.face1))) edgesOnOverlappingFaces.Add(edg); // } @@ -9343,7 +9343,7 @@ public BRepSelfIntersection(Shell shell, Shell original, double offset) DebuggerContainer dc = new CADability.DebuggerContainer(); double arrowsize = fc.Area.GetExtent().Size / 100.0; //dc.Add(fc.DebugEdges2D.toShow); - foreach (Edge edg in fc.AllEdgesIterated()) + foreach (Edge edg in fc.Edges) { dc.Add(edg.Curve2D(fc), Color.Blue, edg.GetHashCode()); } @@ -9367,7 +9367,7 @@ public BRepSelfIntersection(Shell shell, Shell original, double offset) } DebuggerContainer dcok = new CADability.DebuggerContainer(); - foreach (Edge edg in fc.AllEdgesIterated()) + foreach (Edge edg in fc.Edges) { if (distOk(edg.Vertex1.Position) && distOk(edg.Vertex2.Position)) dcok.Add(edg.Curve2D(fc), Color.Blue, edg.GetHashCode()); @@ -9424,7 +9424,7 @@ public Shell[] Result(bool allowOpenEdges) // hier haben wir edges in kv.Value und andere in kv.Key.AllEdges // die sind bereits über ihre vertices richtig miteinander verbunden // (es gibt hoffentlich keine geschlossenen Kanten) - Set unusedEdges = new Set(kv.Key.AllEdgesIterated()); + Set unusedEdges = new Set(kv.Key.Edges); unusedEdges.AddMany(kv.Value); #if DEBUG Set allVtx = new Set(); @@ -9437,7 +9437,7 @@ public Shell[] Result(bool allowOpenEdges) DebuggerContainer dc0 = new CADability.DebuggerContainer(); double arrowsize = kv.Key.Area.GetExtent().Size / 100.0; //dc.Add(fc.DebugEdges2D.toShow); - foreach (Edge edg in kv.Key.AllEdgesIterated()) + foreach (Edge edg in kv.Key.Edges) { dc0.Add(edg.Curve2D(kv.Key), Color.Blue, edg.GetHashCode()); } @@ -9573,7 +9573,7 @@ public Shell[] Result(bool allowOpenEdges) int[] triangleIndex; BoundingCube triangleExtent; fc.GetTriangulation(0.01, out trianglePoint, out triangleUVPoint, out triangleIndex, out triangleExtent); - foreach (Edge edg in fc.AllEdgesIterated()) + foreach (Edge edg in fc.Edges) { if (edg.Curve3D!=null) { @@ -9591,7 +9591,7 @@ public Shell[] Result(bool allowOpenEdges) Set moreFaces = new Set(); foreach (Face fce in facesToAdd) { - foreach (Edge edg in fce.AllEdgesIterated()) + foreach (Edge edg in fce.Edges) { if (!allFaces.Contains(edg.PrimaryFace) && !destroyedFaces.Contains(edg.PrimaryFace)) { @@ -9661,7 +9661,7 @@ private void collectFaces(Face startWith, Set unusedfaces, Set conne { unusedfaces.Remove(startWith); connected.Add(startWith); - foreach (Edge edg in startWith.AllEdgesIterated()) + foreach (Edge edg in startWith.Edges) { if (edg.PrimaryFace != null && unusedfaces.Contains(edg.PrimaryFace)) collectFaces(edg.PrimaryFace, unusedfaces, connected); if (edg.SecondaryFace != null && unusedfaces.Contains(edg.SecondaryFace)) collectFaces(edg.SecondaryFace, unusedfaces, connected); @@ -10239,7 +10239,7 @@ public static void Test(Face fc1, Face fc2) { DebuggerContainer dc = new CADability.DebuggerContainer(); List points = new List(); - foreach (Edge edg in fc2.AllEdgesIterated()) + foreach (Edge edg in fc2.Edges) { GeoPoint[] ip; GeoPoint2D[] uvOnFace; @@ -10252,7 +10252,7 @@ public static void Test(Face fc1, Face fc2) points.Add(ip[i]); } } - foreach (Edge edg in fc1.AllEdgesIterated()) + foreach (Edge edg in fc1.Edges) { GeoPoint[] ip; GeoPoint2D[] uvOnFace; diff --git a/CADability/Constr3DScrewPath.cs b/CADability/Constr3DScrewPath.cs index dbd27fdc..eec57083 100644 --- a/CADability/Constr3DScrewPath.cs +++ b/CADability/Constr3DScrewPath.cs @@ -51,7 +51,7 @@ public Constr3DScrewPath(GeoObjectList selectedObjects) // here we could directely set shape and plane } clones.Clear(); - foreach (Edge edg in (selectedObjects[0] as Face).AllEdgesIterated()) + foreach (Edge edg in (selectedObjects[0] as Face).Edges) { if (edg.Curve3D != null) clones.Add(edg.Curve3D as IGeoObject); } @@ -87,7 +87,7 @@ static public bool canUseList(GeoObjectList selectedObjects) { if ((selectedObjects[0] as Face).Surface is PlaneSurface) return true; clones.Clear(); - foreach (Edge edg in (selectedObjects[0] as Face).AllEdgesIterated()) + foreach (Edge edg in (selectedObjects[0] as Face).Edges) { if (edg.Curve3D != null) clones.Add(edg.Curve3D as IGeoObject); } diff --git a/CADability/Face.cs b/CADability/Face.cs index 007ca876..e36557e6 100644 --- a/CADability/Face.cs +++ b/CADability/Face.cs @@ -3509,7 +3509,7 @@ internal static Face MakeFace(ISurface surface, Edge[] outline) res.outline = outline; res.holes = new Edge[0][]; // keine Löcher SimpleShape forceArea = res.Area; // das SimpleShape wird hier erstmalig berechnet - foreach (Edge edge in res.AllEdgesIterated()) + foreach (Edge edge in res.Edges) { if (edge.Curve3D is IGeoObject go) go.Style = EdgeStyle; } @@ -3751,7 +3751,7 @@ internal void RemoveEdge(Edge edge, bool mayHaveDifferntVertices = false) #endif public void FreeCachedMemory() { - foreach (Edge edge in AllEdgesIterated()) + foreach (Edge edge in Edges) { edge.FreeCachedMemory(); } @@ -4287,38 +4287,20 @@ public Edge[] AllEdges return res.ToArray(); } } - [Obsolete("renamed to Edges")] - public IEnumerable AllEdgesIterated() - { - for (int i = 0; i < outline.Length; ++i) - { - yield return outline[i]; - } - for (int i = 0; i < holes.Length; i++) - { - for (int j = 0; j < holes[i].Length; ++j) - { - yield return holes[i][j]; - } - } - } + public IEnumerable Edges { get { - for (int i = 0; i < outline.Length; ++i) - { - yield return outline[i]; - } - for (int i = 0; i < holes.Length; i++) - { - for (int j = 0; j < holes[i].Length; ++j) - { - yield return holes[i][j]; - } - } + foreach (var edge in outline) + yield return edge; + + foreach (var hole in holes) + foreach (var edge in hole) + yield return edge; } } + public Set AllEdgesSet { get @@ -4480,7 +4462,7 @@ internal List FindEdges(GeoPoint2D uv) { // find the edge(s) that are close to this 2d point on the surface List res = new List(); GeoPoint p = Surface.PointAt(uv); - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { ICurve2D c2d = edg.Curve2D(this); double d = c2d.MinDistance(uv); @@ -4808,7 +4790,7 @@ internal void SubstitudeEdge(Edge oldEdge, Edge newEgde) private Edge findEdgeFromCurve2D(double precision, ICurve2D c2d) { // suche die Kante, die c2d entspricht. c2d kann auch nur ein Teil der Kante sein oder auch garnicht zu den Kanten gehören (aber dann nicht schneiden - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { ICurve2D e2d = edg.Curve2D(this); double d = Math.Abs(e2d.MinDistance(c2d.StartPoint)); @@ -5279,7 +5261,7 @@ internal bool Simplify(double precision) //bounds.Top = double.MaxValue; } canonical.SetBounds(bounds); // need finite bounds for boxedsurface - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { if (edg.Curve3D != null) { @@ -7392,7 +7374,7 @@ public double Distance(GeoPoint fromHere) if (res == double.MaxValue) { // wenn es einen Fußpunkt auf die Fläche gibt, dann ist der näher als die Kanten // stimmt das im Allgemeinen??? - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { if (edg.Curve3D != null) { @@ -8546,7 +8528,7 @@ public bool MakeRegularSurface(double maxError) ModOp2D modify; if ((surface as NurbsSurface).GetSimpleSurface(maxError, out simpleSurface, out modify)) { - foreach (Edge edge in AllEdgesIterated()) + foreach (Edge edge in Edges) { if (edge.PrimaryFace == this) { @@ -8574,7 +8556,7 @@ internal ModOp2D MakeRegularSurface(double maxError, Set recalcEdges) if ((surface as NurbsSurface).GetSimpleSurface(maxError, out simpleSurface, out modify)) { // die Kanten werden grundlegend neu berechnet, die 2D Kurven werden neu gemacht, es ist hier also // keine Modifikation der 2D Kurven nötig. - recalcEdges.AddMany(AllEdgesIterated()); + recalcEdges.AddMany(Edges); this.surface = simpleSurface; this.area = null; // aber noch nicht neu berechnen return modify; @@ -8634,7 +8616,7 @@ internal void IntersectAndPosition(Edge edg, out GeoPoint[] ip, out GeoPoint2D[] } if (!added) { // BRepOperation needs the point if it is close egnough to an edge - foreach (Edge edge in AllEdgesIterated()) + foreach (Edge edge in Edges) { if (edge.Curve3D != null) { @@ -8756,7 +8738,7 @@ internal void CollectConnectedFaces(HashSet collection, ICollection if (!collection.Contains(this)) { collection.Add(this); - foreach (Edge edge in AllEdgesIterated()) + foreach (Edge edge in Edges) { if (!bounds.Contains(edge)) edge.OtherFace(this).CollectConnectedFaces(collection, bounds); } @@ -8958,7 +8940,7 @@ public void ReverseOrientation() { vtx.RemovePositionOnFace(this); } - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { edg.Orient(); // ModifyCurve2D unsets the "oriented"-Flag of the edge. Maybe the edge has already been oriented, so ReverseOrientation(this) doesn't help if (edg.Curve3D is InterpolatedDualSurfaceCurve) @@ -9034,7 +9016,7 @@ internal void MakeInverseOrientation() { ReverseOrientation(); // das ist identisch mit diesem hier!! return; - + //Unreachable code /* SimpleShape ss = Area; @@ -9881,7 +9863,7 @@ internal bool UseEdge(Edge toUse) if (toUse.Curve3D == null) return false; GeoPoint startPoint = toUse.Curve3D.StartPoint; GeoPoint endPoint = toUse.Curve3D.EndPoint; - foreach (Edge edg in AllEdgesIterated()) + foreach (Edge edg in Edges) { if ((edg.Vertex1.Position | startPoint) + (edg.Vertex2.Position | endPoint) < Precision.eps || (edg.Vertex2.Position | startPoint) + (edg.Vertex1.Position | endPoint) < Precision.eps) { @@ -10233,8 +10215,8 @@ internal Set CombineWith(Face other, ModOp2D toOtherSurface) Vertex[] dbg1 = this.Vertices; Vertex[] dbg2 = other.Vertices; - Set onThis = new Set(AllEdgesIterated()); - Set onOther = new Set(other.AllEdgesIterated()); + Set onThis = new Set(Edges); + Set onOther = new Set(other.Edges); Set usableEdges = onThis.SymmetricDifference(onOther); // all edges of the resulting face, which belong to one of the faces but not to both Set commonEdges = onThis.Intersection(onOther); // these will be removed List> loops = new List>(); // the loops, one of them is the outline, the others are holes @@ -10544,7 +10526,7 @@ internal bool CheckConsistency() public bool IsConnectedWith(Face fc1) { - foreach (Edge edge in AllEdgesIterated()) + foreach (Edge edge in Edges) { if (edge.PrimaryFace == this && edge.SecondaryFace == fc1) return true; if (edge.SecondaryFace == this && edge.PrimaryFace == fc1) return true; @@ -10834,7 +10816,7 @@ public static bool ConnectTwoFaces(Face face1, Face face2, double precision) // collect pairs of edge, which are geomatrically identical // we collect the edges rather than combining them immediately, because we are iterating over the edges List> edgePairs = new List>(); - foreach (Edge edg in face1.AllEdgesIterated()) + foreach (Edge edg in face1.Edges) { if (vertexPairs.ContainsKey(edg.Vertex1) && vertexPairs.ContainsKey(edg.Vertex2)) { diff --git a/CADability/ImportStep.cs b/CADability/ImportStep.cs index 46e952ab..20e24b16 100644 --- a/CADability/ImportStep.cs +++ b/CADability/ImportStep.cs @@ -2894,7 +2894,7 @@ private object CreateEntity(Item item) //if (2859 == item.definingIndex || 3219 == item.definingIndex) // (item.val as Face[])[i].AssureTriangles(0.004); // remove when done - //foreach (Edge edg in (item.val as Face[])[i].AllEdgesIterated()) + //foreach (Edge edg in (item.val as Face[])[i].Edges) //{ // if (edg.PrimaryFace != (item.val as Face[])[i]) edg.PrimaryFace.CheckConsistency(); // if (edg.SecondaryFace != null && edg.SecondaryFace != (item.val as Face[])[i]) edg.SecondaryFace.CheckConsistency(); diff --git a/CADability/Make3D.cs b/CADability/Make3D.cs index 1e24e2ba..729c5def 100644 --- a/CADability/Make3D.cs +++ b/CADability/Make3D.cs @@ -1585,7 +1585,7 @@ internal static Solid MakeHelicalSolid(GeoPoint2D axisLocation, Plane plane, Pat // make the bottom and the top cover to close the solid Edge e0 = null, e1 = null; - foreach (Edge edg in fc0.AllEdgesIterated()) + foreach (Edge edg in fc0.Edges) { if (edg.Curve3D is Ellipse) { @@ -1593,7 +1593,7 @@ internal static Solid MakeHelicalSolid(GeoPoint2D axisLocation, Plane plane, Pat break; } } - foreach (Edge edg in fc1.AllEdgesIterated()) + foreach (Edge edg in fc1.Edges) { if (edg.Curve3D is Ellipse) { @@ -1609,7 +1609,7 @@ internal static Solid MakeHelicalSolid(GeoPoint2D axisLocation, Plane plane, Pat faces.Add(bfc); Edge e2 = null, e3 = null; - foreach (Edge edg in fc2.AllEdgesIterated()) + foreach (Edge edg in fc2.Edges) { if (edg.Curve3D is Ellipse) { @@ -1617,7 +1617,7 @@ internal static Solid MakeHelicalSolid(GeoPoint2D axisLocation, Plane plane, Pat break; } } - foreach (Edge edg in fc3.AllEdgesIterated()) + foreach (Edge edg in fc3.Edges) { if (edg.Curve3D is Ellipse) { @@ -1930,7 +1930,7 @@ private static void extractConnectedFaces(Set allFaces, Face startWith, Se { result.Add(startWith); allFaces.Remove(startWith); - foreach (Edge edge in startWith.AllEdgesIterated()) + foreach (Edge edge in startWith.Edges) { if (allFaces.Contains(edge.PrimaryFace)) { diff --git a/CADability/Parametric.cs b/CADability/Parametric.cs index fa7c7cbe..3dbce8a0 100644 --- a/CADability/Parametric.cs +++ b/CADability/Parametric.cs @@ -58,7 +58,7 @@ internal void OffsetFaces(IEnumerable faces, double offset) if (!faceDict.TryGetValue(face, out Face faceToMove)) faceToMove = face; // toMove may be from the original shell or from the cloned shell modifiedFaces.Add(faceToMove); ISurface offsetSurface = faceToMove.Surface.GetOffsetSurface(offset); - foreach (Edge edge in faceToMove.AllEdgesIterated()) + foreach (Edge edge in faceToMove.Edges) { // tangential edges must connect two of the provided faces, so they appear twice here if (edge.IsTangentialEdge() && !tangentialEdgesModified.ContainsKey(edge)) { @@ -105,7 +105,7 @@ public void MoveFaces(Dictionary toMove, GeoVector mainMovement else { modifiedFaces.Add(faceToMove); - foreach (Edge edge in faceToMove.AllEdgesIterated()) + foreach (Edge edge in faceToMove.Edges) { Face otherFace = edge.OtherFace(faceToMove); bool tangential = edge.IsTangentialEdge(); @@ -235,7 +235,7 @@ public bool ModifyRadius(IEnumerable toModify, double newRadius) // HashSet lengthwayTangential = new HashSet(); // the two faces that this fillet rounds // HashSet crosswayTangential = new HashSet(); // the following or previous fillet - // foreach (Edge edge in faceToModify.AllEdgesIterated()) + // foreach (Edge edge in faceToModify.Edges) // { // Face otherFace = edge.OtherFace(faceToModify); // if (edge.IsTangentialEdge()) @@ -275,7 +275,7 @@ public bool ModifyRadius(IEnumerable toModify, double newRadius) // modifiedFaces.Add(faceToModify); // // this modified face is tangential to t[0] and t[1]. The edges between this faceToModify and t[0] resp. t[1] need to be recalculated // // in order to have a curve for recalculating the vertices in Result() - // foreach (Edge edg in faceToModify.AllEdgesIterated()) + // foreach (Edge edg in faceToModify.Edges) // { // for (int i = 0; i < 2; i++) // { @@ -323,7 +323,7 @@ private void followCrosswayTangential(Edge edge, ICurve axis, double newRadius) } modifiedFaces.Add(faceToModify); // follow the crossway tangential faces - foreach (Edge edg in faceToModify.AllEdgesIterated()) + foreach (Edge edg in faceToModify.Edges) { Face otherFace = edge.OtherFace(faceToModify); if (edg.IsTangentialEdge()) @@ -347,7 +347,7 @@ private void CollectSameSurfaceFaces(Face face, HashSet sameSurfaceFaces, { if (sameSurfaceFaces.Contains(face)) return; // already tested sameSurfaceFaces.Add(face); - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { Face otherFace = edge.OtherFace(face); if (edge.IsTangentialEdge()) @@ -383,7 +383,7 @@ public bool ModifyFilletRadius(Face[] toModify, double newRadius) ICurve axis = extrusion.Axis(faceToModify.Domain); // a line for a cylinder, an arc for a torus, some 3d curve for a swept curve HashSet lengthwayTangential = new HashSet(); // the two faces that this fillet rounds HashSet crosswayTangential = new HashSet(); // the following or previous fillet - foreach (Edge edge in faceToModify.AllEdgesIterated()) + foreach (Edge edge in faceToModify.Edges) { Face otherFace = edge.OtherFace(faceToModify); if (edge.IsTangentialEdge()) @@ -420,7 +420,7 @@ public bool ModifyFilletRadius(Face[] toModify, double newRadius) modifiedFaces.Add(faceToModify); // this modified face is tangential to t[0] and t[1]. The edges between this faceToModify and t[0] resp. t[1] need to be recalculated // in order to have a curve for recalculating the vertices in Result() - foreach (Edge edg in faceToModify.AllEdgesIterated()) + foreach (Edge edg in faceToModify.Edges) { for (int i = 0; i < 2; i++) { @@ -454,7 +454,7 @@ public bool ModifyFilletRadius(Face[] toModify, double newRadius) ICurve axis = (cyl as ICylinder).Axis.Clip(faceToModify.GetExtent(0.0)); // the axis as a clipped line HashSet lengthwayTangential = new HashSet(); // the two faces that this fillet rounds HashSet crosswayTangential = new HashSet(); // the following or previous fillet - foreach (Edge edge in faceToModify.AllEdgesIterated()) + foreach (Edge edge in faceToModify.Edges) { Face otherFace = edge.OtherFace(faceToModify); if (edge.IsTangentialEdge()) @@ -495,7 +495,7 @@ public bool ModifyFilletRadius(Face[] toModify, double newRadius) // in order to have a curve for recalculating the vertices in Result() for (int i = 0; i < t.Length; i++) { - foreach (Edge edg in faceToModify.AllEdgesIterated()) + foreach (Edge edg in faceToModify.Edges) { if (edg.OtherFace(faceToModify) == t[i]) { diff --git a/CADability/RemoveFillet.cs b/CADability/RemoveFillet.cs index 60301a97..c674a1b5 100644 --- a/CADability/RemoveFillet.cs +++ b/CADability/RemoveFillet.cs @@ -38,7 +38,7 @@ public Shell Result() { if (face.Surface is ISurfaceOfArcExtrusion extrusion) { - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { Face otherFace = edge.OtherFace(face); if (edge.IsTangentialEdge() && edge.Curve2D(face).DirectionAt(0.5).IsMoreHorizontal != extrusion.ExtrusionDirectionIsV) @@ -52,7 +52,7 @@ public Shell Result() } else if (face.Surface is SphericalSurface) { - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { Face otherFace = edge.OtherFace(face); if (fillets.Contains(otherFace)) crossway.Add(edge); @@ -219,7 +219,7 @@ public Shell Result() foreach (Face face in shell.Faces) { if (fillets.Contains(face)) continue; - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { if (verticesToReplace.ContainsKey(edge.Vertex1)) { diff --git a/CADability/Shell.cs b/CADability/Shell.cs index f6fa2dda..6a16f623 100644 --- a/CADability/Shell.cs +++ b/CADability/Shell.cs @@ -742,7 +742,7 @@ internal double GetGauge(Face startHere, out HashSet frontSide, out HashSe HashSet backTangential = new HashSet(); foreach (Face face in frontSide) { - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { if (edge.IsTangentialEdge() && !frontSide.Contains(edge.OtherFace(face)) && !backSide.Contains(edge.OtherFace(face))) { @@ -752,7 +752,7 @@ internal double GetGauge(Face startHere, out HashSet frontSide, out HashSe } foreach (Face face in backSide) { - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { if (edge.IsTangentialEdge() && !backSide.Contains(edge.OtherFace(face)) && !frontSide.Contains(edge.OtherFace(face))) { @@ -1636,7 +1636,7 @@ private List FindCommonSurfaceFaces(Set faces, Set subsetForTe dbgvtx.Add(vertex); dbgext.MinMax(vertex.Position); } - foreach (Edge edg in fc.AllEdgesIterated()) + foreach (Edge edg in fc.Edges) { dbgedg.Add(edg); } @@ -2254,7 +2254,7 @@ private Face CreateFaceOnCommonSurface(ISurface surface, Face startWith, Set connecting = new List(Vertex.ConnectingEdges(edg.Vertex1, edg.Vertex2)); if (connecting.Count > 1) @@ -4106,7 +4106,7 @@ private Shell GetRawOffset(double dist, Dictionary parallelEdges = n // 4. noch offene Kanten schließen for (int i = 0; i < fcs.Count; i++) { - foreach (Edge edg in fcs[i].AllEdgesIterated()) + foreach (Edge edg in fcs[i].Edges) { if (edg.SecondaryFace == null) { @@ -4627,7 +4627,7 @@ internal void ReplaceFace(Face toReplace, Face[] replaceBy, double precision) Set splitVertices = new Set(); // das sollen alle vertices sein, die in replaceBy sind, aber nicht in affected foreach (Face fc in replaceBy) { - foreach (Edge edg in fc.AllEdgesIterated()) + foreach (Edge edg in fc.Edges) { if (edg.SecondaryFace == null) { @@ -4774,7 +4774,7 @@ internal static void connectFaces(Face[] toConnect, double precision) BoundingCube ext = BoundingCube.EmptyBoundingCube; for (int i = 0; i < toConnect.Length; i++) { - foreach (Edge edg in toConnect[i].AllEdgesIterated()) + foreach (Edge edg in toConnect[i].Edges) { if (edg.SecondaryFace == null) { @@ -5198,7 +5198,7 @@ internal void AddFace(Face face) // somit ist der folgende Abschnitt noch nicht getestet Set freeEdges = new Set(OpenEdges); // ggf. als OctTree, ber Edge ist nicht OctTreeInsertable Dictionary> edgesToSplit = new Dictionary>(); - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { foreach (Edge freeEdge in freeEdges) { @@ -5233,7 +5233,7 @@ internal void AddFace(Face face) } // jetzt entprechen sich Kanten entweder komplett oder garnicht freeEdges = new Set(OpenEdges); // ggf. als OctTree, ber Edge ist nicht OctTreeInsertable - foreach (Edge edge in face.AllEdgesIterated()) + foreach (Edge edge in face.Edges) { foreach (Edge freeEdge in freeEdges) { @@ -5523,7 +5523,7 @@ public int CombineConnectedFaces() edg.DisconnectFromFace(edg.SecondaryFace); edg.DisconnectFromFace(edg.PrimaryFace); } - foreach (Edge edg in faceToRemove.AllEdgesIterated()) + foreach (Edge edg in faceToRemove.Edges) { if (edg.Vertex1 != null) edg.Vertex1.RemovePositionOnFace(faceToRemove); if (edg.Vertex2 != null) edg.Vertex2.RemovePositionOnFace(faceToRemove); @@ -6157,7 +6157,7 @@ public Shell FeatureFromEdges(Edge[] edgeLoop, Face[] facesToCutOff) Set openEdges = new Set(); foreach (Face fce in saveFeatureFaces) { - foreach (Edge edg in fce.AllEdgesIterated()) + foreach (Edge edg in fce.Edges) { if (!saveFeatureFaces.Contains(edg.PrimaryFace)) {