Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    restore selection object

    SDK Help
    0
    9
    1.6k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      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

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        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);
        
        
         
        
        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          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
          
          
           
          
          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            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

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              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

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                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

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

                  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();
                  
                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

                    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

                    1 Reply Last reply Reply Quote 0
                    • H
                      Helper
                      last edited by

                      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

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post