10
$\begingroup$

I want to export my selected meshes in .obj in a relative path from the .blend file in python.

$\endgroup$
3

3 Answers 3

13
$\begingroup$

export obj to relative file path script:

import bpy
import os

blend_file_path = bpy.data.filepath
directory = os.path.dirname(blend_file_path)
target_file = os.path.join(directory, 'myfile.obj')

bpy.ops.export_scene.obj(filepath=target_file)

further export obj options:

bpy.ops.export_scene.obj(
 filepath="",
 check_existing=True,
 axis_forward='-Z',
 axis_up='Y',
 filter_glob="*.obj;*.mtl",
 use_selection=False,
 use_animation=False,
 use_mesh_modifiers=True,
 use_edges=True,
 use_smooth_groups=False,
 use_smooth_groups_bitflags=False,
 use_normals=True,
 use_uvs=True,
 use_materials=True,
 use_triangles=False,
 use_nurbs=False,
 use_vertex_groups=False,
 use_blen_objects=True,
 group_by_object=False,
 group_by_material=False,
 keep_vertex_order=False,
 global_scale=1,
 path_mode='AUTO'
)
$\endgroup$
5
  • $\begingroup$ Hi, thank you it works. And how can i export it in a relative subfolder and an absolute path? $\endgroup$ Jul 20, 2017 at 22:22
  • 1
    $\begingroup$ he script i gave you exports to the folder of the .blend file if you want to ad a subfolder you can just add it in this line: target_file = os.path.join(directory, 'subfolder', 'myfile.obj') An absolute path you can provide as a string bpy.ops.export_scene.obj(filepath="C:/path/to/file.obj") $\endgroup$ Jul 21, 2017 at 8:23
  • $\begingroup$ I don't undertand which line i should replace. I want the user to type the absolute or relative path in the same place, then after the path it adds 'lod0_' then it takes the mesh's + name name = 'game_asset' and add + '.obj'. $\endgroup$ Jul 22, 2017 at 12:02
  • $\begingroup$ export to directory subfolder dont work $\endgroup$
    – Fox
    Apr 6, 2019 at 10:42
  • $\begingroup$ This no longer works for Blender 4.0 $\endgroup$ Jan 15 at 2:32
3
$\begingroup$

In Blender 4.0 and up, the operator bpy.ops.export_scene.obj no longer exists. Use bpy.ops.wm.obj_export

bpy.ops.wm.obj_export(
    filepath="filename.obj",
    check_existing=True,
    filter_blender=False,
    filter_backup=False,
    filter_image=False,
    filter_movie=False,
    filter_python=False,
    filter_font=False,
    filter_sound=False,
    filter_text=False,
    filter_archive=False,
    filter_btx=False,
    filter_collada=False,
    filter_alembic=False,
    filter_usd=False,
    filter_obj=False,
    filter_volume=False,
    filter_folder=True,
    filter_blenlib=False,
    filemode=8,
    display_type='DEFAULT',
    sort_method='DEFAULT',
    export_animation=False,
    start_frame=-2147483648,
    end_frame=2147483647,
    forward_axis='NEGATIVE_Z',
    up_axis='Y',
    global_scale=1.0,
    apply_modifiers=True,
    export_eval_mode='DAG_EVAL_VIEWPORT',
    export_selected_objects=False,
    export_uv=True,
    export_normals=True,
    export_colors=False,
    export_materials=True,
    export_pbr_extensions=False,
    path_mode='AUTO',
    export_triangulated_mesh=False,
    export_curves_as_nurbs=False,
    export_object_groups=False,
    export_material_groups=False,
    export_vertex_groups=False,
    export_smooth_groups=False,
    smooth_group_bitflags=False,
    filter_glob='*.obj;*.mtl'
)
$\endgroup$
-5
$\begingroup$

See if that helps you :

How to write a simple Wavefront-OBJ exporter in Python?

Or you can simply use the export button in blender :

enter image description here

And make sure "Selectio Only" is checked enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .