# How do I Add Vertices to a NURBS path?

I'd appreciate any help with this simple script that I cannot get to work properly for Blender 2.8+

All I want to do is to take a selected NURBS path as input, and create a new NURBS path that is essentially identical to the input, except all of the vertices have been "rotated" around it, by a specific number of places. This is because I've got an open curve, but I want to control where the opening, the gap between the first and last vertices, is located along the curve.

The script basically works, the vertices are correctly rotated when the curve object is in edit mode. But when switched to object mode, all the vertices disappear.

Here is the script, and a link to the blend file. The example can be run by selecting the braids_curve object and running the script. It creates braids_curve_out, which will be invisible. Switching it to edit mode shows that the vertices correctly coincide.

Blend file

Appreciate any help determining what critical piece I am missing.

import bpy

# how much we want to rotate the vertices by, in vertex offsets
offset = 280

# use the selected NURBS path object as source
sourceObj = bpy.context.active_object
if sourceObj and sourceObj.type == 'CURVE':

# create the new path and rename it, based on the source object
newObj = bpy.context.active_object
newObj.name = sourceObj.name + "_out"

# get the vertex count of the source object
sourcePoints = sourceObj.data.splines[ 0 ].points
sourceLength = len( sourcePoints )

# make the new object's count the same as the source object's count
newObjLength = len( newObj.data.splines[ 0 ].points )
newObj.data.splines[ 0 ].points.add( sourceLength - newObjLength )

# move around the source object
for index in range( sourceLength ):

# calculate the index of the offset vertex
moduloIndex = ( index + offset ) % sourceLength

# set the offset vertex
newObj.data.splines[ 0 ].points[ index ].co = sourcePoints[ moduloIndex ].co

else:
print ( 'no selected curve object' )