Teigha Civil’s 3D Feature Line Entity

Igor Fedotov
September 21, 2017

Tags: civil getting started

AeccDbFeatureLine class

There are two ways of drawing feature lines: by 2D polyline (OdDbPolyline object) and by 3D polyline (OdDb3dPolyline object). The difference in elevation values affects all site feature edge points. If all elevations are equal, the feature line will be drawn via an OdDbPolyline entity, else via OdDb3dPolyline. In the 2D case, OdDbPolyline consists of eLine and eArc edges of type (AECCSiteEdge::Type). The OdDb3dPolyline entity consists of eLine types only and for arcs interpolation purposes uses tessellation (short, straight line segments) based on explode functionalities.

For internal use, we keep feature line edges with a bulge parameter and with an additional elevation values array. For external use, we have the basic geometry method AECCSiteNode ::Get2DFeatureGeometry() (with/without elevation (Aux) points) with an AECGe::Contour2D output value and an additional elevation vector.

Here are the basic methods:

  • AeccDbFeatureLine::GetFeatureLineStyle returns the feature line’s style ID;
  • AeccDbFeatureLine::GetSiteNode() returns the Site object;
  • AeccDbFeatureLine::GetMaximumElevation() returns the feature line's maximum elevation;
  • AeccDbFeatureLine::GetMinimumElevation() returns the feature line's minimum elevation;
  • AECCSiteNode::Get2DFeatureGeometry() returns the feature edges via Contour2d and elevation values;
  • AECCSiteNode::CreateFeature() creates a feature line in the site;
  • AECCSiteNode::DeleteFeature() deletes a feature line from the site;
  • AECCSiteNode::GetFeatureById() returns the feature lines in the site by ID;
  • AECCSiteFeature::GetEdgePIPointCount() returns the point intersection points count;
  • AECCSiteFeature::GetEdgeElevationPointCount() returns the elevation points count;
  • AECCSiteFeature::GetEdgeByIndex() returns an edge of the feature line by index;
  • AECCSiteEdge::GetType() returns the edge type: eLine if bulge=0 or eArc otherwise;
  • AECCSiteEdge::GetBulge() returns the bulge parameter of an edge;
  • AECCSiteEdge::IsPI() returns true if a point has a point intersection type.
All posts