Create and display polygon object



  • 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) :p
    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



  • 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.



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

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

    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.



  • 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.



  • 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))
    


  • 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.



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

    ah, you are right, got confused by wall of text :)



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

    Thanks guys!


Log in to reply