Duplicating Objects with Group
Windows only
        
        
    
Problem
When you duplicate a Rhino object which happens to be a member of a group, the duplicate object is (also) a member of that same group. Is there a quick way to duplicate a Rhino object and have the duplicated object be a member of a new group?
Solution
You can use the RhinoUpdateObjectGroups function.  See rhinoSdkGrips.h for details.
Here is a sample of its usage:
CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
{
  CRhinoGetObject go;
  go.SetCommandPrompt( L"Select objects to copy in-place" );
  go.EnableGroupSelect( TRUE );
  go.EnableSubObjectSelect( FALSE );
  go.GetObjects( 1, 0 );
  if( go.CommandResult() != CRhinoCommand::success )
    return go.CommandResult();
  ON_Xform xform;
  xform.Identity();
  ON_2dexMap group_map;
  for( int i = 0; i < go.ObjectCount(); i++ )
  {
    const CRhinoObject* object = go.Object(i).Object();
    if( object )
    {
      CRhinoObject* duplicate = context.m_doc.TransformObject( object, xform, true, false, true );
      if( duplicate )
        RhinoUpdateObjectGroups( duplicate, group_map );
    }
  }
  context.m_doc.Redraw();
  return CRhinoCommand::success;
}
