Creating Leaders
Windows only
        
        
    
How To
Leaders in Rhino are defined by the ON_Leader2 class.  To construct a leader, you must provide:
- A plane, or an 
ON_Planeobject, which defines the plane in which the leader will be located. - Two or more 2D points that line in the plane that you specified above.
 
In the following sample code, we will construct a simple leader object. The leader will reside in the world x-y plane and will have four points…
CRhinoCommand::result CCommandLeader::RunCommand( const CRhinoCommandContext& context )
{
  // Some set of points that define the leader
  ON_3dPointArray points;
  points.Append( ON_3dPoint(1.0, 1.0, 0.0) );
  points.Append( ON_3dPoint(5.0, 1.0, 0.0) );
  points.Append( ON_3dPoint(5.0, 5.0, 0.0) );
  points.Append( ON_3dPoint(9.0, 5.0, 0.0) );
  // The plane in which the leader resides
  ON_Plane plane = ON_xy_plane;
  // Create the leader
  ON_Leader2 leader;
  leader.SetPlane( plane );
  // Add the points to the leader
  int i;
  for( i = 0; i < points.Count(); i++ )
  {
    // Make sure the points are on the plane
    ON_2dPoint p2;
    if( leader.m_plane.ClosestPointTo(points[i], &p2.x, &p2.y) )
    {
      if( leader.m_points.Count() < 1 | p2.DistanceTo(*leader.m_points.Last()) > ON_SQRT_EPSILON )
        leader.m_points.Append( p2 );
    }
  }
  // Create the leader object
  CRhinoAnnotationLeader* leader_object = new CRhinoAnnotationLeader();
  // Add our leader to the object
  leader_object->SetAnnotation( leader );
  if( context.m_doc.AddObject(leader_object) )
    context.m_doc.Redraw();
  else
    delete leader_object; // error
  return success;
}
