Featured post

new redirect for blender.org bpy docs.

http://www.blender.org/api/blender_python_api_current/ As of 10/11 november 2015 we can now link to the current api docs and not be worr...

February 27, 2014

3d Tube from points

Today I have more time! This is a tube without thickness.
import bpy
from mathutils import Vector
# weight
w = 1
# we don't have to use the Vector() notation.
listOfVectors = [(0,0,0),(1,0,0),(2,0,0),(2,3,0),(0,2,1)]
def MakePolyLine(objname, curvename, cList):
curvedata = bpy.data.curves.new(name=curvename, type='CURVE')
curvedata.dimensions = '3D'
objectdata = bpy.data.objects.new(objname, curvedata)
objectdata.location = (0,0,0) #object origin
bpy.context.scene.objects.link(objectdata)
polyline = curvedata.splines.new('NURBS')
polyline.points.add(len(cList)-1)
for num in range(len(cList)):
polyline.points[num].co = (cList[num])+(w,)
polyline.order_u = len(polyline.points)-1
polyline.use_endpoint_u = True
MakePolyLine("NameOfMyCurveObject", "NameOfMyCurve", listOfVectors)
obj = bpy.data.objects['NameOfMyCurveObject']
obj.data.fill_mode = 'FULL'
obj.data.bevel_depth = 0.1
obj.data.bevel_resolution = 15
To get thickness you might add a solidify modifier. Throw these two lines onto the end.
solidify = obj.modifiers.new(type='SOLIDIFY', name="make_solid")
solidify.thickness = -0.02
view raw solidifier.py hosted with ❤ by GitHub