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
    • Recent
    • Tags
    • Users
    • Login

    Is this possible with python

    Scheduled Pinned Locked Moved PYTHON Development
    9 Posts 0 Posters 783 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 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 ????

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

        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)  
                
            
        
        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          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.
          
          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

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

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

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

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

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

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

                I still need help 😢

                refer to my second post

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

                  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
                  
                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    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

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

                      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:" /_>_" />

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