restore selection object



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 29/11/2002 at 01:14, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.012 
    Platform:   Windows  ; Mac  ;  
    Language(s) :     C++  ;

    ---------
    ive got an object
      BaseObject *x
    its of type
      Oselection
    so I want to restore this selection.
    I start looking for some ways to do this , but this seems  very cloudy.
    I look in the Oselection.h for some clues and find
     SELECTIONOBJECT_LIST   = 1000,
     SELECTIONOBJECT_RESTORE  = 1001 // virtual ID
    then I look in the Oselection.res and find
     BUTTON SELECTIONOBJECT_RESTORE { }
     IN_EXCLUDE SELECTIONOBJECT_LIST {bla bla}
    it would be nice if i could send a message to click the button :) but i soubt this very much.
    so im left with IN_EXCLUDE   data type.
    I look in SDK help for some clue how top extract the list of  object from this data type and there is no clue.
     
    so I ask here  , how can i get activate an Oselection and its contents , as if i had pressed its restore selection button.or at least get the list of object so i can activate them by hand.
     
    cheers
     
    Paul



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 29/11/2002 at 07:48, xxxxxxxx wrote:

    Shouldn´t it work like this to restore the selection:

    BaseContainer \*bc = so->GetDataInstance();  
    bc->SetBool(1002,1);
    
    
     
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 29/11/2002 at 15:18, xxxxxxxx wrote:

    Shouldn´t it work like this to restore the selection:

    >BaseContainer \*bc = so->GetDataInstance();
    
    
    >bc->SetBool(1002,1);
    
    
     
    
    
    it would be nice if that worked , but it doesnt :/
    
    
      
    Paul
    
    
     
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 29/11/2002 at 19:10, xxxxxxxx wrote:

    Hmm, you are right, I just tried it out. I tried to get the GeDataType of it but that didn´t work either. I receive DA_NIL when using SELECTIONOBJECT_RESTORE and the default case appears when using the SELECTIONOBJECT_LIST data:

        
        
        BaseContainer *bc = so->GetDataInstance();  
          GeDataType p = bc->GetType(SELECTIONOBJECT_LIST);   
         
        
        
        
        
          switch(p)  
          {  
           case DA_NIL: GePrint("NULL");  
            break;  
           case DA_LONG: GePrint("long");  
            break;  
           case DA_REAL: GePrint("real");  
            break;  
           case DA_VECTOR: GePrint("vector");  
            break;  
           case DA_MATRIX: GePrint("matrix");  
            break;  
           case DA_BYTEARRAY: GePrint("bytearray");  
            break;  
           case DA_STRING: GePrint("string");  
            break;  
           case DA_FILENAME: GePrint("filename");  
            break;  
           case DA_CONTAINER: GePrint("container");  
            break;  
           case DA_ALIASLINK: GePrint("aliaslink");  
            break;  
           case DA_MARKER: GePrint("marker");  
            break;  
           case DA_MISSINGPLUG: GePrint("missingplug");  
            break;  
           case DA_CUSTOMDATATYPE: GePrint("customdatatype");  
            break;  
           default: GePrint("nothing");  
            break;  
          }
    

    But I guess this is all wrong too. I guess maybe creating an inclusion table and using it to get the objects from the list could work. But I haven´t been useing it yet.
    InclusionTable *BuildInclusionTable(BaseDocument *doc, LONG hierarchy_bit = NOTOK);
    I would really like to know too how to use it. Hopefully Mikael will clear this out tommorrow.
    Best
    Samir



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 30/11/2002 at 06:11, xxxxxxxx wrote:

    ok all sorted.
    I just needed to extract the custom data type from the container
     
    cheers



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 30/11/2002 at 06:50, xxxxxxxx wrote:

    could you tell me how you did at last?
    thx
    Samir



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 01/12/2002 at 02:42, xxxxxxxx wrote:

    Glad you worked it out. Otherwise this is the way to push a button:

        
        
          BaseObject* obj = doc->GetFirstObject();  
          if (!obj || obj->GetType() != Oselection) return FALSE;
        
        
        
        
          DescriptionCommand dc;  
          dc.id = DescLevel(SELECTIONOBJECT_RESTORE);  
          obj->Message(MSG_DESCRIPTION_COMMAND, &dc);
        
        
        
        
          EventAdd();
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 01/12/2002 at 04:29, xxxxxxxx wrote:

    hey , great stuff Mikael :)
     
    to extract the selection  from the the container i made this little function
    it assumes that your sending a valid Oselection type to it.
    void DoMultiSelect(BaseObject *oplink)
    {
    BaseContainer *data=oplink->GetDataInstance();
    InExcludeData *list=(InExcludeData* )data->GetCustomDataType(SELECTIONOBJECT_LIST,CUSTOMDATATYPE_INEXCLUDE_LIST);
     LONG list_cnt=list->GetObjectCount();
     BaseObject *listop=NULL;
     if (list_cnt)
     {
      oplink->DelBit(BIT_ACTIVE);
      for (LONG lc=0;lc<list_cnt;lc++)
      {
      listop=(BaseObject* )list->ObjectFromIndex(oplink->GetDocument(),lc);
      listop->SetBit(BIT_ACTIVE);
      }
     }
    else oplink->SetBit(BIT_ACTIVE);
    EventAdd(EVMSG_BROWSERCHANGE);
    }
     
    the new customdatatype in basecontainer seems to be the key to lots of interesting things!!!
     
    cheers
     
    Paul



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 01/12/2002 at 04:36, xxxxxxxx wrote:

    Great. Thanks for explaining Paul! And thanks to Mikael for the button thing. :)
    Best Samir


Log in to reply