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

    Create and display polygon object

    Scheduled Pinned Locked Moved PYTHON Development
    8 Posts 0 Posters 750 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

      On 24/05/2013 at 09:18, xxxxxxxx wrote:

      I want to create a polygon object, but it won't display (or create, I don't know) 😛
      Anything I should change to make it work?

        
      if (doc.SearchObject('R_Leg') == None) :  
            global R_Leg  
            R_Leg = c4d.BaseObject(Opolygon)  
            R_Leg.__init__(12, 10)  
            doc.InsertObject(R_Leg)  
            R_Leg.SetPoint(0, (-18.0, 2.0, -7.0))  
            R_Leg.SetPoint(1, (-18.0, 21.0, -7.0))  
            R_Leg.SetPoint(2, (-18.0, 40.0, -7.0))  
            R_Leg.SetPoint(3, (-4.0, 2.0, -7.0))  
            R_Leg.SetPoint(4, (-4.0, 21.0, -7.0))  
            R_Leg.SetPoint(5, (-4.0, 40.0, -7.0))  
            R_Leg.SetPoint(6, (-4.0, 2.0, 7.0))  
            R_Leg.SetPoint(7, (-4.0, 21.0, 7.0))  
            R_Leg.SetPoint(8, (-4.0, 40.0, 7.0))  
            R_Leg.SetPoint(9, (-18.0, 2.0, 7.0))  
            R_Leg.SetPoint(10, (-18.0, 21.0, 7.0))  
            R_Leg.SetPoint(11, (-18.0, 40.0, 7.0))  
            R_Leg_Polygon_0.__init__(t_a = 0, t_b = 3, t_c = 4, t_d = 1)  
            R_Leg.SetPolygon(0, R_Leg_Polygon_0)  
            R_Leg_Polygon_1.__init__(t_a = 1, t_b = 2, t_c = 5, t_d = 4)  
            R_Leg.SetPolygon(1, R_Leg_Polygon_1)  
            R_Leg_Polygon_2.__init__(t_a = 3, t_b = 4, t_c = 7, t_d = 6)  
            R_Leg.SetPolygon(2, R_Leg_Polygon_2)  
            R_Leg_Polygon_3.__init__(t_a = 4, t_b = 5, t_c = 8, t_d = 7)  
            R_Leg.SetPolygon(3, R_Leg_Polygon_3)  
            R_Leg_Polygon_4.__init__(t_a = 6, t_b = 7, t_c = 10, t_d = 9)  
            R_Leg.SetPolygon(4, R_Leg_Polygon_4)  
            R_Leg_Polygon_5.__init__(t_a = 7, t_b = 8, t_c = 11, t_d = 10)  
            R_Leg.SetPolygon(5, R_Leg_Polygon_5)  
            R_Leg_Polygon_6.__init__(t_a = 9, t_b = 10, t_c = 1, t_d = 0)  
            R_Leg.SetPolygon(6, R_Leg_Polygon_6)  
            R_Leg_Polygon_7.__init__(t_a = 10, t_b = 11, t_c = 2, t_d = 1)  
            R_Leg.SetPolygon(7, R_Leg_Polygon_7)  
            R_Leg_Polygon_8.__init__(t_a = 0, t_b = 3, t_c = 6, t_d = 9)  
            R_Leg.SetPolygon(8, R_Leg_Polygon_8)  
            R_Leg_Polygon_9.__init__(t_a = 2, t_b = 5, t_c = 8, t_d = 11)  
            R_Leg.SetPolygon(9, R_Leg_Polygon_9)  
            R_Leg.Message(c4d.MSG_UPDATE)  
            R_Leg.SetName('R_Leg')  
            c4d.EventAdd()  
      

      Greetz

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

        On 24/05/2013 at 09:24, xxxxxxxx wrote:

        Maybe I can help you if you describe your problem. It's not that I can't see it from your code, but
        please show at least some effort. Do you really expect that everyone that is willing to help you, is
        at the same time willing to analyze your code and guess  your problem? There are about dozens
        of possibilites why your code fails or does not work the way you want it. I can see some of them
        directly from your code, others rely on the context that you are not explaining. And I'm not going to
        list up all those possibilities just because you were to lazy to explain your problem, nor show the
        error message or describe the desired/undesired result.

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

          On 24/05/2013 at 09:34, xxxxxxxx wrote:

          Ok, your right. I'll try to remember to allways explain it properly 😛

          But in fact, I don't know how to further describe it.

          It's just a creation of a polygon-object (with the creation of some CPolygons) that won't display in Cinema 4D.

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

            On 24/05/2013 at 09:47, xxxxxxxx wrote:

            Are you getting an error message? It looks like you should, since I don't see where you have
            set any value to R_Leg_Polygon_0. From what I see in your code, that, and other variables, should
            not exist and therefore result in an exception.

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

              On 24/05/2013 at 09:57, xxxxxxxx wrote:

              you do init your cpoly object multiple times. that is not a good idea. i am not
              sure how cinema 4d does treat the cpoly instanced passed to SetPolygon(),
              but reusing the same instance seems to be a bad idea. also calling important 
              methods explicitly is a bit awkward.

              R_Leg = c4d.BaseObject(Opolygon)
              R_Leg.__init__(12, 10)
                
              better :
                
              myobj = c4d.PolygonObject(12,10)
                
              R_Leg_Polygon_0.__init__(t_a = 0, t_b = 3, t_c = 4, t_d = 1)
              R_Leg.SetPolygon(0, R_Leg_Polygon_0)
                
              better:
                
              R_Leg.SetPolygon(0, c4d.CPolygon(0,3,4,1))
              
              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                On 24/05/2013 at 10:12, xxxxxxxx wrote:

                CPolygon is stored by value in the PolygonObject, so reusing it should not be a problem. But I don't
                see him reusing it anyway. There is R_Leg_Polygon_0 to R_Leg_Polygon_9, littledevil. 🙂

                I agree with you on the bad style using __init__() directly. He should really be doing it the way you
                have shown.

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

                  On 24/05/2013 at 10:15, xxxxxxxx wrote:

                  ah, you are right, got confused by wall of text 🙂

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

                    On 26/05/2013 at 08:46, xxxxxxxx wrote:

                    Thanks guys!

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