Meshing Objects
Windows only
Demonstrates how to mesh surface and polysurface objects using the RhinoMeshObjects function.
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
// Select some geometry to mesh
CRhinoGetObject go;
go.SetCommandPrompt( L"Select surface or polysurface to mesh" );
go.SetGeometryFilter( CRhinoGetObject::surface_object | CRhinoGetObject::polysrf_object );
go.GetObjects( 1, 1 );
if( go.CommandResult() != success )
return go.CommandResult();
ON_SimpleArray<const CRhinoObject*> objects;
objects.Append( go.Object(0).Object() );
// RhinoMeshObjects need to know how to mesh the objects. This information is provided
// by passing the function a ON_MeshParameters object. For details on this class, see
// opennurbs_mesh.h.
// In this example, instead of making up our own default mesh parameters, we will just
// get some existing ones that we know work well.
const CRhinoAppRenderMeshSettings& rms = RhinoApp().AppSettings().RenderMeshSettings();
//ON_MeshParameters mp = rms.QualityMeshParameters();
ON_MeshParameters mp = rms.FastMeshParameters();
// Set the user interface style.
int ui_style = 0; // simple ui
ON_ClassArray<CRhinoObjectMesh> meshes;
// Mesh the selected objects.
CRhinoCommand::result rc = RhinoMeshObjects( objects, mp, ui_style, meshes );
if( rc == success )
{
int i;
for( i = 0; i < meshes.Count(); i++ )
{
CRhinoObjectMesh& mesh = meshes[i];
CRhinoMeshObject* mesh_object = new CRhinoMeshObject( mesh.m_mesh_attributes );
mesh_object->SetMesh( mesh.m_mesh );
mesh.m_mesh = 0;
context.m_doc.AddObject( mesh_object );
}
context.m_doc.Redraw();
}
return rc;
}