diff --git a/src/Speckle.Objects/Interfaces.cs b/src/Speckle.Objects/Interfaces.cs index 8610ad4c..4ab7ecf1 100644 --- a/src/Speckle.Objects/Interfaces.cs +++ b/src/Speckle.Objects/Interfaces.cs @@ -84,6 +84,17 @@ public interface ITransformable : ISpeckleObject bool TransformTo(Transform transform, out ITransformable transformed); } +/// +/// +public interface ISymbolLayer +{ + string symbolUnits { get; set; } + LineType lineType { get; set; } + double lineWidth { get; set; } + int lineColor { get; set; } + int displayPriority { get; set; } +} + #endregion #region GIS diff --git a/src/Speckle.Objects/Other/SymbolEnums.cs b/src/Speckle.Objects/Other/SymbolEnums.cs new file mode 100644 index 00000000..987ace5a --- /dev/null +++ b/src/Speckle.Objects/Other/SymbolEnums.cs @@ -0,0 +1,25 @@ +namespace Speckle.Objects.Other; + +public enum LineType +{ + Solid, + Dashed, + Dotted, +} + +public enum MarkerType +{ + Simple, +} + +public enum MarkerShape +{ + Circle, + Square, + Cross, +} + +public enum FillType +{ + Simple, +} diff --git a/src/Speckle.Objects/Other/SymbolLayer.cs b/src/Speckle.Objects/Other/SymbolLayer.cs new file mode 100644 index 00000000..85028e5a --- /dev/null +++ b/src/Speckle.Objects/Other/SymbolLayer.cs @@ -0,0 +1,46 @@ +using Speckle.Sdk.Models; + +namespace Speckle.Objects.Other; + +[SpeckleType("Objects.Other.Symbol")] +public class Symbol : Base +{ + public List symbolLayers { get; set; } +} + +[SpeckleType("Objects.Other.MarkerSymbolLayer")] +public class MarkerSymbolLayer : Base, ISymbolLayer +{ + public string symbolUnits { get; set; } + public LineType lineType { get; set; } + public double lineWidth { get; set; } + public int lineColor { get; set; } + public int displayPriority { get; set; } + + public double angle { get; set; } + public int fillColor { get; set; } + public MarkerType type { get; set; } +} + +[SpeckleType("Objects.Other.LineSymbolLayer")] +public class LineSymbolLayer : Base, ISymbolLayer +{ + public string symbolUnits { get; set; } + public LineType lineType { get; set; } + public double lineWidth { get; set; } + public int lineColor { get; set; } + public int displayPriority { get; set; } +} + +[SpeckleType("Objects.Other.FillSymbolLayer")] +public class FillSymbolLayer : Base, ISymbolLayer +{ + public string symbolUnits { get; set; } + public LineType lineType { get; set; } + public double lineWidth { get; set; } + public int lineColor { get; set; } + public int displayPriority { get; set; } + + public int fillColor { get; set; } + public FillType type { get; set; } +}