Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    Fold/Unfold in Object Manager

    SDK Help
    0
    19
    1.7k
    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 22/02/2007 at 14:28, xxxxxxxx wrote:

      SetBit(BIT_OFOLD) or ToggleBit() doesn´t work? If so I don´t know what the prob may be. 🙂

      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 22/02/2007 at 15:31, xxxxxxxx wrote:

        That be it. I'm using SetBit(), DelBit(), and GetBit() from a dialog TreeView and this is been working everywhere else as expected (R8.2-R9.6). No response in R10 - the object is selected in the O.M., but the hierarchy does not expand (or contract).

        This type of stuff and random crashes are starting to irritate me no end (this is not even Xcode!). Maybe it's time to redo my website and plugin - "R10 support has been suspended until stability and functionality have been restored." ;0)

        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 22/02/2007 at 15:43, xxxxxxxx wrote:

          lol, yes, that would be an option. 😉 Maybe it´s a bug in R10 or an undocumented functionality is necessary (due to the ability to have several OMs in R10...just a guess).

          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 22/02/2007 at 16:07, xxxxxxxx wrote:

            Several OMs and even possibly Layers (these have crossed my mind and my eyes).

            Thing is, nothing in the documentation about any changes that would appear to affect this.

            Oh well. Time to wait and see. 🙂

            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 22/02/2007 at 16:10, xxxxxxxx wrote:

              Quote: _Thing is, nothing in the documentation about any changes that would appear to affect this.
              >
              > * * *
              _


              You should know by now that this doesn´t mean absolutely no nothing! ;-D

              (trible negation to accentuate this was necessary *g* )

              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 22/02/2007 at 16:42, xxxxxxxx wrote:

                Iow, if it's omitted from the documentation - then it's not a bug - it's an overlooked feature? 😜

                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 23/02/2007 at 08:10, xxxxxxxx wrote:

                  No comment. 😄

                  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 26/02/2007 at 04:25, xxxxxxxx wrote:

                    Hi guys.. not long ago i came across the "Bool GetNBit(LONG bit) const" Function. It is in the manual, and is probably exactly what you need ( if it works correctly 😉 )

                    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 26/02/2007 at 05:34, xxxxxxxx wrote:

                      Ah! Then one must also use ChangeNBit() for this. Thanks for the info Michael!....well, if it works 😉

                      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 26/02/2007 at 06:59, xxxxxxxx wrote:

                        Already looked at the *NBit() methods. They are for 64-bit bitfields - if that were to have any bearing on a 32-bit version of Cinema 4D, strange.

                        How would you use these fields anyway? For instance, the Object Manager fold is represented by four LONG fields. What do you check here - for all of them to be non-zero? No further information.

                        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 26/02/2007 at 07:35, xxxxxxxx wrote:

                          That info seems misleading.. it probably just means that you have 64 "flags". You should be able to do sth. like GetNBit(NBIT_OM1_FOLD) or ChangeNBit(NBIT_OM1_FOLD,NBIT_SET
                          ) without problems on any architecture. It is not possible to combine the bits though. GetNBit(NBIT_OM1_FOLD | NBIT_OM2_FOLD) is illegal ( see definition of these constants in ge_prepass.h )

                          I guess that the four fold bits correspond to the four different object managers.

                          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 26/02/2007 at 08:23, xxxxxxxx wrote:

                            It does seem to work.

                            But what do you mean by 'the four different object managers'? I know that you can have more than one OM, but have not seen any other type of OM. Oh I see - you can have up to four OMs open (previous descriptions sounded like there could be any number opened).

                            I guess that I'll continue in the current vane and just get/set/del all four of them - poor users. 🙂

                            Looking at these NBIT fields, do you notice that all (except for the OM ones) are timeline related - ALL of them: TL=TimeLine, FC=F-Curve, CKEY= (well) CKey? The natural question arises - why is the Object Manager folding now tied directly to the TimeLine?

                            Thanks,
                            Robert

                            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 26/02/2007 at 08:51, xxxxxxxx wrote:

                              With this information in hand, anyone care to speculate how you would determine which of the four possible OMs (Scene Browsers - I take it from ManagerInfo) is the active one?

                              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 12/04/2007 at 13:44, xxxxxxxx wrote:

                                Robert -
                                I ran into the same issue you did while doing a tutorial based on 9.6.
                                I'm a newb at scripting in COFFEE and I was able to get most of the script to work by changing CallCommand #'s, the only thing that drives me crazy is the folded hierarchy that SetBit, DelBit, ToggleBit don't seem to phase.  Any results with that other GetNBit function vs. the 4 OM's?   (I don't completely understand the syntax - just hoping you've found something).
                                Dell

                                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 12/04/2007 at 14:01, xxxxxxxx wrote:

                                  This is the code that I'm using (within a TreeViewFunctions that somewhat mirrors the OM - but not exactly). Note that I'm only interested in the one Object Manager and decided not to do it in any others that may be available.

                                  //*---------------------------------------------------------------------------*  
                                  Bool DoubleClick(void* root, void* userdata, void* obj, LONG col, MouseInfo* mouseinfo)  
                                  //*---------------------------------------------------------------------------*  
                                  {  
                                       BaseObject*          op =               (BaseObject* )obj;  
                                       if (!op->IsInstanceOf(Obase))     return FALSE;  
                                       BaseObject*          op2 =               op;  
                                       op =                                   op->GetUp();  
                                       if (!op)                              return TRUE;  
                                       // Find first contracted set  
                                       while (op)  
                                       {  
                                  #ifdef     C4D_R10  
                                            if (!op->GetNBit(NBIT_OM1_FOLD))     break;  
                                  #else  
                                            if (!op->GetBit(BIT_OFOLD)) break;  
                                  #endif  
                                            op = op->GetUp();  
                                       }  
                                       // If there is a folded object, expand to op2  
                                       if (op)  
                                       {  
                                            // Expand  
                                            do  
                                            {  
                                                 op2 = op2->GetUp();  
                                                 if (op2)  
                                                 {  
                                  #ifdef     C4D_R10  
                                                      op2->ChangeNBit(NBIT_OM1_FOLD, NBIT_SET);  
                                  #else  
                                                      op2->SetBit(BIT_OFOLD);  
                                  #endif  
                                                 }  
                                            } while (op2);  
                                       }  
                                       // If all parents expanded, contract to first IPP parent  
                                       else  
                                       {  
                                            // Contract  
                                            while (op2)  
                                            {  
                                                 op2->DelBit(BIT_OFOLD);  
                                                 op2 = op2->GetUp();  
                                                 if (op2 && (op2->GetTag(ID_IPPFIGURETAG) || op2->GetTag(ID_IPPOBJECTTAG)))  
                                                 {  
                                  #ifdef     C4D_R10  
                                                      op2->ChangeNBit(NBIT_OM1_FOLD, NBIT_DEL);  
                                  #else  
                                                      op2->DelBit(BIT_OFOLD);  
                                  #endif  
                                                      break;  
                                                 }  
                                            }  
                                       }  
                                       EventAdd();  
                                       return TRUE;  
                                  }
                                  
                                  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 12/04/2007 at 14:46, xxxxxxxx wrote:

                                    Wow!  Thank you very much Robert.  The code is a bit over my head, so I think I'll just manually expand my resulting hierarchy until I get a better handle on C4D scripting in R10.   At the moment, ChangeNBit doesn't even turn black in my script manager (ie doesn't appear to be a valid member function of Hypernurb or symmetry objects)... 😞
                                    The code I'm having trouble with (with redundant debugging here - I've tried both Del and SetBits:
                                    ///////////////////PROBLEM AREA.......
                                    //hN is a hypernurb object
                                    //sym is a symmetry object
                                    hN->SetBit(BIT_OFOLD);          // doesn't work R10
                                    sym->SetBit(BIT_OFOLD);          // doesn't work R10
                                    println("Using SetBit and BIT_OFOLD ");
                                    println(hN->GetBit(BIT_OFOLD));
                                    hN->DelBit(BIT_OFOLD);
                                    sym->DelBit(BIT_OFOLD);
                                    println("Using DelBit and BIT_OFOLD ");
                                    println(hN->GetBit(BIT_OFOLD));
                                    hN->SetBit(NBIT_OM1_FOLD);   //idea from SDK R10,  but doesn't work (64 bit OS only?)
                                    sym->SetBit(NBIT_OM1_FOLD);  //idea from SDK R10,  but doesn't work (64 bit OS only?)
                                    println("Using SetBit and NBIT_OM1_FOLD ");
                                    println(hN->GetBit(NBIT_OM1_FOLD));
                                    hN->DelBit(NBIT_OM1_FOLD);
                                    sym->DelBit(NBIT_OM1_FOLD);       //appears to set bit for OM1, but doesn't seem to change folding
                                    println("NBIT_OM1_FOLD after modification: ");
                                    println(hN->GetBit(NBIT_OM1_FOLD));  //confirms FOLD bit change 1 to 0 but no change in display OM
                                    //hN->ChangeNBit(NBIT_OM1_FOLD, NBIT_SET); //ChangeNBit apparently not valid member function nH (Hypernurb object)
                                    //sym->ChangeNBit(NBIT_OM1_FOLD, NBIT_SET);//or sym (symmetry object)

                                    //////////////// .....END PROBLEM AREA

                                    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 12/04/2007 at 15:21, xxxxxxxx wrote:

                                      My code is C++ only. Don't know about COFFEE in R10 - it looks to be still R9.5 support only. Hopefully one of the dev support users can provide more information in this case.

                                      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 12/04/2007 at 16:30, xxxxxxxx wrote:

                                        Thanks, Robert.  Ah, the assumption I made was that scripting would be similar to plugin C++ syntax.  I thought I could practice with scripts before jumping in to plugins.  I learned something anyway.  Thanks.
                                        Dell

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