Share

ModelAnnotation.GetDisplayGeometry Method

Parent Object: ModelAnnotation

Description

Method that returns simple linear geometry that represents the display geometry of the annotation. The result is returned as groups of connected lines (polylines). Groups can optionally be filled with internal voids.

Remarks

Below is an example of a feature control symbol. Like most annotations it consists of some geometry and some text. This method only returns the geometry which is shown in black below. You can get the textual information separately in one of two ways, as a description of the text or as graphics that represent the display of the text. As a description of the text you can use properties on the various annotations to determine the text that’s displayed. For the raw text graphics, use the GetDisplayText method.
For the above example, Below are each of the arguments and the values returned along with a brief description of the value. GroupCount = 4, In this example each character or symbol is a group, but this shouldn’t be expected in all cases. For example a group defines a filled area and voids within that area. A character that has disjoint filled areas like a percent sign % will be returned as three groups since there are three filled areas. Unfilled shapes can be returned as a group of multiple polylines or several groups each containing a single polyline. The geometry described is the same and no expectation should be made about how it’s presented. PolylinesPerGroup (0) = 2 (1) = 3 (2) = 1 (3) = 3 The number of polylines within each group is specified with this argument, where a polyline is equivalent to a loop.
FilledGroups (0) = True, The “A” is filled (1) = True, The “B” is filled (2) = True, The “C” is filled (3) = False, the center symbol is not filled
PolylineCount The polyline count is 9 in this case. This is the total number of polylines. This can also be computed by adding up the values returned by the PolylinesPerGroup argument.
PolylineLengths (0) = 9, The outer shape of the “A” (1) = 4, The inner shape of the “A” (2) = Many points because of the curved areas of the “B” (3) = Many points because of the curved areas of the “B” (4) = Many points because of the curved areas of the “B” (5) = Many points because of the curved areas of the “C” (6) = Many points because of the circle in the center symbol. (7) = 2, One of the lines of the center symbol. (8) = 2, The other line of the center symbol.
VertexCount The VertexCount is many and cannot be pre-determined because curves and arcs are stroked into line segments.
VertexCoordinates The number vertex coordinates is VertexCount * 3, These are the x,y,z coordintes of the vertices in model space.

Here’s another simpler example without any curves.
GroupCount The GroupCount is 4 because each box is a logical group. PolylinesPerGroup (0) = 1 (1) = 1 (2) = 2 (3) = 3 The number of polylines within each group is specified with this argument, where a polyline is equivalent to a loop.
FilledGroups (0) = True, The first shape is filled (1) = False, The second shape is not filled (2) = False, The third shape is not filled (3) = True, the fourth shape is filled
PolylineCount The polyline count is 7 and is the total number of polylines in all groups.
PolylineLengths (0) = 4, The number of segments in the first shape. (1) = 4, The number of segments in the second shape. (2) = 4, The number of segments in the outer loop of the third shape. (3) = 4, The number of segments in the inner loop of the third shape. (4) = 4, The number of segments in the outer loop of the fourth shape. (5) = 4, The number of segments in the first inner loop of the fourth shape. (6) = 4, The number of segments in the second inner loop of the fourth shape.
VertexCount The vertex count is 35. There are 7 rectangles in the image above. Each polyline is represented by 5 points since the first and last coordinate is repeated for a closed shape. This results in 35 vertices.
VertexCoordinates (0) = 0.0, x coordinate of the 1st vertex of shape 1 (1) = 0.0, y coordinate of the 1st vertex of shape 1 (2) = 0.0, z coordinate of the 1st vertex of shape 1 (3) = 1.0, x coordinate of the 2nd vertex of shape 1 (4) = 0.0, y coordinate of the 2nd vertex of shape 1 (5) = 0.0, z coordinate of the 2nd vertex of shape 1 (6) = 1.0, x coordinate of the 3rd vertex of shape 1 (7) = 1.0, y coordinate of the 3rd vertex of shape 1 (8) = 0.0, z coordinate of the 3rd vertex of shape 1 (9) = 0.0, x coordinate of the 4th vertex of shape 1 (10) = 1.0, y coordinate of the 4th vertex of shape 1 (11) = 0.0, z coordinate of the 4th vertex of shape 1 (12) = 0.0, x coordinate of the 1st vertex of shape 1 (repeat) (13) = 0.0, y coordinate of the 1st vertex of shape 1 (repeat) (14) = 0.0, z coordinate of the 1st vertex of shape 1 (repeat) (15) = 1.5, x coordinate of the 1st vertex of shape 2 (16) = 0.0, y coordinate of the 1st vertex of shape 2 (17) = 0.0, z coordinate of the 1st vertex of shape 2

Syntax

ModelAnnotation.GetDisplayGeometry( Camera As Camera, GroupCount As Long, PolylinesPerGroup() As Long, FilledGroups() As Boolean, PolylineCount As Long, PolylineLengths() As Long, VertexCount As Long, VertexCoordinates() As Double )

Parameters

Name Type Description
Camera Camera Input Camera object that specifies the view orientation. This can either be a transient Camera object or that got from View object etc.. And the camera properties can be changed but not applied.
GroupCount Long Output Long that indicates the number of groups. A group is a set of related polylines where there can be one outer and multiple inner polylines. Groups can optionally also be filled.
PolylinesPerGroup Long Output array of Longs that indicates the number of polylines in each of the groups. The array size will be GroupCount where each value of this array indicates the number of polylines within each group. When reading the polylines within a group, the first polyline is the outer polyline and any additional closed polylines represent internal voids if the group is filled.
FilledGroups Boolean Output array of Booleans that indicates which groups are filled. A value of True indicates the corresponding group is filled. The array size will be GroupCount. If a group is filled, the first polyline in the group defines the outer loop. Any other polylines for that group represent internal loops and voids in the fill.
PolylineCount Long Output Long that indicates the total number of polylines.
PolylineLengths Long Output array of Longs that indicates the number of vertices used in each polyline.
VertexCount Long Output Long that indicates the total number of vertices.
VertexCoordinates Double Output array of Doubles that contains the coordinates.

Version

Introduced in version 2018

Was this information helpful?