using Speckle.Newtonsoft.Json; using Speckle.Objects.Primitive; using Speckle.Sdk.Models; namespace Speckle.Objects.Geometry; /// /// Represents an edge of the . /// [SpeckleType("Objects.Geometry.BrepEdge")] public class BrepEdge : Base { [JsonIgnore] public required Brep Brep { get; set; } public required int Curve3dIndex { get; set; } public required int[] TrimIndices { get; set; } public required int StartIndex { get; set; } public required int EndIndex { get; set; } public required bool ProxyCurveIsReversed { get; set; } public required Interval Domain { get; set; } [JsonIgnore] public Point StartVertex => Brep.Vertices[StartIndex]; [JsonIgnore] public Point EndVertex => Brep.Vertices[EndIndex]; [JsonIgnore] public IEnumerable Trims => TrimIndices.Select(i => Brep.Trims[i]); [JsonIgnore] public ICurve Curve => Brep.Curve3D[Curve3dIndex]; }