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

    Basic Objects

    SDK Help
    0
    41
    31.0k
    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 15/05/2008 at 17:00, xxxxxxxx wrote:

      Jepp thats right. It justs casts the type of pointer. Somehow it runs in this example...

      We are two, I also have no idea. I did that commenting out the code... either it crashes on casting the result from sendModelingCommand or when inserting into doc.

      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 15/05/2008 at 17:05, xxxxxxxx wrote:

        You might want to check that mcd.result is not NULL (the AtomArray was allocated) as well as checking the retrieved object similarly.

        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 15/05/2008 at 17:08, xxxxxxxx wrote:

          Thats a good idea to check...

          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 16/05/2008 at 03:36, xxxxxxxx wrote:

            I recently tried the following code, with three methods of object generation. Everyone crashes at the static_cast, no matter to what type the result is casted...

            > BaseObject \*CLODDY4D::GetVirtualObjects(BaseObject \*op, HierarchyHelp \*hh){ \> \>      BaseContainer bc; \>      ModelingCommandData mcd; \>      bc.SetReal(PRIM_SPHERE_RAD,100.0); \>      bc.SetLong(PRIM_SPHERE_SUB,4); \> \>      //BaseObject \*sphere = GeneratePrimitive(NULL,Osphere,bc,1.0,FALSE,hh->GetThread()); \>      //BaseObject \*sphere = BaseObject::Alloc(Osphere); \>      AutoAlloc<BaseObject>sphere(Osphere); \>      if(!sphere) return NULL; \>       \>      mcd.doc = GetActiveDocument(); \>      mcd.bc = &bc; \>      mcd.flags = 0L; \>      mcd.op = sphere; \>      if(!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, mcd)) return NULL; \>      PolygonObject\* poly = static_cast<PolygonObject\*>(mcd.result->GetIndex(0L)); \>      //if(mcd.result->GetIndex(0L)->GetType()!=Opolygon) return NULL; \>      if(!poly) return NULL; \>      return poly; \> }

            Perhaps I am really running into a dead end, with my vision of the need of a polygonal object (I am much more a c4d user 😉 ) to access its points and polygons.
            At the end, all I need is access to the point array of my octa to perfom cutting operations on the edges by mid-point and merging vertex points.

            Cheers
            Sascha

            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 20/05/2008 at 03:45, xxxxxxxx wrote:

              Hello again,

              I just can't get rid of this converting. I cannot get it run properly when using code like this:

              > \> static PolygonObject \*PolyObject(BaseObject \*sphere) \> { \>      PolygonObject \*polyOb = NULL; \>      ModelingCommandData mcd; \>      mcd.doc = GetActiveDocument(); \>      mcd.bc = sphere->GetDataInstance(); \>      mcd.op = sphere; \>      if(!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT,mcd)) return NULL; \>      polyOb = static_cast<PolygonObject\*>(mcd.result->GetIndex(0)); \>      if(polyOb->GetType()!=Opolygon) return NULL; \>       \>      return polyOb; \> } \> \> PolygonObject \*CLODDY4D::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh) \> { \>      BaseObject \*sphere = BaseObject::Alloc(Osphere); \>      if(!sphere) return NULL; \> \>      BaseContainer \*bc = sphere->GetDataInstance(); \>      bc->SetReal(PRIM_SPHERE_RAD,100); \>      bc->SetLong(PRIM_SPHERE_SUB,4); \>       \>      return PolyObject(sphere); \> } \>

              The debugger stops at polyOb = static_cast<..>;
              If modelingcommand fails, it should return NULL, so there should be some result, but this cast does not work as it should! (According to documentation). I am running out of clues and time...

              *sigh*
              Sascha

              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 20/05/2008 at 05:22, xxxxxxxx wrote:

                You can not use GetActiveDocument() in this case. Here some working code.

                > \> static PolygonObject \*PolyObject(BaseDocument \*doc, BaseObject \*sphere) \> { \>      PolygonObject \*polyOb = NULL; \>      ModelingCommandData mcd; \>       mcd.doc = doc; \>      mcd.op = sphere; \>      if(!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, mcd)) return NULL; \>      polyOb = static_cast<PolygonObject\*>(mcd.result->GetIndex(0)); \>      if(polyOb->GetType()!=Opolygon) return NULL; \>       \>      return polyOb; \> } \> \> // main routine: build virtual atom objects \> BaseObject \*AtomObject::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh) \> { \>      BaseObject \*sphere = NULL; \>      sphere = BaseObject::Alloc(Osphere); \>      if(!sphere) goto Error; \> \>      BaseContainer \*bc = sphere->GetDataInstance(); \>      bc->SetReal(PRIM_SPHERE_RAD,100); \>      bc->SetLong(PRIM_SPHERE_SUB,4); \> \>      PolygonObject \*polysphere = NULL; \>      polysphere = PolyObject(op->GetDocument(), sphere); \> \>      if(sphere) \>      { \>           BaseObject::Free(sphere); \>           sphere = NULL; \>      } \> \>      return polysphere; \> \> Error: \>      blDelete(sphere); \>      return NULL; \> } \>

                cheers,
                Matthias

                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 20/05/2008 at 07:45, xxxxxxxx wrote:

                  Hello Matthias,

                  thanks for this clearing.
                  I had no idea, that GetDocument(); retrieves the current opened document. Thought it was GetActiveDocument();... Think thats for more than one open doc's ?!

                  Right now the function call "polysphere=polyObject(op->GetDocument(),sphere)" causes this exception:

                  > \> Unhandled exception at 0x00bbc1ea in CINEMA 4D Demo.exe: 0xC0000005: Access violation reading location 0x00000000

                  I have no experience with this type of exception, what went wrong ?!

                  P.s.: I am developing under demo of r10.5, cause it starts up much faster than my full installation with lots of Plug-Ins installed...

                  Edit:
                  It seems the document is not retrived correctly...
                  I set up an ::Init()-Function, i hope that is correct for an ObjectData-Plugin... :

                  > \> Bool CLODDY4D::Init(GeListNode \*node) \> { \>      BaseObject \*op = (BaseObject\* )node; \>      BaseContainer \*data = op->GetDataInstance(); \>      return TRUE; \> } \>

                  So op has to be "anything", where document can be retrieved from.

                  Wave
                  Sascha op

                  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/05/2008 at 03:43, xxxxxxxx wrote:

                    Nobody an idea ? *sigh*

                    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 27/05/2008 at 00:57, xxxxxxxx wrote:

                      Does it work if you change the call to PolyObject() to something like this (use hh instead of op) :

                      polysphere = PolyObject(hh->GetDocument(), sphere);

                      Either way I don't get this exception here.

                      cheers,
                      Matthias

                      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 27/05/2008 at 02:04, xxxxxxxx wrote:

                        Hi

                        Yes, I already changed it to hh->GetDocument(); earlier, getting the same result.

                        If I use BaseDocument *doc = op->GetDocument() or hh->GetDocument(); as very first statement (which is equivalent to the direct call) cinema4D crashes directly there.

                        Hmm, what could cause this exception ? IDE ? IDE-config ? Operating System ? I am running VS C++ 2008 EE on Vista x64. Perhaps this does not work with the express edition ?

                        Cheers
                        Sascha

                        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 27/05/2008 at 03:32, xxxxxxxx wrote:

                          Hey ahm right now, I revisited the documentation. It seems I have missed setting up /vmg /vms.

                          Thanks so far, now everything works and i can start manipulating vertexpoints and polygons 🙂

                          Just for safeness:
                          Shouln't be the sphere set NULL at first before freeing it ? Setting it NULL first before freeing it does not result a crash at
                          c4d_baseObject.cpp, line 841
                          void BaseObject::Free(BaseObject *&bl;)
                          {
                               C4DOS.Bl->Free(bl);
                               bl=NULL;
                          }

                          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 27/05/2008 at 03:53, xxxxxxxx wrote:

                            No, how should Cnema know what to free if the pointer is set to NULL.

                            cheers,
                            Matthias

                            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 27/05/2008 at 04:06, xxxxxxxx wrote:

                              Yes, thats a good point. In that case (setting BaseObject::Free(sphere) first) my plugin breaks, because
                              bl from BaseObject::Free(BaseObject *&bl;) has the value "0" while sphere has 0x04f306dc... This is strange.

                              Cheers
                              Sascha

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