You have assigned a string to setBevOb. The documentation says it should be a “Curve type Blender Object”, that is not the name of the object but the object itself.
setBevOb(object)
Assign a Bevel Object (BevOb) to the Curve. Passing None as the object parameter removes the bevel.
Parameters:
object (Curve type Blender Object) - Blender Object to assign as Bevel Object (BevOb)
Your second example assigns a string as well, so this should not work, unless it is an undocumented feature. A string is a sequence of letters. It has no more meaning then that. For it to have meaning, setBevOb would have to get the blender curve object with the matching name. But nowhere in the documentation is it stated that setBevOb can take a string parameter, and get the object with that name. So it appears that the program needs to do this for setBevOb.
I have not used curves yet, but I presume from the documentation it could be done as such:
from Blender import Curve
cu = Curve.New() # for a new curve object
cu = Curve.Get(‘name’) # for an existing curve object
cu is then the curve object to be used in setBevOb
so by putting the object name it work fine CurveOb1
like this one here -
NewCurve.setBevOb(CurveOb1) # set the bevel curve
one problem :
but that still does not explain why in the first case it is able to convert from the name to the object name ( from bev1 to CurveOb1 )
there is a conversion done that i don’t understand how it is done in one case but not in the other case ?
passing the name through a list and it’s ok
but directly it does not do the conversion!
sorry i’m trying to have a better understanding of theses conversion
which in this case seems a little strange!
also i look at the 2.5 API and seems that everything ahs been change for other names
and that all script will hve to be re written
have you seen any doc or tut on this yet ?