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_Plane
object, 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; }