Provides access to members that return properties common to MultiPatches.
Description
Implemented for Multipatches and Polygons. Returns the 3D surface area of the geometry. Outputs the 3D centroid and label point, both useful for labeling purposes. In contrast to the centroid and label point returned via IArea, the 3D centroid and label point take into account the ZMax of the geometry queried.
Members
Name | Description | |
---|---|---|
Area3D | The 3D surface area. | |
Centroid3D | A 3D point whose XY coordinates are set to the center of gravity of the shape'ss 2D footprint and Z set to the shape's ZMax. | |
LabelPoint3D | A point guaranteed to be on this 3D surface area. | |
QueryCentroid3D | Copies the centroid of this 3D surface area to the specified point. | |
QueryLabelPoint3D | Copies to the input point a point guaranteed to be on this 3D surface area. |
IArea3D.Area3D Property
The 3D surface area.
Public ReadOnly Property Area3D As Double
public double Area3D {get;}
Remarks
If Patches comprising a MultiPatch geometry have improperly ordered vertices such that positive faces are not pointing outwards, a negative 3D surface area will be returned. To ensure proper orientation, add vertices in a clockwise manner relative to an observer situated outside of the MultiPatch geometry.
public static void CalculateArea3D()
{
IGeometry multiPatchGeometry = GetMultiPatchGeometry();
IArea3D area3D = multiPatchGeometry as IArea3D;
double calculatedArea3D = area3D.Area3D;
//calculatedArea3D = 480
}
IArea3D.Centroid3D Property
A 3D point whose XY coordinates are set to the center of gravity of the shape'ss 2D footprint and Z set to the shape's ZMax.
Public ReadOnly Property Centroid3D As IPoint
public IPoint Centroid3D {get;}
public static void GetCentroid3D()
{
IGeometry multiPatchGeometry = GetMultiPatchGeometry();
IArea3D area3D = multiPatchGeometry as IArea3D;
IPoint centroid3D = area3D.Centroid3D;
//centroid3D = (0, 0, 8.5)
}
IArea3D.LabelPoint3D Property
A point guaranteed to be on this 3D surface area.
Public ReadOnly Property LabelPoint3D As IPoint
public IPoint LabelPoint3D {get;}
public static void GetLabelPoint3D()
{
IGeometry multiPatchGeometry = GetMultiPatchGeometry();
IArea3D area3D = multiPatchGeometry as IArea3D;
IPoint labelPoint3D = area3D.LabelPoint3D;
//labelPoint3D = (-2.5, -2.5, 8.5)
}
IArea3D.QueryCentroid3D Method
Copies the centroid of this 3D surface area to the specified point.
Public Sub QueryCentroid3D ( _
ByVal Center As IPoint _
)
public void QueryCentroid3D (
IPoint Center
);
public static void QueryCentroid3D()
{
IGeometry multiPatchGeometry = GetMultiPatchGeometry();
IArea3D area3D = multiPatchGeometry as IArea3D;
IPoint centroid3D = new PointClass();
area3D.QueryCentroid3D(centroid3D);
//centroid3D = (0, 0, 8.5)
}
IArea3D.QueryLabelPoint3D Method
Copies to the input point a point guaranteed to be on this 3D surface area.
Public Sub QueryLabelPoint3D ( _
ByVal LabelPoint As IPoint _
)
public void QueryLabelPoint3D (
IPoint LabelPoint
);
public static void QueryLabelPoint3D()
{
IGeometry multiPatchGeometry = GetMultiPatchGeometry();
IArea3D area3D = multiPatchGeometry as IArea3D;
IPoint labelPoint3D = new PointClass();
area3D.QueryLabelPoint3D(labelPoint3D);
//labelPoint3D = (-2.5, -2.5, 8.5)
}
Classes that implement IArea3D
Classes | Description |
---|---|
Envelope | A rectangle with sides parallel to a coordinate system defining the extent of another geometry; optionally has min and max measure, height and ID attributes. |
MultiPatch | A collection of surface patches. |
Polygon | A collection of rings ordered by their containment relationship; optionally has measure, height and ID attributes. |