Is this possible with python



  • On 14/05/2014 at 21:45, xxxxxxxx wrote:

    Can you create a polygon object from a file(Text file)
     
    if I have the polygon structure of a object and put it in a Text File, can I recreate it with python from that Text File.
     
    Is this even possible ????



  • On 15/05/2014 at 01:54, xxxxxxxx wrote:

    Of course, read the file with all the information and create the object based on that input.

    E.g. a cube shaped object could be like:

        
        
            recube = c4d.BaseObject(c4d.Opolygon)  
          recube.ResizeObject(8,6)		#8 vertexes (points) and 6 polygones  
            
          recube.SetPoint(0,vertex1)  
          recube.SetPoint(1,vertex2)  
          recube.SetPoint(2,vertex3)  
          recube.SetPoint(3,vertex4)  
          recube.SetPoint(4,vertex5)  
          recube.SetPoint(5,vertex6)  
          recube.SetPoint(6,vertex7)  
          recube.SetPoint(7,vertex8)  
          
        
        
            recube.SetPolygon(0,c4d.CPolygon(0,1,2,3))  
          recube.SetPolygon(1,c4d.CPolygon(4,5,1,0))  
          recube.SetPolygon(2,c4d.CPolygon(7,6,5,4))  
          recube.SetPolygon(3,c4d.CPolygon(3,2,6,7))  
          recube.SetPolygon(4,c4d.CPolygon(1,5,6,2))  
          recube.SetPolygon(5,c4d.CPolygon(0,4,7,3))  
          recube.Message (c4d.MSG_UPDATE)  
            
        
    


  • On 15/05/2014 at 05:11, xxxxxxxx wrote:

    recube.SetPoint(0,vertex1)  
      recube.SetPoint(1,vertex2)  
      recube.SetPoint(2,vertex3)  
      recube.SetPoint(3,vertex4)  
      recube.SetPoint(4,vertex5)  
      recube.SetPoint(5,vertex6)  
      recube.SetPoint(6,vertex7)  
      recube.SetPoint(7,vertex8)  
      
    
    
        recube.SetPolygon(0,c4d.CPolygon(0,1,2,3))  
      recube.SetPolygon(1,c4d.CPolygon(4,5,1,0))  
      recube.SetPolygon(2,c4d.CPolygon(7,6,5,4))  
      recube.SetPolygon(3,c4d.CPolygon(3,2,6,7))  
      recube.SetPolygon(4,c4d.CPolygon(1,5,6,2))  
      recube.SetPolygon(5,c4d.CPolygon(0,4,7,3))
    
    
    This code above I want python to read it for me from a file and then create a object from it.
    


  • On 15/05/2014 at 07:58, xxxxxxxx wrote:

    I think I can explain better: _<_img src="http://www.c4dcafe.com/ipb/public/style_emoticons/default/oops.gif" border="0" alt=":oops:" title=":oops:" /_>_

    I want to do these steps in python:

    1] Create a empty polygon
    2] Import the points from a ASCII File
    3] Import the polygons from a ASCII File

    Basically build the object from these steps in python

    I see you can almost achieve this with call commands

    import c4d
    #Welcome to the world of Python

    def main() :

    c4d.CallCommand(13039)            # Empty Polygon Object
        c4d.CallCommand(12530)            # Points mode in Structure
        c4d.CallCommand(13018)            # Import ASCII Data (Points)
        c4d.CallCommand(12532)            # Polygons mode in Structure
        c4d.CallCommand(13018)            # Import ASCII Data (Polygons)

    if __name__=='__main__':
        main()



  • On 16/05/2014 at 01:25, xxxxxxxx wrote:

    Sorry, is this working for you or do you still have some questions?



  • On 16/05/2014 at 01:38, xxxxxxxx wrote:

    I still need help 😢

    refer to my second post



  • On 16/05/2014 at 04:08, xxxxxxxx wrote:

    Ok, here a small example how to read ascii data.

    #the world of Python in CINEMA 4D
    import c4d
    from c4d import storage, gui
      
    #
    # read ascii file and create object
    #
      
    def ReadAscii() :
      
        pointFile = "D:\Users\pgrooff\Documents\pim\c4d R15\import -export ascii\simple cube.txt"
        try:
            fpoints = open(pointFile)
        except IOError, e:
            gui.MessageDialog(e)
            return
      
        polysFile = "D:\Users\pgrooff\Documents\pim\c4d R15\import -export ascii\simple cube polys.txt"
        try:
            fpolys = open(polysFile)
        except IOError, e:
            gui.MessageDialog(e)
            return
            
        #split the file into line list
        lines = fpoints.readlines()
        #how many lines? so points
        nrPoints = len(lines)
      
        #split the file into line list
        linesPolys = fpolys.readlines()
        #how many lines? so polys
        nrPolys = len(linesPolys)
        
        #-1 for first line
        print "Nr points-polys: ", nrPoints-1, nrPolys-1
           
        #create polygon object with point count of lines and count of polygons
        recube = c4d.BaseObject(c4d.Opolygon)
        recube.ResizeObject(nrPoints-1, nrPolys-1)
      
        #Points
        for i, line in enumerate(lines) :
            #split line into components
            coord = line.split(",")
            #ignore corrupt csv line
            if len(coord)<4: continue
            
            try:
                nr = int(coord[0])
                x = float(coord[1])
                y = float(coord[2])
                z = float(coord[3])
            except ValueError, e:
                continue
            
            recube.SetPoint(i-1,c4d.Vector(x,y,z))
            print "Point inserted: ", i-1,x,y,z
      
        #Polys
        for i, line in enumerate(linesPolys) :
            #split line into components
            coord = line.split(",")
            #ignore corrupt csv line
            if len(coord)<5: continue
            
            try:
                nr = int(coord[0])
                p1 = int(coord[1])
                p2 = int(coord[2])
                p3 = int(coord[3])
                p4 = int(coord[4])
            except ValueError, e:
                continue
            
            recube.SetPolygon(nr,c4d.CPolygon(p1,p2,p3,p4))
            print "Poly inserted: ", nr,x,y,z
     
        doc.InsertObject(recube)
        recube.Message (c4d.MSG_UPDATE)
        c4d.EventAdd()        
      
    if __name__=='__main__':
        ReadAscii()
    

    I used the following input files. One for points and one for the polys.
    I got these files by exporting a cube data to these files.
    Later I edited the files, to add some ",".
    But you can choose the format you want.

    Point file:

    Point	X	Y	Z
    0,	-100,	-100 ,	-100 
    1,	-100 ,	100 ,	-100 
    2,	100, 	-100 ,	-100 
    3,	100 ,	100 ,	-100 
    4,	100 ,	-100 ,	100 
    5,	100 ,	100, 	100 
    6,	-100, 	-100, 	100 
    7,	-100 ,	100 ,	100 
    

    Polygon file:

    Polygon	A	B	C	D
    0,	0,	1,	3,	2
    1,	2,	3,	5,	4
    2,	4,	5,	7,	6
    3,	6,	7,	1,	0
    4,	1,	7,	5,	3
    5,	6,	0,	2,	4
    


  • On 16/05/2014 at 04:42, xxxxxxxx wrote:

    Thanks pgroof  _<_img src="http://www.c4dcafe.com/ipb/public/style_emoticons/default/thisrocks.gif" border="0" alt=":thisrocks:" title=":thisrocks:" /_>_
    Will look at it tonight in detail



  • On 16/05/2014 at 05:26, xxxxxxxx wrote:

    Thanks pgroof you _<_img src="http://www.c4dcafe.com/ipb/public/style_emoticons/default/thisrocks.gif" border="0" alt=":thisrocks:" title=":thisrocks:" /_>_

    Exactly what I was looking for&n;_<_img src="http://www.c4dcafe.com/ipb/public/style_emoticons/default/signthankspin.gif" border="0" alt=":signthankspin:" title=":signthankspin:" /_>_" />


Log in to reply