CRhinoCommand::result CCommandSampleMeshDir::RunCommand( const CRhinoCommandContext& context ) { CRhinoGetObject go; go.SetGeometryFilter( CRhinoObject::mesh_object | CRhinoObject::surface_object | CRhinoObject::polysrf_object | CRhinoObject::instance_reference ); go.SetCommandPrompt( L"Select mesh, surface, or polysurface objects" ); go.GetObjects(1,0); if( go.Result() != CRhinoGet::object ) return CRhinoCommand::cancel; int i = 0; ON_SimpleArray<const CRhinoObject*> objects( go.ObjectCount() ); for( i = 0; i < go.ObjectCount(); i++ ) objects.Append( go.Object(i).Object() ); ON_ClassArray<CRhinoObjRef> render_meshes; int count = RhinoGetRenderMeshes( objects, render_meshes, true, false ); if( count > 0 ) { CMeshDirDrawCallback callback; callback.m_mesh_list.Reserve( count ); for( i = 0; i < render_meshes.Count(); i++ ) { const ON_Mesh* mesh = render_meshes[i].Mesh(); if( mesh ) callback.m_mesh_list.AppendNew().SetMesh( mesh ); } CRhinoGetOption go; go.SetCommandPrompt( L"Press Enter when done" ); go.AcceptNothing(); go.AddCommandOptionToggle( RHCMDOPTNAME(L"FaceNormals"), RHCMDOPTVALUE(L"No"), RHCMDOPTVALUE(L"Yes"), m_draw_face_normals, &m_draw_face_normals ); go.AddCommandOptionToggle( RHCMDOPTNAME(L"VertexNormals"), RHCMDOPTVALUE(L"No"), RHCMDOPTVALUE(L"Yes"), m_draw_vertex_normals, &m_draw_vertex_normals ); CRhinoGet::result res = CRhinoGet::nothing; for( ;; ) { callback.m_draw_face_normals = m_draw_face_normals; callback.m_draw_vertex_normals = m_draw_vertex_normals; CRhinoView::AddDrawCallback( &callback ); context.m_doc.Redraw( CRhinoView::regenerate_display_hint ); res = go.GetOption(); CRhinoView::RemoveDrawCallback( &callback ); if( res == CRhinoGet::option ) continue; break; } } context.m_doc.Redraw( CRhinoView::regenerate_display_hint ); return CRhinoCommand::success; }
CRhinoCommand::result CCommandSampleOrientOnCrv::SelectObjects( CRhinoXformObjectList& object_list ) { object_list.Empty(); CRhinoGetObject get; get.SetCommandPrompt( L"Select objects to orient" ); get.EnablePreSelect(); get.EnableSubObjectSelect( FALSE ); get.AcceptNothing(); get.GetObjects(1, 0); CRhinoCommand::result rc = get.CommandResult(); if( rc == CRhinoCommand::success ) { if( object_list.AddObjects( get ) < 1 ) rc = CRhinoCommand::failure; } return rc; }
CRhinoCommand::result CCommandSampleOrientOnCrv::GetPathCurve( const ON_Curve*& path_curve ) { CRhinoGetObject get; get.SetCommandPrompt( L"Select path curve" ); get.SetGeometryFilter( CRhinoGetObject::curve_object ); get.EnableDeselectAllBeforePostSelect( false ); get.EnablePreSelect( FALSE ); get.AcceptNothing(); get.GetObjects( 1, 1 ); CRhinoCommand::result rc = get.CommandResult(); if( rc == CRhinoCommand::success ) { CRhinoObjRef objRef = get.Object(0); path_curve = objRef.Curve(); if( !path_curve ) rc = CRhinoCommand::failure; } return rc; }
CRhinoCommand::result CCommandSampleObjectCursor::RunCommand( const CRhinoCommandContext& context ) { CRhinoGetObject go; go.SetCommandPrompt( L"Select object to delete" ); go.AcceptNothing( FALSE ); HCURSOR hCursor = SampleCursorPlugIn().Cursor(); if( 0 != hCursor ) RhinoSetCursor( hCursor ); go.GetObjects( 1, 1 ); if( 0 != hCursor ) RhinoSetCursor( 0 ); if (go.CommandResult() != CRhinoCommand::success ) return go.CommandResult(); context.m_doc.DeleteObject( go.Object(0) ); context.m_doc.Redraw(); return CRhinoCommand::success; }