The following sample code demonstrates how to create a plane surface.
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
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() );
context.m_doc.AddSurfaceObject( ps );
context.m_doc.Redraw();
}
return CRhinoCommand::success;
}
Public Overrides Function RunCommand(ByVal context As IRhinoCommandContext)_
As RMA.Rhino.IRhinoCommand.result
Dim args As New MArgsRhinoGetPlane()
args.SetFirstPointPromptCorners("First corner of plane")
args.SetSecondPointPromptCorners("Other corner or length")
args.SetFirstPointPrompt3Point("Start of edge")
args.SetSecondPointPrompt3Point("End of edge")
args.SetThirdPointPrompt3Point("Width. Press Enter to use length")
args.SetFirstPointPromptVertical("Start of edge")
args.SetSecondPointPromptVertical("End of edge")
args.SetThirdPointPromptVertical("Height. Press Enter to use width")
args.SetFirstPointPromptCenter("Center of plane")
args.SetSecondPointPromptCenter("Other corner or length")
args.SetAllow3Point()
args.SetAllowCenter()
args.SetAllowVertical()
args.SetAllowRounded(False)
args.SetAllowDeformable(False)
Dim corners As On3dPoint() = Nothing
Dim rc As IRhinoCommand.result = RhUtil.RhinoGetRectangle(args, corners)
If (rc = IRhinoCommand.result.success And corners IsNot Nothing) Then
Dim p0 As On3dPoint = corners(0)
Dim p1 As On3dPoint = corners(1)
Dim p3 As On3dPoint = corners(3)
Dim domain0 As New OnInterval(0, p0.DistanceTo(p1))
Dim domain1 As New OnInterval(0, p0.DistanceTo(p3))
Dim plane As New OnPlane(p0, p1, p3)
Dim ps As New OnPlaneSurface(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())
context.m_doc.AddSurfaceObject(ps)
context.m_doc.Redraw()
End If
Return rc
End Function
public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
{
MArgsRhinoGetPlane args=new MArgsRhinoGetPlane();
args.SetFirstPointPromptCorners("First corner of plane");
args.SetSecondPointPromptCorners("Other corner or length");
args.SetFirstPointPrompt3Point("Start of edge");
args.SetSecondPointPrompt3Point("End of edge");
args.SetThirdPointPrompt3Point("Width. Press Enter to use length");
args.SetFirstPointPromptVertical("Start of edge");
args.SetSecondPointPromptVertical("End of edge");
args.SetThirdPointPromptVertical("Height. Press Enter to use width");
args.SetFirstPointPromptCenter("Center of plane");
args.SetSecondPointPromptCenter("Other corner or length");
args.SetAllow3Point();
args.SetAllowCenter();
args.SetAllowVertical();
args.SetAllowRounded(false);
args.SetAllowDeformable(false);
On3dPoint[] corners= new On3dPoint[4];
IRhinoCommand.result rc = RhUtil.RhinoGetRectangle(ref args, out corners);
if( rc == IRhinoCommand.result.success)
{
On3dPoint p0 = corners[0];
On3dPoint p1 = corners[1];
On3dPoint p3 = corners[3];
OnInterval domain0, domain1;
domain0=new OnInterval ( 0.0, p0.DistanceTo(p1) );
domain1=new OnInterval ( 0.0, p0.DistanceTo(p3) );
OnPlane plane= new OnPlane( p0, p1, p3 );
OnPlaneSurface ps= new OnPlaneSurface ( 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() );
context.m_doc.AddSurfaceObject( ps );
context.m_doc.Redraw();
}
return IRhinoCommand.result.success;
}