Create Plane Surface
Windows only

Demonstrates how to create a plane surface.

CArgsRhinoGetPlane args;
args.SetFirstPointPromptCorners( L"First corner of plane" );
args.SetSecondPointPromptCorners( L"Other corner or length" );
args.SetFirstPointPrompt3Point( L"Start of edge" );
args.SetSecondPointPrompt3Point( L"End of edge" );
args.SetThirdPointPrompt3Point( L"Width. Press Enter to use length" );
args.SetFirstPointPromptVertical( L"Start of edge" );
args.SetSecondPointPromptVertical( L"End of edge" );
args.SetThirdPointPromptVertical( L"Height. Press Enter to use width" );
args.SetFirstPointPromptCenter( L"Center of plane" );
args.SetSecondPointPromptCenter( L"Other corner or length" );
args.SetAllow3Point();
args.SetAllowCenter();
args.SetAllowVertical();
args.SetAllowRounded( false );
args.SetAllowDeformable( false );

ON_3dPoint corners[4];
CRhinoCommand::result rc = RhinoGetRectangle( args, corners );

if( rc == CRhinoCommand::success)
{
ON_3dPoint& p0 = corners[0];
ON_3dPoint& p1 = corners[1];
ON_3dPoint& p3 = corners[3];

ON_Interval domain0, domain1;
domain0.Set( 0.0, p0.DistanceTo(p1) );
domain1.Set( 0.0, p0.DistanceTo(p3) );

ON_Plane plane( p0, p1, p3 );

ON_PlaneSurface ps( plane );
ps.SetExtents( 0, domain0, true );
ps.SetExtents( 1, domain1, true );
ps.SetDomain( 0, domain0.Min(), domain0.Max() );
ps.SetDomain( 1, domain1.Min(), domain1.Max() );