A 3d solid.
Inheritance Hierarchy
System.ObjectAutodesk.Revit.DB.APIObject
Autodesk.Revit.DB.GeometryObject
Autodesk.Revit.DB.Solid
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.3.0.0 (25.3.0.0)
Syntax
C#
public class Solid : GeometryObject
The Solid type exposes the following members.
Properties
Name | Description | |
---|---|---|
![]() | Edges | The edges that belong to the solid. |
![]() ![]() | Faces | The faces that belong to the solid. |
![]() ![]() | GraphicsStyleId | The ElementId of the GeometryObject's GraphicsStyle (Inherited from GeometryObject) |
![]() | Id | A unique integer identifying the GeometryObject in its associated non view-specific GeometryElement. (Inherited from GeometryObject) |
![]() | IsElementGeometry | Indicates whether this geometry is obtained directly from an Element. (Inherited from GeometryObject) |
![]() ![]() | IsReadOnly | Identifies if the object is read-only or modifiable. (Inherited from APIObject) |
![]() | SurfaceArea | Returns the total surface area of this solid. |
![]() | Visibility | The visibility. (Inherited from GeometryObject) |
![]() | Volume | Returns the signed volume of this solid. |
Methods
Name | Description | |
---|---|---|
![]() | ComputeCentroid | Returns the Centroid of this solid. |
![]() | Dispose | Causes the object to release immediately any resources it may be utilizing. (Inherited from APIObject) |
![]() | Equals | Determines whether the specified Object is equal to the current Object. (Inherited from GeometryObject) |
![]() | GetBoundingBox | Retrieves a box that circumscribes the solid geometry. |
![]() | GetHashCode |
Gets the integer value of the geometry object as hash code
(Inherited from GeometryObject) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object) |
![]() ![]() | IntersectWithCurve | Calculates and returns the intersection between a curve and this solid. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object) |
Remarks
A solid is defined by the faces and edges that form its boundary.Example
C#
private void GetAndTransformSolidInfo(Application application, Element element, Options geoOptions) { // Get geometry element of the selected element Autodesk.Revit.DB.GeometryElement geoElement = element.get_Geometry(geoOptions); // Get geometry object foreach (GeometryObject geoObject in geoElement) { // Get the geometry instance which contains the geometry information Autodesk.Revit.DB.GeometryInstance instance = geoObject as Autodesk.Revit.DB.GeometryInstance; if (null != instance) { foreach (GeometryObject instObj in instance.SymbolGeometry) { Solid solid = instObj as Solid; if (null == solid || 0 == solid.Faces.Size || 0 == solid.Edges.Size) { continue; } Transform instTransform = instance.Transform; // Get the faces and edges from solid, and transform the formed points foreach (Face face in solid.Faces) { Mesh mesh = face.Triangulate(); foreach (XYZ ii in mesh.Vertices) { XYZ point = ii; XYZ transformedPoint = instTransform.OfPoint(point); } } foreach (Edge edge in solid.Edges) { foreach (XYZ ii in edge.Tessellate()) { XYZ point = ii; XYZ transformedPoint = instTransform.OfPoint(point); } } } } } }
VB
Private Sub GetAndTransformSolidInfo(application As Application, element As Element, geoOptions As Options) ' Get geometry element of the selected element Dim geoElement As Autodesk.Revit.DB.GeometryElement = element.Geometry(geoOptions) ' Get geometry object For Each geoObject As GeometryObject In geoElement ' Get the geometry instance which contains the geometry information Dim instance As Autodesk.Revit.DB.GeometryInstance = TryCast(geoObject, Autodesk.Revit.DB.GeometryInstance) If instance IsNot Nothing Then For Each instObj As GeometryObject In instance.SymbolGeometry Dim solid As Solid = TryCast(instObj, Solid) If solid Is Nothing OrElse 0 = solid.Faces.Size OrElse 0 = solid.Edges.Size Then Continue For End If Dim instTransform As Transform = instance.Transform ' Get the faces and edges from solid, and transform the formed points For Each face As Face In solid.Faces Dim mesh As Mesh = face.Triangulate() For Each ii As XYZ In mesh.Vertices Dim point As XYZ = ii Dim transformedPoint As XYZ = instTransform.OfPoint(point) Next Next For Each edge As Edge In solid.Edges For Each ii As XYZ In edge.Tessellate() Dim point As XYZ = ii Dim transformedPoint As XYZ = instTransform.OfPoint(point) Next Next Next End If Next End Sub