1 Mar 2021 useracc09 Open General useracc09 General Published 1 Mar 2021 Amazing bug in 2.93 and 2.83 versions (Simple script nonsense) Simple script is doing some kind of nonsense youtube.com/watch 0% Development Status: Open Upvote 0 Downvote 3 u useracc09 1 Mar 2021 3 Comments t testure 1 Mar 2021 RCS is not a bug report board, if it's a legitimate bug follow these instructions: wiki.blender.org/wiki/Process/Bug_Reports I suspect that it is probably not a bug, but more of a misunderstanding of the python API, in which case the Python Support board on blenderarstists.org would be more appropriate: blenderartists.org/c/coding/python-support/19 In either case, RCS is not the place for it. 1 u useracc09 Author 1 Mar 2021 This Script works fine. 2.83 import bpy ind = 0 print('point',ind) bpy.ops.object.editmode_toggle() obj = bpy.context.active_object curve = obj.data.splines[0] #scene = bpy.context.scene bpy.ops.object.mode_set(mode = 'EDIT') bpy.ops.curve.select_all(action='DESELECT') curve.bezier_points[ind].select_control_point = True curve.bezier_points[ind].co[0]=-1 curve.bezier_points[ind].co[1]=0 curve.bezier_points[ind].co[2]=0.5 curve.bezier_points[ind].select_control_point = False curve.bezier_points[ind+1].select_right_handle = True curve.bezier_points[ind].handle_right[0]=-2 curve.bezier_points[ind].handle_right[1]=0 curve.bezier_points[ind].handle_right[2]=0.5 curve.bezier_points[ind+1].select_right_handle = False curve.bezier_points[ind+1].select_control_point = True #Second point curve.bezier_points[ind+1].co[0]=1 curve.bezier_points[ind+1].co[1]=0 curve.bezier_points[ind+1].co[2]=0.5 curve.bezier_points[ind+1].select_control_point = False curve.bezier_points[ind+1].select_left_handle = True curve.bezier_points[ind+1].handle_left[0]=2 curve.bezier_points[ind+1].handle_left[1]=0 curve.bezier_points[ind+1].handle_left[2]=0.5 curve.bezier_points[ind+1].select_left_handle = False bpy.ops.object.mode_set(mode = 'OBJECT') u useracc09 Author 1 Mar 2021 Looks like when all vertices selected in EDIT MODE, script works fine. UPD : no ( import bpy ind = 0 print('point',ind) bpy.ops.object.editmode_toggle() bpy.ops.curve.select_all(action='DESELECT') bpy.ops.curve.select_all(action='SELECT') bpy.context.object.data.splines[0].bezier_points[ind].co[0]=-1 bpy.context.object.data.splines[0].bezier_points[ind].co[1]=0 bpy.context.object.data.splines[0].bezier_points[ind].co[2]=0.5 bpy.context.object.data.splines[0].bezier_points[ind+1].co[0]=1 bpy.context.object.data.splines[0].bezier_points[ind+1].co[1]=0 bpy.context.object.data.splines[0].bezier_points[ind+1].co[2]=0.5 bpy.context.object.data.splines[0].bezier_points[ind].handle_right[0]=-2 bpy.context.object.data.splines[0].bezier_points[ind].handle_right[1]=0 bpy.context.object.data.splines[0].bezier_points[ind].handle_right[2]=0.5 print(bpy.context.object.data.splines[0].bezier_points[ind].handle_right) bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[0]=2 bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[1]=0 bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[2]=0.5 print(bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left) bpy.ops.curve.select_all(action='DESELECT') bpy.ops.object.editmode_toggle()
3 Comments
RCS is not a bug report board, if it's a legitimate bug follow these instructions: wiki.blender.org/wiki/Process/Bug_Reports
I suspect that it is probably not a bug, but more of a misunderstanding of the python API, in which case the Python Support board on blenderarstists.org would be more appropriate: blenderartists.org/c/coding/python-support/19
In either case, RCS is not the place for it.
This Script works fine. 2.83
import bpy
ind = 0 print('point',ind)
bpy.ops.object.editmode_toggle()
obj = bpy.context.active_object curve = obj.data.splines[0] #scene = bpy.context.scene
bpy.ops.object.mode_set(mode = 'EDIT') bpy.ops.curve.select_all(action='DESELECT')
curve.bezier_points[ind].select_control_point = True curve.bezier_points[ind].co[0]=-1 curve.bezier_points[ind].co[1]=0 curve.bezier_points[ind].co[2]=0.5 curve.bezier_points[ind].select_control_point = False
curve.bezier_points[ind+1].select_right_handle = True curve.bezier_points[ind].handle_right[0]=-2 curve.bezier_points[ind].handle_right[1]=0 curve.bezier_points[ind].handle_right[2]=0.5 curve.bezier_points[ind+1].select_right_handle = False
curve.bezier_points[ind+1].select_control_point = True #Second point curve.bezier_points[ind+1].co[0]=1 curve.bezier_points[ind+1].co[1]=0 curve.bezier_points[ind+1].co[2]=0.5 curve.bezier_points[ind+1].select_control_point = False
curve.bezier_points[ind+1].select_left_handle = True
curve.bezier_points[ind+1].handle_left[0]=2 curve.bezier_points[ind+1].handle_left[1]=0 curve.bezier_points[ind+1].handle_left[2]=0.5
curve.bezier_points[ind+1].select_left_handle = False
bpy.ops.object.mode_set(mode = 'OBJECT')
Looks like when all vertices selected in EDIT MODE, script works fine. UPD : no (
import bpy
ind = 0 print('point',ind)
bpy.ops.object.editmode_toggle()
bpy.ops.curve.select_all(action='DESELECT')
bpy.ops.curve.select_all(action='SELECT')
bpy.context.object.data.splines[0].bezier_points[ind].co[0]=-1 bpy.context.object.data.splines[0].bezier_points[ind].co[1]=0 bpy.context.object.data.splines[0].bezier_points[ind].co[2]=0.5
bpy.context.object.data.splines[0].bezier_points[ind+1].co[0]=1 bpy.context.object.data.splines[0].bezier_points[ind+1].co[1]=0 bpy.context.object.data.splines[0].bezier_points[ind+1].co[2]=0.5
bpy.context.object.data.splines[0].bezier_points[ind].handle_right[0]=-2 bpy.context.object.data.splines[0].bezier_points[ind].handle_right[1]=0 bpy.context.object.data.splines[0].bezier_points[ind].handle_right[2]=0.5
print(bpy.context.object.data.splines[0].bezier_points[ind].handle_right)
bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[0]=2 bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[1]=0 bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left[2]=0.5
print(bpy.context.object.data.splines[0].bezier_points[ind+1].handle_left)
bpy.ops.curve.select_all(action='DESELECT')
bpy.ops.object.editmode_toggle()