Introduction

A MicroStation DGN file is a container: it contains one or more DGN models. A DGN model is also a container: it contains DGN elements, reference attachments and other objects. XML files delivered with MicroStation define multiple schemas, known as ECSchemas, that define DGN element, model, file and other classes and properties.

LASolutions::EcSegments Class

The LASolutions::EcSegments class attempts to model the structure of a hierarchy of EC classes and their properties. Segments is a property of any class that inherits from MstnLineSegments. MstnLineSegments.Segments has an array of EC instances, each of which is an EC Segment …

EC LineElement class inheritance

LASolutions::EcSegments inherits from base classes LASolutions::EcDgnClass and LASolutions::EcInheritanceChecker. They all live in the LASolutions namespace. Base class EcDgnClass provides methods common to many EC classes, such as a property getter. Base class EcInheritanceChecker lets us check that the instance we have inherits from a particular EC class. For example, the classes that have Segments inherit them from EC class MstnLineSegments. If that condition is true, then we know that it's safe to get property Segments, which is an array of Segment instances.

struct EcSegments : EcDgnClass, EcInheritanceChecker
{
  ///  A collection of EcSegment.
  std::vector  segments_;
  ///  Construct an ecSegment object.
  EcSegments () : EcDgnClass     (L"Segments"), EcInheritanceChecker (L"MstnLineSegments") {}
  EcSegments (ECN::IECInstancePtr  instance) : EcDgnClass (L"Segments"), EcInheritanceChecker (L"MstnLineSegments")
  {
    Assign (instance);
  }
  ///  Get the number of Segment objects we own.
  size_t      Count      ()  const  {  return segments_.size ();  }
  ///  Get the total length of Segment objects we own.
  double      TotalLength    ()  const;
  ///  Trace this segments
  void      Trace      ()  const;
  void      TraceProps    ()  const;
  void      TraceSegments  ()  const;
  //  Assign an EC instance to this class.
  bool      Assign       (ECN::IECInstancePtr  instance) override;
};

Read about the XXX class.

Questions

Post questions about C# and C++ to the MicroStation Programming Forum.