How can I delete all faces from a mesh?

Hi,

I’m trying to write a python script creating various simple objects.
I want some of them to have no faces, i.e. only vertices and edges.

How can I do that?

Blender version: v2.49b

Here’s a part of my current script which already allows creating, placing, rotating and coloring of new objects:


 def TestObjects():
     sc = Blender.Scene.GetCurrent()
 
     cube = Blender.Mesh.Primitives.Cube(1.0)
 
     ####################
     # first object in selection list
     # ob = Blender.Object.GetSelected()[0] 
 
     # get the Mesh version of our cube, not NMesh
     # me = Blender.Mesh.Get( ob.data.name ) 
 
     # create some materials
 
     red = Blender.Material.New('Red')
     red.rgbCol = 1,0,0  # red, green, blue values
 
     green = Blender.Material.New('Green')
     green.rgbCol = 0,1,0  # red, green, blue values
 
     blue = Blender.Material.New('Blue')
     blue.rgbCol = 0,0,1  # red, green, blue values
 
     # add the material list to our ObData
     cube.materials = [red, green, blue ]
 
     # set the face materials of our cube
 
     # we can set all faces the same color like this
     for f in cube.faces:
         f.mat = 0
 
     # or for fun, we can alternate colors like this
     for i in range(len(cube.faces)):
         cube.faces[i].mat = i % 3
     ####################
 
     sc.objects.new(cube,'Mesh')
 
     cylinder = Blender.Mesh.Primitives.Cylinder(32, 2.0, 6.0)
     # print cylinder.faces[0]
     # cylinder.faces.clear()
     
     # cylinder.RotX = math.radians( 90 )
     
     obj = sc.objects.new(cylinder,'Mesh')
     obj.RotX = math.radians( 45 )
     obj.RotY = math.radians( 45 )
     obj.RotZ = math.radians( 45 )
     obj.LocX = 0
     obj.LocY = 0
     obj.LocZ = 5
     # obj.setLocation(1,2,3)
     # obj.setEuler([math.radians( 90 ),0,0])
 
     # uvsphere = Blender.Mesh.Primitives.UVsphere(32, 32, 3.0)
     # sc.objects.new(uvsphere,'Mesh')
 
     # icosphere = Blender.Mesh.Primitives.Icosphere(2, 4.0)
     # sc.objects.new(icosphere,'Mesh')
 
     # grid = Blender.Mesh.Primitives.Grid(32, 32, 5.0)
     # sc.objects.new(grid,'Mesh')
 
     # plane = Blender.Mesh.Primitives.Plane(6.0)
     # sc.objects.new(plane,'Mesh')
   
 TestObjects()
 Blender.Window.RedrawAll()
 Blender.Window.WaitCursor(0)
 

edit: Solved using:

cylinder.faces.delete(0,range(len(cylinder.faces)));

If you know of any better way, let me know. :slight_smile:

I would also like to know what the first argument to delete is! Couldn’t find anything about it in the official API: http://www.blender.org/documentation/249PythonDoc/
Did I miss something?

I also found the interesting “scripts->mesh->solid wireframe” script along the way. But I think just removing the faces will be more lightweight for what I want (no rendering in my case anyway).

The first argument is deledges.

Thanks. :slight_smile: