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

    Container Dump

    Scheduled Pinned Locked Moved SDK Help
    1 Posts 0 Posters 136 Views
    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 Offline
      Helper
      last edited by

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

      On 01/08/2012 at 13:43, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:    
      Platform:      
      Language(s) :

      ---------
      I posted this earlier in another thread, but thought I'd go ahead and post an expanded version of it for anyone interested...

        
      static String VecToString(const Vector& vec)  
      {  
        return String(RealToString(vec.x)+" "+RealToString(vec.y)+" "+RealToString(vec.z));  
      }  
        
      static void DumpMatrix(Matrix xform)  
      {  
        GePrint("===================");  
        GePrint("v1  = " + VecToString(xform.v1));  
        GePrint("v2  = " + VecToString(xform.v2));  
        GePrint("v3  = " + VecToString(xform.v3));  
        GePrint("off = " + VecToString(xform.off));  
        GePrint("===================");  
      }  
        
      void container_dump(BaseContainer *pBc, LONG tab=0)  
      {  
        if(!pBc)    return;  
        
        LONG id, j, i=0;  
        String tabStr;  
        
        for(j=0; j<tab; j++)  
            tabStr += "____";  
        
        while (TRUE)  
        {  
            id = pBc->GetIndexId(i++);  
            if (id==NOTOK) break;  
        
            BaseContainer *pbc = NULL;  
            GeData data = pBc->GetData(id);  
            switch(data.GetType())  
            {  
                case DA_NIL:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_NIL");                                                    break;  
                case DA_VOID:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_VOID");                                                    break;  
                case DA_LONG:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_LONG ("+LongToString(data.GetLong())+")");                break;  
                case DA_REAL:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_REAL ("+RealToString(data.GetReal())+")");                break;  
                case DA_TIME:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_TIME ("+RealToString(data.GetTime().GetNumerator())+" / "+RealToString(data.GetTime().GetDenominator())+")");    break;  
                case DA_VECTOR:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_VECTOR ("+VecToString(data.GetVector())+")");            break;  
                case DA_MATRIX:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_MATRIX...");    DumpMatrix(data.GetMatrix());            break;  
                case DA_LLONG:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_LLONG ("+LLongToString(data.GetLLong())+")");            break;  
                case DA_BYTEARRAY:        GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_BYTEARRAY");                                            break;  
                case DA_STRING:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_STRING (\""+data.GetString()+"\")");                    break;  
                case DA_FILENAME:        GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_FILENAME (\""+data.GetFilename().GetString()+"\")");    break;  
                case DA_CONTAINER:        GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_CONTAINER");    pbc = data.GetContainer();    container_dump(pbc, tab+1);    break;  
                case DA_ALIASLINK:        GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_ALIASLINK");                                            break;  
                case DA_MARKER:            GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_MARKER");                                                break;  
                case DA_MISSINGPLUG:    GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_MISSINGPLUG");                                            break;  
                case DA_CUSTOMDATATYPE:    GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - DA_CUSTOMDATATYPE");                                        break;  
                default:                GePrint(tabStr+LongToString(i)+") id: "+LongToString(id)+" - unknown");                                                    break;  
            }  
        }  
      }  
      

      ...this may be helpful if you're trying to debug some container.

      Cheers.

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