Page MenuHome

Adjust Last Operation will change selection after running operator from console
Confirmed, NormalPublic

Description

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce GTX 1650 SUPER/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 445.75

Blender Version
Broken: version: 2.83 (sub 17), branch: master, commit date: 2020-05-22 19:52, hash: rBe8dd8c2829f3, also 2.82a

Short description of error
after execute selection operator in Python Console, then use any tool that have "Adjust Last Operation" panel and tweak parameter in it - the selection dropped

Exact steps for others to reproduce the error

  1. Open file
  2. Run command in console (bpy.ops.mesh.loop_multi_select(ring=False))
  3. In 3D viewport move selection
  4. In adjust last operation panel modify some property

Selection will change and result will be incorrect.

Event Timeline

And before you say that it's not a bug,
I want to add interesting observation:

if we execute operator from text editor like this one

import bpy
bpy.ops.mesh.loop_multi_select(ring=False)

and then use any tool, selection will not drop.
But if we want more complex code, like this (custom addon in N panel called "Test Select" with button, depending of selected element it execute own operator)

import bpy, bmesh
from bpy.types import Panel, Operator

# Add-on info
bl_info = {
    "name": "Test Select",
    "author": "APEC",
    "version": (1, 0, 0),
    "blender": (2, 82, 0),
    "location": "View3D > Properties > Test Select",
    "description": "test select", 
    "wiki_url": "",
    "tracker_url": "",      
    "category": "3D View"
}

# Context selection: if polygons - Sel Linked All, if Edges - MultiSelect Loop, else - Sel Open Edges
class CONSEL_OT_context_select(Operator):
    bl_idname = "consel.context_select"
    bl_label = "Context selection"
    bl_description = "Selecting depend of selected elements"

    def execute(self, context):
        context = bpy.context
        ob = context.edit_object
        me = ob.data
        bm = bmesh.from_edit_mesh(me)
        
        # checking for face selected
        selFaces = [f for f in bm.faces if f.select]

        # checking for edge selected
        selEdges = [e for e in bm.edges if e.select]

        if selFaces:
            bpy.ops.mesh.select_linked(delimit={'SEAM'})
        if selEdges:
            bpy.ops.mesh.loop_multi_select(ring=False)
        else:
            bpy.ops.mesh.select_non_manifold(extend=False, use_wire=True, use_boundary=True, use_multi_face=True)
            bpy.ops.mesh.select_mode(type="EDGE")        
        return {'FINISHED'}

# UI: N panel - Test Select
class SELTOPOLOGY_PT_main(Panel):          
    bl_label = "Test Select"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = 'Test Select'
    
    def draw (self, context):
        layout = self.layout
                        
        row = layout.row(align=True)
        row.operator("consel.context_select")

def register():
    bpy.utils.register_class(CONSEL_OT_context_select)
    bpy.utils.register_class(SELTOPOLOGY_PT_main)

def unregister():
    bpy.utils.unregister_class(CONSEL_OT_context_select)
    bpy.utils.unregister_class(SELTOPOLOGY_PT_main)

if __name__ == "__main__":
    register()

and after that we use any tool and change any parameter in "Adjust Last Operation" panel, the selection will be dropped.

Richard Antalik (ISS) renamed this task from Python Console: execute selection operator and after use all kind of tool and tweak parameter in "Adjust Last Operation" panel - drops selection to Adjust Last Operation will change selection after running operator from console.Mon, May 25, 3:24 PM
Richard Antalik (ISS) changed the task status from Needs Triage to Confirmed.
Richard Antalik (ISS) updated the task description. (Show Details)

Another example:

  1. Select some Object/s (no matter is it meshes, lights or cameras).
  2. Run command in console (bpy.ops.object.delete(use_global=False)). Simple delete.
  3. Add new object and change some parameter in "Adjust Last Operation" panel.
  4. Deleted Object/s appear. Magic!