For a project involving 3D printing of some labels with varying text, I want to use a small script. I checked all commands interactively and piled them up. However the script fails while the interactive session doing this with mouse and keyboard succeeds (repeatedly).
I tried to minimize the problem, removed everything not strictly needed, to pinpoint the place where I stumbled, but I cannot put my finger on the right spot. It fails when converting the text object into a regular mesh, complaining on the context not being right.
What am I doing wrong?
The script contains:
### (re-)start Blender, I used version 2.77a
### - open the scripting window in the top menu bar
### - load this file into the text window
### - run it with the "Run Script" button
import bpy
status = bpy.ops.object.text_add(radius = 1.0)
print("status after object creation is: ", status)
myobject = bpy.context.active_object
print("myobject is: ", myobject)
myobject.data.body = "Hello World !"
status = bpy.ops.object.select_all(action='DESELECT')
print("status after deselect all is: ", status)
status = bpy.context.scene.update() # forces update
print("status after update is: ", status)
bpy.context.scene.objects.active = myobject
status = bpy.context.object.type
print(" bpy.context.object.type is: ", status)
status = bpy.ops.object.convert(target='MESH') # fatal error
print("status after converting to a mesh is: ", status) # never reached
The console shows:
Read new prefs: /Users/wim/Library/Application Support/Blender/2.77/config/userpref.blend
found bundled python: /Applications/Utilities-3rd-party/blender.app/Contents/MacOS/../Resources/2.77/python
measureit: added to phytonpath
measureit: Imported multifiles
status after object creation is: {'FINISHED'}
myobject is: <bpy_struct, Object("Text")>
status after deselect all is: {'FINISHED'}
status after update is: None
bpy.context.object.type is: FONT
Traceback (most recent call last):
File "/test-convert-mesh.py", line 18, in <module>
File "/Applications/Utilities-3rd-party/blender.app/Contents/MacOS/../Resources/2.77/scripts/modules/bpy/ops.py", line 189, in __call__
ret = op_call(self.idname_py(), None, kw)
RuntimeError: Operator bpy.ops.object.convert.poll() failed, context is incorrect
Error: Python script fail, look in the console for now...