How to access display tag data?



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

    On 27/02/2003 at 03:28, xxxxxxxx wrote:

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

    ---------
    Hi,
    isn't it possible to change data of a display tag?

        
        
        
        
             tag = BaseTag::Alloc(Tdisplay);  
             if (tag)  
             {  
              op->InsertTag(tag, NULL);  
              cData = tag->GetDataInstance();  
              cData->SetBool(DISPLAYTAG_AFFECT_DISPLAYMODE, TRUE);  
              cData->SetLong(DISPLAYTAG_DISPLAYMODE, DISPLAYTAG_DISPLAYMODE_WIREFRAME);  
             }  
        
    

    This code will insert the tag, but container data is not affected!?
    To verify the ID values, I tried this:

        
        
        
        
          BaseTag *tag = op->GetTag(Tdisplay);  
          if (tag)  
          {  
           BaseContainer *cData = tag->GetDataInstance();  
           LONG i;  
           GePrint("Searching ID...");  
           for (i=1000; i<100000; i++)  
           {  
            if (cData->GetLong(i) == DISPLAYTAG_DISPLAYMODE_WIREFRAME)  
             GePrint("ID:" + LongToString(i));  
           }  
          }  
        
    

    Nothing. I can change any value using the gui of the tag without any effect in the container data. 
    What's wrong?
    Analogous to Tphong and SetPhong(...), I looked for a method like "SetDisplay(...)"; without any success.
    Klaus Heyne



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

    On 27/02/2003 at 06:03, xxxxxxxx wrote:

    please search this forum with a corresponding value. There was already a thread that solved this problem.



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

    On 28/02/2003 at 10:12, xxxxxxxx wrote:

    Thanks for the hint. But the thread you mean, handles with coffee and didn't solve the problem.
    So, again a code snippet from the execute function of a plugin tag, assigned to the object, that also has the display tag:

        
        
        
        
          BaseTag *dTag = op->GetTag(Tdisplay);  
          if (dTag)  
          {  
           BaseContainer *dData = dTag->GetDataInstance();  
           dData->SetBool(DISPLAYTAG_AFFECT_DISPLAYMODE, TRUE);  
           dData->SetLong(DISPLAYTAG_DISPLAYMODE, DISPLAYTAG_DISPLAYMODE_WIREFRAME);  
           dTag->Message(MSG_UPDATE);  
          }  
        
    

    The debugger does not show the name of the display tag!? Should it?
    Is there something wrong with GetDataInstance?
    Klaus Heyne



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

    On 28/02/2003 at 10:21, xxxxxxxx wrote:

    Hi,
    sorry. My fault. Should have looked bette. HAven´t noticed you are working with C++.
    Yes, GetDataInstance is sometimes not possible (don´t ask my why. There must be a reason but I don´t know it). Use GetData to get the BaseContainer and use SetData after changing properties. This will work for the Display Tag (had the same problem some time ago).
    Best
    Samir


Log in to reply