if (faces.Any())
foreach (Face face in faces)
GeometryHelpers.GetCurvesFromFace(face, ref curves);
if (solids.Any())
foreach (Solid solid in solids)
GeometryHelpers.GetCurvesFromSolid(solid, ref curves);
...........................
public static void GetCurvesFromSolid(Solid solid, ref List<Curve> curves)
{
foreach (Edge edge in solid.Edges)
{
if (edge.AsCurve().Reference != null)
curves.Add(edge.AsCurve());
}
foreach (var f in solid.Faces)
{
if (f is Face face)
GetCurvesFromFace(face, ref curves);
if (f is PlanarFace planarFace)
GetCurvesFromFace(planarFace, ref curves);
}
}
public static void GetCurvesFromFace(Face face, ref List<Curve> curves)
{
EdgeArrayArray edgeArrayArray = face.EdgeLoops;
foreach (EdgeArray edgeArray in edgeArrayArray)
{
foreach (Edge edge in edgeArray)
{
if (edge.AsCurve().Reference != null)
curves.Add(edge.AsCurve());
}
}
}
public static void GetCurvesFromFace(PlanarFace face, ref List<Curve> curves)
{
EdgeArrayArray edgeArrayArray = face.EdgeLoops;
foreach (EdgeArray edgeArray in edgeArrayArray)
{
foreach (Edge edge in edgeArray)
{
if (edge.AsCurve().Reference != null)
curves.Add(edge.AsCurve());
}
}
}