a pretty painless procedure, but maybe a little obfuscated.
- copy the coordinates of your current 3d cursor
- set the 3d cursor to your desired world coordinates
- set the object origin to the 3d cursor
- set the 3d cursor back to it's initial position
- update (if needed )
that in python looks like
import bpy # store the location of current 3d cursor saved_location = bpy.context.scene.cursor_location.copy() # returns a copy of the vector # give 3dcursor new coordinates bpy.context.scene.cursor_location = (1.0,0.0,0.0) # set the origin on the current object to the 3dcursor location bpy.ops.object.origin_set(type='ORIGIN_CURSOR') # set 3dcursor location back to the stored location bpy.context.scene.cursor_location = saved_location