0
$\begingroup$

The script below will run fine when executed from within Blender 3 (text panel), but if I try to run it through the command line, it fails on line 25 with bad context (on rotation).

Any hint will be greatly appreciated!

Thx!

import os
import sys
import bpy
import glob

convert_dir = "c:/tmp/2convert"

for file in os.listdir(convert_dir):
    if file.endswith(".svg"):      
        fullpath = convert_dir + "/" + file

for col in bpy.data.collections:
    if ("svg" in col.name):
        for oldobj in col.all_objects:
            bpy.data.objects.remove(oldobj)
        bpy.data.collections.remove(col)
        
fulloutputpath = os.path.splitext(fullpath)[0]+".svf"
bpy.ops.object.delete(use_global=False, confirm=False)
bpy.ops.import_curve.svg (filepath=fullpath)
for obj in bpy.data.collections[os.path.basename(fullpath)].all_objects:
    obj.select_set(True)
    bpy.context.view_layer.objects.active = obj
    bpy.ops.object.convert(target='MESH')
    bpy.ops.transform.rotate(value=1.5708, orient_axis='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(True, False, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
    if ("Bleedline" in obj.name):
        bpy.ops.transform.translate(value=(0, 0.0005, 0), orient_axis_ortho='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, True, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
    obj.select_set(False)

bpy.ops.export_scene.fbx (filepath=fulloutputpath)
os.remove(fullpath)
```
$\endgroup$

1 Answer 1

0
$\begingroup$

figured it out...

instead of doing the transformation with this:

bpy.ops.transform.rotate(value=1.5708, orient_axis='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(True, False, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

I did it at the object level:

eul = mathutils.Euler((math.radians(90), 0.0, 0.0), 'XYZ')
obj.rotation_euler = eul

Which seems to do the job

$\endgroup$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.