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

    Viewport Filters

    SDK Help
    0
    3
    289
    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

      On 13/06/2014 at 02:10, xxxxxxxx wrote:

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

      ---------
      Hi Folks,
       
      I've seen some python code on how to turn some viewport filters on/off, but the c++ was a little confusing to me (maybe the syntax?). Is someone in the know able to clarify the following:
       
      1. There's DOCUMENT_SELECTIONFILTER and DOCUMENTFILTER_ flags, which is used for turning off, say viewport polygons, and how is it done? Below is one of the variations I've tried:

      BaseDocument *doc = GetActiveDocument();
      BaseContainer bc = doc->GetData(DOCUMENTSETTINGS_DOCUMENT);
      LONG Filter = bc.GetLong(DOCUMENT_SELECTIONFILTER);
       
      bc.SetLong(DISPLAYFILTER_POLYGON,...);  // <--- does something go here?
      doc->SetData(DOCUMENTSETTINGS_DOCUMENT,bc);
      

      2. Second to the above, can this be done on a per-viewport basis? I've tried the GetBaseDrawCount() to try and find a window count, but it always returns the same value (which is 4 for me) which leaves me unsure on how to get a viewport on an individual basis (if possible).
       
      Cheers,
       
      WP

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

        On 13/06/2014 at 08:06, xxxxxxxx wrote:

        What you've got there is code for the SelectionFilter option. Not the DisplayView option.
        This is how to enable/disable the DV polygon option.
        AFAIK. This option can't be different for multiple windows.

            BaseDraw *bd = doc->GetActiveBaseDraw();  
          
          //Use "TRUE" or "FALSE" to turn it on/off  
          bd->SetParameter(DescLevel(BASEDRAW_DISPLAYFILTER_POLYGON), FALSE, DESCFLAGS_SET_0);
        

        Since you've said you don't understand that code you posted.
        Here's also examples of how to use it to enable/disable the SelectionFilter's  polygon option.
        The SelectionFilter uses bitwise operators to enable/disable them.

        //This code Turns the Select->SelectionFilter menu polygon filter option OFF  
        //The option found in the Select->Selection Filter menu  
          
          //Gets the document's container which includes the selection filter bit mask  
          BaseContainer bc = doc->GetData(DOCUMENTSETTINGS_DOCUMENT);  
          
          LONG sf = bc.GetLong(DOCUMENT_SELECTIONFILTER);   //Get the filter bit mask  
           
          if(!(sf & SELECTIONFILTERBIT_POLYGON))            //If the polygon option is enabled  
          {        
              LONG f = sf | SELECTIONFILTERBIT_POLYGON;     //Turns the polygon filter option off using the bitwise switching off code  
              bc.SetLong(DOCUMENT_SELECTIONFILTER, f);  
          }  
          doc->SetData(DOCUMENTSETTINGS_DOCUMENT, bc);  
          
          EventAdd();  
          
          
          
          
        //This code Turns the Select->SelectionFilter menu polygon filter option ON  
        //The option found in the Select->Selection Filter menu  
          
          //Gets the document's container which includes the selection filter bit mask  
          BaseContainer bc = doc->GetData(DOCUMENTSETTINGS_DOCUMENT);  
          
          LONG sf = bc.GetLong(DOCUMENT_SELECTIONFILTER);  //Get the filter bit mask  
           
          if(sf & SELECTIONFILTERBIT_POLYGON)             //If the polygon option is enabled  
          {       
              LONG f = sf &~ SELECTIONFILTERBIT_POLYGON;   //Turns the polygon filter option on using the bitwise switching ON code  
              bc.SetLong(DOCUMENT_SELECTIONFILTER, f);  
          }  
          doc->SetData(DOCUMENTSETTINGS_DOCUMENT, bc);  
          
          EventAdd();
        

        -ScottA

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

          On 14/06/2014 at 03:21, xxxxxxxx wrote:

          Hi Scott,
          thanks for the above, I seem to have the viewport filters under control now. I was all over the place with them!
           
          The selection ones don't seem to be doing much for me - I'll need to have a closer look at them.
           
          WP.

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