The following sample code demonstrates how to select all of the objects on a specified layer.
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
// Get a reference to the layer table
CRhinoLayerTable& layer_table = context.m_doc.m_layer_table;
// Get the current layer
const CRhinoLayer& current_layer = layer_table.CurrentLayer();
// Prompt for a layer name
CRhinoGetString gs;
gs.SetCommandPrompt( L"Name of layer to select object" );
gs.SetDefaultString( current_layer.LayerName() );
gs.AcceptNothing( TRUE );
gs.GetString();
if( gs.CommandResult() != CRhinoCommand::success )
return gs.CommandResult();
// Validate the string
ON_wString layer_name = gs.String();
layer_name.TrimLeftAndRight();
if( layer_name.IsEmpty() )
return CRhinoCommand::cancel;
// Find the layer
int layer_index = layer_table.FindLayer( layer_name );
if( layer_index < 0 )
{
RhinoApp().Print( L"\"%s\" does not exists.\n", layer_name );
return CRhinoCommand::cancel;
}
// Get the layer
const CRhinoLayer& layer = layer_table[layer_index];
// Get all of the objects on the layer
ON_SimpleArray<CRhinoObject*> obj_list;
int i, obj_count = context.m_doc.LookupObject( layer, obj_list );
// Select all of the layer objects
for( i = 0; i < obj_count; i++ )
{
CRhinoObject* obj = obj_list[i];
if( obj && obj->IsSelectable() )
obj->Select();
}
if( obj_count )
context.m_doc.Redraw();
return CRhinoCommand::success;
}
Public Overrides Function RunCommand(ByVal context As IRhinoCommandContext)_
As IRhinoCommand.result
' Get a reference to the layer table
Dim layer_table As MRhinoLayerTable = context.m_doc.m_layer_table
' Get the current layer
Dim current_layer As IRhinoLayer = layer_table.CurrentLayer()
' Prompt for a layer name
Dim gs As New MRhinoGetString()
gs.SetCommandPrompt("Name of layer to select object")
gs.SetDefaultString(current_layer.LayerName())
gs.AcceptNothing(True)
gs.GetString()
If (gs.CommandResult() <> IRhinoCommand.result.success) Then Return gs.CommandResult()
' Validate the string
Dim layer_name As String = gs.String().Trim()
If (String.IsNullOrEmpty(layer_name)) Then
Return IRhinoCommand.result.cancel
End If
' Find the layer
Dim layer_index As Integer = layer_table.FindLayer(layer_name)
If (layer_index < 0) Then
RhUtil.RhinoApp.Print(layer_name + "does not exist." + vbCrLf)
Return IRhinoCommand.result.cancel
End If
' Get the layer
Dim layer As IRhinoLayer = layer_table(layer_index)
' Get all of the objects on the layer
Dim obj_list As MRhinoObject() = Nothing
Dim obj_count As Integer = context.m_doc.LookupObject(layer, obj_list)
' Select all of the layer objects
If (obj_list Is Nothing) Then Return IRhinoCommand.result.cancel
For Each obj As MRhinoObject In obj_list
If (obj IsNot Nothing And obj.IsSelectable()) Then obj.Select()
Next
If (obj_count > 0) Then context.m_doc.Redraw()
Return IRhinoCommand.result.success
End Function
public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
{
// Get a reference to the layer table
MRhinoLayerTable layer_table = context.m_doc.m_layer_table;
// Get the current layer
IRhinoLayer current_layer = layer_table.CurrentLayer();
// Prompt for a layer name
MRhinoGetString gs = new MRhinoGetString();
gs.SetCommandPrompt("Name of layer to select object");
gs.SetDefaultString(current_layer.LayerName());
gs.AcceptNothing(true);
gs.GetString();
if(gs.CommandResult() != IRhinoCommand.result.success)
return gs.CommandResult();
// Validate the string
string layer_name = gs.String().Trim();
if(string.IsNullOrEmpty(layer_name))
return IRhinoCommand.result.cancel;
// Find the layer
int layer_index = layer_table.FindLayer(layer_name);
if(layer_index < 0)
{
RhUtil.RhinoApp().Print(layer_name + "does not exist.\n");
return IRhinoCommand.result.cancel;
}
// Get the layer
IRhinoLayer layer = layer_table[layer_index];
// Get all of the objects on the layer
MRhinoObject[] obj_list = null;
int obj_count = context.m_doc.LookupObject(layer, ref obj_list);
// Select all of the layer objects
if(obj_list == null)
return IRhinoCommand.result.cancel;
foreach( MRhinoObject obj in obj_list)
{
if( obj != null && obj.IsSelectable() )
obj.Select();
}
if (obj_count > 0)
context.m_doc.Redraw();
return IRhinoCommand.result.success;
}