Printing a Layer's Full Path
Windows only
Problem
You could like to print a layer’s full path. That is, if a layer “MyLayer””" is nested, I would like to print out the nesting like this:
"GreatGrandParent / GrandParent / Parent / MyLayer"
Solution
The following sample function ought to do the trick:
static ON_wString RhinoFullLayerPath( CRhinoDoc& doc, const CRhinoLayer& layer )
{
ON_wString layer_path;
CRhinoLayerNode layer_node;
layer_node.Create(layer.m_layer_index, 2, 0, true );
if( layer_node.m_parent_count > 0 )
{
int i, layer_index = -1;
for( i = layer_node.m_parent_count - 1; i >= 0; i-- )
{
layer_index = layer_node.m_parent_list[i];
layer_path += doc.m_layer_table[layer_index].LayerName();
layer_path += L" / ";
}
}
layer_path += layer.LayerName();
return layer_path;
}
You can use the function like this…
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
ON_wString s = RhinoFullLayerPath( context.m_doc, context.m_doc.m_layer_table.CurrentLayer() );
RhinoApp().Print( L"%s\n", s.Array() );
return CRhinoCommand::success;