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

    Cast BaseObject to Polygon

    SDK Help
    0
    4
    371
    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 10/02/2004 at 19:10, xxxxxxxx wrote:

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

      ---------
      Hi all
      I have a plane currently, have set its containers, Now i wanna get the point count of this object. So, i have to convert it into polygon object. I have read that the way to do that is by using the MCOMMAND_CURRENTSTATETOOBJECT. So i tried this way. My problem is, after i inserted the plane, I have to make it editable. So i have done this code:
         BaseObject *ObjGrid = BaseObject::Alloc(Oplane);
         BaseContainer *conGrid = ObjGrid->GetDataInstance();
         conGrid->SetReal(PRIM_PLANE_SUBW, XNos);
         conGrid->SetReal(PRIM_PLANE_SUBH, ZNos);
          conGrid->SetReal(PRIM_PLANE_WIDTH, XWidth);

      conGrid->SetReal(PRIM_PLANE_HEIGHT, ZWidth);
         doc->InsertObject(ObjGrid,NULL,NULL,TRUE);
         doc->StartUndo();
         doc->AddUndo(UNDO_NEW, ObjGrid);
         ObjGrid->SetRot(Vector(Rot_H, Rot_P, Rot_B));    
         
         ModelingCommandData cd;
         cd.flags = MODELINGCOMMANDFLAG_CREATEUNDO;
         cd.doc = doc;
         cd.bc = conGrid;
         cd.op = ObjGrid;
         cd.mode = MODIFY_ALL;
         
         if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE,cd)) return NULL;   
         EventAdd(EVENT_FORCEREDRAW);
         
         ObjGrid = doc->SearchObject(vGridName);
      How can I convert it into polygon object. Is that by using this following code:
      Modelingcommanddata cd2;
      cd2.doc=doc;
      cd2.op = ObjGrid;
      if(!Sendmodelingcommand(MCOMMAND_CURRENTSTATETOOBJECT, cd2)) return FALSE;
      I have tried this but it gave memory leak problem. Anyone has any idea how to solve this?
      Thanks for any help
      Regards

      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 11/02/2004 at 17:54, xxxxxxxx wrote:

        Once you've used current state to object and have a pointer to the result, then just check that GetType()==Opoly and cast it using

            
            
            PolygonObject* poly = static_cast<PolygonObject*>(obj).
        
        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 11/02/2004 at 23:02, xxxxxxxx wrote:

          I have converted it into polygon object by using this code:
          for(i=0; i<=XNos; i++) {
            BaseObject *objText = BaseObject::Alloc(Osplinetext);
            ModelingCommandData md;
            md.doc = doc;
            md.op = objText;
            if (!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, md)) return FALSE;
            PolygonObject *poly = static_cast<PolygonObject*>(md.result1);
          But when i wanna get the active point from this object, seems like there is a problem with this following code, so that i could not
             
            Activept = poly->GetPoint();
            Activept[i].z = Activept[i].z - 3 + ZMove;
            poly->SetPos(Activept[i]);
            doc->InsertObject(poly,ObjToPolygon,NULL);
          }
          Can u plz tell me what's the problem of this?
          Thanks and regards

          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/02/2004 at 16:38, xxxxxxxx wrote:

            Do you mean that the code doesn't compile or that there's a runtime error or that nothing happens at all? (The term "problem" is too wide I'm afraid.)

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