[Bf-blender-cvs] [d724bf37972] soc-2020-io-performance: Support exporting selected objects only, not the whole scene.

Ankit Meel noreply at git.blender.org
Sun Jun 28 10:47:23 CEST 2020


Commit: d724bf37972a62b85c933a5c90f97d39be2fc972
Author: Ankit Meel
Date:   Sun Jun 28 13:47:04 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rBd724bf37972a62b85c933a5c90f97d39be2fc972

Support exporting selected objects only, not the whole scene.

===================================================================

M	source/blender/editors/io/io_obj.c
M	source/blender/io/wavefront_obj/IO_wavefront_obj.h
M	source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc

===================================================================

diff --git a/source/blender/editors/io/io_obj.c b/source/blender/editors/io/io_obj.c
index dab03be5750..0b730e06c19 100644
--- a/source/blender/editors/io/io_obj.c
+++ b/source/blender/editors/io/io_obj.c
@@ -107,6 +107,7 @@ static int wm_obj_export_exec(bContext *C, wmOperator *op)
   export_params.up_axis = RNA_enum_get(op->ptr, "up_axis");
   export_params.scaling_factor = RNA_float_get(op->ptr, "scaling_factor");
 
+  export_params.export_selected_objects = RNA_boolean_get(op->ptr, "export_selected_objects");
   export_params.export_uv = RNA_boolean_get(op->ptr, "export_uv");
   export_params.export_normals = RNA_boolean_get(op->ptr, "export_normals");
   export_params.export_materials = RNA_boolean_get(op->ptr, "export_materials");
@@ -159,6 +160,9 @@ static void ui_obj_export_settings(uiLayout *layout, PointerRNA *imfptr)
   row = uiLayoutRow(box, false);
   uiItemL(row, IFACE_("File Write Options"), ICON_NONE);
 
+  row = uiLayoutRow(box, false);
+  uiItemR(row, imfptr, "export_selected_objects", 0, NULL, ICON_NONE);
+
   row = uiLayoutRow(box, false);
   uiItemR(row, imfptr, "export_uv", 0, NULL, ICON_NONE);
 
@@ -237,6 +241,7 @@ void WM_OT_obj_export(struct wmOperatorType *ot)
                                  FILE_DEFAULTDISPLAY,
                                  FILE_SORT_ALPHA);
 
+  /* Animation options. */
   RNA_def_boolean(ot->srna,
                   "export_animation",
                   false,
@@ -261,6 +266,7 @@ void WM_OT_obj_export(struct wmOperatorType *ot)
               "The last frame to be exported",
               0,
               250);
+  /* Object transform options. */
   RNA_def_enum(ot->srna,
                "forward_axis",
                io_obj_transform_axis_forward,
@@ -277,6 +283,13 @@ void WM_OT_obj_export(struct wmOperatorType *ot)
                 "Scaling Factor: both position and object size are affected",
                 0.01,
                 1000.000f);
+  /* File Writer options. */
+  RNA_def_boolean(ot->srna,
+                  "export_selected_objects",
+                  false,
+                  "Export selected objects",
+                  "If checked, export selected objects only. If unchecked, export all the "
+                  "objects in the scene");
   RNA_def_boolean(ot->srna, "export_uv", true, "Export UVs", "Export UV coordinates");
   RNA_def_boolean(
       ot->srna, "export_normals", true, "Export normals", "Export per face per vertex normals");
diff --git a/source/blender/io/wavefront_obj/IO_wavefront_obj.h b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
index e217b09ea54..7e2e32a169d 100644
--- a/source/blender/io/wavefront_obj/IO_wavefront_obj.h
+++ b/source/blender/io/wavefront_obj/IO_wavefront_obj.h
@@ -63,6 +63,7 @@ struct OBJExportParams {
   float scaling_factor;
 
   /** File Write Options */
+  bool export_selected_objects;
   bool export_uv;
   bool export_normals;
   bool export_materials;
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
index 6c4c7ec9ec4..d5b879487a0 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter.cc
@@ -54,6 +54,9 @@ static void export_frame(bContext *C, const OBJExportParams *export_params, cons
   ViewLayer *view_layer = CTX_data_view_layer(C);
   LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) {
     Object *object_in_layer = base->object;
+    if (export_params->export_selected_objects && !(object_in_layer->base_flag & BASE_SELECTED)) {
+      continue;
+    }
     switch (object_in_layer->type) {
       case OB_SURF:
       case OB_MESH: {



More information about the Bf-blender-cvs mailing list