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

    Cannot create polygon & primitive object

    Scheduled Pinned Locked Moved Bugs
    5 Posts 0 Posters 1.3k 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/2003 at 07:51, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   8.100 
      Platform:   Windows  ;   
      Language(s) :   C.O.F.F.E.E  ;

      ---------
      Hello,
      I want to develop a coffee plugin to read in polygon data and
      primitive data generated elsewhere. I succeeded in creating
      a polygon object with a phong tag, but I can neither
      set a point array nor a polygon array for the polygon object.
      Look at the code below which I placed in a file named
      GenerateMyModel.cof in the Plugins folder of CINEMA_4D_R8.
      The commands
      var rc = polygonObj->SetPoints(ptarr);
      var rc = polygonObj->SetPolygons(pgarr);   
      both return false, what's wrong here ?
      The command
      var rc=polygonObj->SetPoint(0, pt);
      also returns false !
      I cannot generate a primitve object neither, look at
      the command
      var cube = new(PrimitiveObject);
      println("var cube = ", cube);
      Variable cube is nil, what's the problem here ?
      Thanks for any help !
      Chris Bucher

      CODE
      // -------------------------------------------------------------------------
      // Base of this program is the example MPControl.cof from MenuPlugin
      // in 1.4 - Plugin Types description / Ch. Bucher 31.7.03
      // -------------------------------------------------------------------------
      // This plugin ceates model data whenever executed

      class GenerateMyModel : MenuPlugin
      {
       public:
        GenerateMyModel();
        GetID();
        GetName();
        GetState();
        
        GetHelp();
        Execute(doc);
      }
      GenerateMyModel::GenerateMyModel()
      {
       super();
      }
      GenerateMyModel::GetID()
      {
       return 1001150;
      }
      GenerateMyModel::GetState()
      {
       var doc = GetActiveDocument(); if (!doc) return 0;
       return CMD_ENABLED|CMD_CHECKED;
      }
      GenerateMyModel::GetName()
      {
       return "GenerateMyModel";
      }
      GenerateMyModel::GetHelp()
      {
       return "Generates C4D-Model from Computed Geometry";
      }

      GenerateMyModel::Execute(doc)
      {
       println("GenerateMyModel executed ...");
       // var str = new(string, 5);
       // str="aBcDeFgHi";
       // println("var str = ", str);
       var polygonObj = new(PolygonObject);
       println("var polygonObj = ", polygonObj);
       var ptarr = polygonObj->GetPoints();
       println("ptarr of polygonObj->GetPoints=", ptarr);
       // define point array as array of vectors
       var pt = vector(0);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       var ptarr = new(array,6);
       pt.x=0; pt.y=0; ptarr[0] =  pt;
       var rc=polygonObj->SetPoint(0, pt);
       println("rc of polygonObj->SetPoint(0, pt)=", rc);
       println("GetPoint(0)=", polygonObj->GetPoint(0));
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       pt.x=0; pt.y=100; ptarr[1] =  pt; polygonObj->SetPoint(1, pt);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       pt.x=100; pt.y=0; ptarr[2] =  pt; polygonObj->SetPoint(2, pt);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       pt.x=100; pt.y=100; ptarr[3] =  pt; polygonObj->SetPoint(3, pt);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       pt.x=200; pt.y=0; ptarr[4] =  pt; polygonObj->SetPoint(4, pt);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       pt.x=200; pt.y=100; ptarr[5] =  pt; polygonObj->SetPoint(5, pt);
       println("pt.x=", pt.x, "  pt.y=", pt.y, "  pt.z=", pt.z);
       var i;
       for (i=0; i<6; i++)
        println("ptarr[i].x=", ptarr[i].x, "  ptarr[i].y=", ptarr[i].y, "  ptarr[i].z=", ptarr[i].z);

      var rc = polygonObj->SetPoints(ptarr);
       println("rc of polygonObj->SetPoints=", rc);
       // check if array set
       var cnt = polygonObj->GetPointCount();
       println("cnt=", cnt);
       var aa = polygonObj->GetPoints();
       var i;
       for (i=0; i<cnt; i++)
        println("aa[i].x=", aa[i].x, "  aa[i].y=", aa[i].y, "  aa[i].z=", aa[i].z);

      // var ptObj = new("PointObject");
       // var ptObjClass = PointObject;
       // var ptObj = new(ptObjClass);
       // println("var ptObj = ", ptObj);
       // ptObj->SetPoints(ptarr);
       // fill array with points of polygons
       var pgarr = new(array,8);
       // fill points of polygon 0
       var i=0;
       pgarr[i * 4 + 0] =  0;
       pgarr[i * 4 + 1] =  1;
       pgarr[i * 4 + 2] =  3;
       pgarr[i * 4 + 3] =  2;
          
       // fill points of polygon 1
       var i=1;
       pgarr[i * 4 + 0] =  2;
       pgarr[i * 4 + 1] =  3;
       pgarr[i * 4 + 2] =  5;
       pgarr[i * 4 + 3] =  4;
       var rc=polygonObj->SetPolygons(pgarr);   
       println("rc of polygonObj->SetPolygons=", rc);
       
       // create phong tag and attach to polygonObj
       var phongTag = new(PhongTag);
        println("var phongTag = ", phongTag);
       var bc = phongTag->GetContainer();
        println("phongTagContainer = ", bc);
       bc->SetData(PHONGTAG_PHONG, 1.396262222);
       var rc=phongTag->SetContainer(bc);
       println("rc of phongTag->SetContainer=", rc);
       
       var rc=polygonObj->InsertTag(phongTag, NULL);   
       println("rc of polygonObj->InsertTag=", rc);
       
       // --------------------------------------------------
       // pointObj - here error: member not found
       // (may be correct, since it may be an abstract class)
       // var pointObj = new(PointObject);
        // println("var pointObj = ", pointObj);
       var metaball = new(MetaballObject);
        println("var metaball = ", metaball);
       var cube = new(PrimitiveObject);
        println("var cube = ", cube);
       // Creates a cube that's 200x100x300
       // cube->SetPrimitiveType(PRIMITIVE_CUBE);
       // var bc = cube->GetContainer();
       // bc->SetData(PRIM_CUBE_LEN, vector(200, 100, 300));
       // cube->SetContainer(bc);
       var doc = GetActiveDocument(); if (!doc) {
        println("There is no active document"); return 0;
       }
       doc->InsertObject(polygonObj, NULL, NULL);
       doc->InsertObject(metaball , NULL, NULL);
       doc->MultiMessage(MSG_UPDATE); // has no effect
      }

      main()
      {
       Register(GenerateMyModel);
      }
      // ----------------------------------------------------
      /CODE

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

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

        On 02/08/2003 at 06:52, xxxxxxxx wrote:

        Hi,
        1. in your polygonobject, are there any points or polygons? Otherwise setpoints for example logically won´t work.
        2. Primitive objects in R8 are created otherwise. Please search the SDK Questions forum.
        Best
        Samir

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

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

          On 03/08/2003 at 14:33, xxxxxxxx wrote:

          Hi,
          1. As I understand it, one has to associate a point array and a a polygon array to the polygon object and this can be done with polygonObj->SetPoints(ptarr) and polygonObj->SetPoints(ptarr), respectively. But both calls do not work.
          2. Thanks for these hints ! I also read in the forum and noticed myself (!) that the coffee documentation (and probably coffee ?) isn't yet updated to R8 ....

          Thanks
          Chris

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

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

            On 03/08/2003 at 15:12, xxxxxxxx wrote:

            1. As I understand it, one has to associate a point array and a a polygon array to the polygon object and this can be done with polygonObj->SetPoints(ptarr) and polygonObj->SetPoints(ptarr), respectively. But both calls do not work.
            Hi, no, you misunderstood that then. You will need to resize the polygonobject first and append points and polygons to the polygonobject. Otherwise the polygonobject is "empty" when created. point and polygonarrays are only pointers to positions (yes polygonarrays do contain polygons but those do only store point positions), so you will need to create either of them before you can set their positions.
            This is done for example via the VariableChanged class. Please have a look also here into the SDK 🙂 Maybe you should also search the old plugincafe forum, where you will surely find much more information on this (and also on other topics). Here is the link to the old forum: www.plugincafe.com/forum_main.asp[URL-REMOVED]
            2. Thanks for these hints ! I also read in the forum and noticed myself (!) that the coffee documentation (and probably coffee ?) isn't yet updated to R8 ....

            Yes, that´s true. The documentation is not yet updated and coffee was only slightly adapted to work with R8 (i.e. the primitive objects).
            Hope that helped
            Best
            Samir


            [URL-REMOVED] @maxon: This section contained a non-resolving link which has been removed.

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

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

              On 04/08/2003 at 13:44, xxxxxxxx wrote:

              Hi Samir
              Many thanks to your valuable hints, fast responses and assistance !
              Chris

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