diff --git a/src/Speckle.Objects/Data/ArchicadObject.cs b/src/Speckle.Objects/Data/ArchicadObject.cs
new file mode 100644
index 00000000..2c9ffe2b
--- /dev/null
+++ b/src/Speckle.Objects/Data/ArchicadObject.cs
@@ -0,0 +1,23 @@
+using Speckle.Objects.Geometry;
+using Speckle.Sdk.Models;
+
+namespace Speckle.Objects.Data;
+
+///
+/// Represents a base class object in Archicad
+///
+[SpeckleType("Objects.Data.ArchicadObject")]
+public class ArchicadObject : DataObject, IArchicadObject
+{
+ public required string type { get; set; }
+
+ public required string level { get; set; }
+
+ ///
+ /// The full classification tree path of an Archicad object
+ ///
+ ///
+ /// The list order is from root to leaf of the classification tree
+ ///
+ public required List classification { get; set; }
+}
diff --git a/src/Speckle.Objects/GIS/CRS.cs b/src/Speckle.Objects/GIS/CRS.cs
deleted file mode 100644
index ae4f04dc..00000000
--- a/src/Speckle.Objects/GIS/CRS.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.CRS")]
-public class CRS : Base
-{
- public string? name { get; set; }
- public string? authority_id { get; set; }
- public string? wkt { get; set; }
- public string? units_native { get; set; }
- public float? offset_x { get; set; }
- public float? offset_y { get; set; }
- public float? rotation { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/GisMultipatchFeature.cs b/src/Speckle.Objects/GIS/GisMultipatchFeature.cs
deleted file mode 100644
index 7de6a6da..00000000
--- a/src/Speckle.Objects/GIS/GisMultipatchFeature.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisMultipatchFeature")]
-public class GisMultipatchFeature : Base, IGisFeature, IDisplayValue>
-{
- public required Base attributes { get; set; }
-
- ///
- /// Multipatch geometry should be of type or
- ///
- [DetachProperty]
- public required List geometry { get; set; }
-
- [DetachProperty]
- public required List displayValue { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/GisMultipatchGeometry.cs b/src/Speckle.Objects/GIS/GisMultipatchGeometry.cs
deleted file mode 100644
index f4bc67db..00000000
--- a/src/Speckle.Objects/GIS/GisMultipatchGeometry.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisMultipatchGeometry")]
-public class GisMultipatchGeometry : Base
-{
- public string units { get; set; }
- public List faces { get; set; }
- public List vertices { get; set; }
- public List? colors { get; set; }
-
- public GisMultipatchGeometry()
- {
- faces = new List();
- vertices = new List();
- }
-}
diff --git a/src/Speckle.Objects/GIS/GisNonGeometricFeature.cs b/src/Speckle.Objects/GIS/GisNonGeometricFeature.cs
deleted file mode 100644
index d53c6b84..00000000
--- a/src/Speckle.Objects/GIS/GisNonGeometricFeature.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisNonGeometricFeature")]
-public class GisNonGeometricFeature : Base, IGisFeature
-{
- public required Base attributes { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/GisPointFeature.cs b/src/Speckle.Objects/GIS/GisPointFeature.cs
deleted file mode 100644
index 57493268..00000000
--- a/src/Speckle.Objects/GIS/GisPointFeature.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Speckle.Newtonsoft.Json;
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisPointFeature")]
-public class GisPointFeature : Base, IGisFeature, IDisplayValue>
-{
- public required Base attributes { get; set; }
-
- [JsonIgnore]
- public required List geometry
- {
- get => displayValue;
- set => displayValue = value;
- }
-
- [DetachProperty]
- public List displayValue { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/GisPolygonFeature.cs b/src/Speckle.Objects/GIS/GisPolygonFeature.cs
deleted file mode 100644
index 90c9d81f..00000000
--- a/src/Speckle.Objects/GIS/GisPolygonFeature.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisPolygonFeature")]
-public class GisPolygonFeature : Base, IGisFeature, IDisplayValue>
-{
- public required Base attributes { get; set; }
-
- [DetachProperty]
- public required List geometry { get; set; }
-
- [DetachProperty]
- public required List displayValue { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/GisPolylineFeature.cs b/src/Speckle.Objects/GIS/GisPolylineFeature.cs
deleted file mode 100644
index 2f4b578d..00000000
--- a/src/Speckle.Objects/GIS/GisPolylineFeature.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Speckle.Newtonsoft.Json;
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.GisPolylineFeature")]
-public class GisPolylineFeature : Base, IGisFeature, IDisplayValue>
-{
- public required Base attributes { get; set; }
-
- [JsonIgnore]
- public required List geometry
- {
- get => displayValue;
- set => displayValue = value;
- }
-
- [DetachProperty]
- public List displayValue { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/PolygonGeometry.cs b/src/Speckle.Objects/GIS/PolygonGeometry.cs
deleted file mode 100644
index 2a3a3cdb..00000000
--- a/src/Speckle.Objects/GIS/PolygonGeometry.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.PolygonGeometry")]
-public class PolygonGeometry : Base
-{
- public string units { get; set; }
- public Polyline boundary { get; set; }
- public List voids { get; set; }
-
- public PolygonGeometry()
- {
- voids = new List();
- }
-}
diff --git a/src/Speckle.Objects/GIS/PolygonGeometry3d.cs b/src/Speckle.Objects/GIS/PolygonGeometry3d.cs
deleted file mode 100644
index 6a2ee318..00000000
--- a/src/Speckle.Objects/GIS/PolygonGeometry3d.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.PolygonGeometry3d")]
-public class PolygonGeometry3d : PolygonGeometry { }
diff --git a/src/Speckle.Objects/GIS/RasterElement.cs b/src/Speckle.Objects/GIS/RasterElement.cs
deleted file mode 100644
index cb1b78fb..00000000
--- a/src/Speckle.Objects/GIS/RasterElement.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using Speckle.Objects.Geometry;
-using Speckle.Sdk.Models;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.RasterElement")]
-public class RasterElement : Base
-{
- public int band_count { get; set; }
- public List band_names { get; set; }
- public float x_origin { get; set; }
- public float y_origin { get; set; }
- public int x_size { get; set; }
- public int y_size { get; set; }
- public float x_resolution { get; set; }
- public float y_resolution { get; set; }
- public List noDataValue { get; set; }
-
- [DetachProperty]
- public List displayValue { get; set; }
-
- public RasterElement()
- {
- displayValue = new List();
- band_names = new List();
- noDataValue = new List();
- }
-
- public RasterElement(
- int bandCount,
- List bandNames,
- float xOrigin,
- float yOrigin,
- int xSize,
- int ySize,
- float xResolution,
- float yResolution,
- List noDataValue
- )
- {
- displayValue = new List();
- band_count = bandCount;
- band_names = bandNames;
- x_origin = xOrigin;
- y_origin = yOrigin;
- x_size = xSize;
- y_size = ySize;
- x_resolution = xResolution;
- y_resolution = yResolution;
- this.noDataValue = noDataValue;
- }
-}
diff --git a/src/Speckle.Objects/GIS/RasterLayer.cs b/src/Speckle.Objects/GIS/RasterLayer.cs
deleted file mode 100644
index d0240cf9..00000000
--- a/src/Speckle.Objects/GIS/RasterLayer.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Speckle.Sdk.Models;
-using Speckle.Sdk.Models.Collections;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.RasterLayer")]
-public class RasterLayer : Collection
-{
- public CRS? crs { get; set; }
- public string? units { get; set; }
- public CRS? rasterCrs { get; set; }
- public string? geomType { get; set; }
- public Dictionary? renderer { get; set; }
-}
diff --git a/src/Speckle.Objects/GIS/VectorLayer.cs b/src/Speckle.Objects/GIS/VectorLayer.cs
deleted file mode 100644
index 80673982..00000000
--- a/src/Speckle.Objects/GIS/VectorLayer.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Speckle.Sdk.Models;
-using Speckle.Sdk.Models.Collections;
-
-namespace Speckle.Objects.GIS;
-
-[SpeckleType("Objects.GIS.VectorLayer")]
-public class VectorLayer : Collection
-{
- public CRS? crs { get; set; }
- public string? units { get; set; }
- public Base attributes { get; set; }
- public string? geomType { get; set; }
- public string? nativeGeomType { get; set; }
- public Dictionary? renderer { get; set; }
-
- public VectorLayer()
- {
- attributes = new Base();
- }
-}
diff --git a/src/Speckle.Objects/Interfaces.cs b/src/Speckle.Objects/Interfaces.cs
index 93237bc9..5eaa00bd 100644
--- a/src/Speckle.Objects/Interfaces.cs
+++ b/src/Speckle.Objects/Interfaces.cs
@@ -108,14 +108,6 @@ public interface IDisplayValue : ISpeckleObject
#endregion
-#region GIS
-public interface IGisFeature : ISpeckleObject
-{
- Base attributes { get; set; }
-}
-
-#endregion
-
#region Data objects
///
@@ -175,6 +167,15 @@ public interface IGisObject : IDataObject
string type { get; }
}
+public interface IArchicadObject : IDataObject
+{
+ string type { get; }
+
+ string level { get; }
+
+ List classification { get; }
+}
+
public interface INavisworksObject : IDataObject { }