1
$\begingroup$

Version: Blender 2.81

Using the Python API, I want to create a default path and then add individual points to it.

The code below does this. Except that it extends both the beginning and the end of the curve.

import bpy

# kill everything

bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False, confirm=False)

# create curve

bpy.ops.curve.primitive_nurbs_path_add(radius=1, enter_editmode=False, location=(0, 0, 0))

# switch to edit mode

bpy.ops.object.editmode_toggle()

# add new point for curve

bpy.ops.curve.extrude_move(CURVE_OT_extrude={"mode":'TRANSLATION'}, 
    TRANSFORM_OT_translate={"value":(0, 2, 0)}
    )

In the viewpoint, I can extend the END of the curve by toggling edit mode, and then doing this: double-clicking the last point, and pressing E.

I can't figure out how to use python to select this last point.

$\endgroup$
1
$\begingroup$

try this (I am on Blender 2.81a):

import bpy

# kill everything
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False, confirm=False)

# create curve
bpy.ops.curve.primitive_nurbs_path_add(radius=1, enter_editmode=False)
obj = bpy.context.object

# De-select all points
for pn in obj.data.splines[0].points:
    pn.select = False

# Select the last point
pn = obj.data.splines[0].points
end_point_idx = (len(obj.data.splines[0].points) - 1)
pn[end_point_idx].select = True

bpy.ops.object.mode_set(mode='EDIT') # Edit mode

bpy.ops.curve.extrude_move(CURVE_OT_extrude={"mode":'TRANSLATION'},
TRANSFORM_OT_translate={"value":(0, 2, 0)})

bpy.ops.object.mode_set(mode='OBJECT') # Object mode

(Make sure you are in object mode when you run it)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.