| McNeel Wiki | |||||
| edit · print · help · all topics | |||||
Main Pages
Languages
| QuestionI understand how to create new layers in Rhino, using the Rhino SDK. But, it is unclear to me how to create sublayers. Can you explain? AnswerLayers can be organized into a hierarchical structure, like file folders. If a layer has a parent layer, then the ON_Layer::m_parent_layer_id member will be set to the id, or ON_Layer::m_layer_id, of the parent layer. If the layer does not have a parent layer, then the ON_Layer::m_parent_layer_id member will be set to ON_nil_uuud; For example: C++
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
CRhinoCommand::result rc = CRhinoCommand::failure;
CRhinoLayerTable& layer_table = context.m_doc.m_layer_table;
ON_Layer layer;
layer.m_name = L"MyTestLayer";
int layer_index = layer_table.AddLayer( layer );
if( layer_index >= 0 || layer_index < layer_table.LayerCount() )
{
const CRhinoLayer& rhino_layer = layer_table[layer_index];
ON_Layer sublayer;
sublayer.m_name = L"MyTestSubLayer";
sublayer.m_parent_layer_id = rhino_layer.m_layer_id;
layer_index = layer_table.AddLayer( sublayer );
if( layer_index >= 0 || layer_index < layer_table.LayerCount() )
rc = CRhinoCommand::success;
}
return rc;
}
C#
public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
{
IRhinoCommand.result rc = IRhinoCommand.result.failure;
MRhinoLayerTable layer_table = context.m_doc.m_layer_table;
OnLayer layer = new OnLayer();
layer.m_name = "MyTestLayer";
int layer_index = layer_table.AddLayer( layer );
if( layer_index >= 0 || layer_index < layer_table.LayerCount() )
{
IRhinoLayer rhino_layer = layer_table[layer_index];
OnLayer sublayer = new OnLayer();
sublayer.m_name = "MyTestSubLayer";
sublayer.m_parent_layer_id = rhino_layer.m_layer_id;
layer_index = layer_table.AddLayer( sublayer );
if( layer_index >= 0 || layer_index < layer_table.LayerCount() )
rc = IRhinoCommand.result.success;
}
return rc;
}
VB.NET
Public Overrides Function RunCommand(ByVal context As RMA.Rhino.IRhinoCommandContext) As RMA.Rhino.IRhinoCommand.result
Dim rc As IRhinoCommand.result = IRhinoCommand.result.failure
Dim layer_table As MRhinoLayerTable = context.m_doc.m_layer_table
Dim layer As OnLayer = New OnLayer()
layer.m_name = "MyTestLayer"
Dim layer_index As Integer = layer_table.AddLayer(layer)
If (layer_index >= 0) And (layer_index < layer_table.LayerCount()) Then
Dim rhino_layer As IRhinoLayer = layer_table(layer_index)
Dim sublayer As OnLayer = New OnLayer()
sublayer.m_name = "MyTestSubLayer"
sublayer.m_parent_layer_id = rhino_layer.m_layer_id
layer_index = layer_table.AddLayer(sublayer)
If (layer_index >= 0) And (layer_index < layer_table.LayerCount()) Then
rc = IRhinoCommand.result.success
End If
End If
Return rc
End Function
| ||||
| rename · changes · history · subscriptions · lost and found · references · file upload | |||||