Skip to main content
1 of 6
Claas Kuhnen
  • 1.8k
  • 4
  • 18
  • 41

How to call transform command onto active object via python so you can move it via mouse?

Bellow is a script I am working on. The main idea is to via a button call a command that deselects everything, adds an empty at the 3D cursor, and then IMPORTANT calls a transform command so you can move the empty and snap it in object mode to geometry. once you LMB confirmed the placement the script continues. I sets the 3d cursor to them empty and then deletes the empty.

I am not able to figure out how to jump into the transform mode , let along continue after I placed the empty.

import bpy

from bpy.types import (
        Panel,
        Menu,
        Operator,
        )
from bpy.types import Menu, Panel, UIList
from rna_prop_ui import PropertyPanel
from bl_ui.properties_data_modifier import DATA_PT_modifiers
from bpy.props import *

########################
# Operator Definitions #
########################

# Command Snap Origin 

class SnapOriginObject(bpy.types.Operator):
    bl_idname = "snap.originobject"
    bl_label = "Snap Object Origin"
    bl_options = {'REGISTER'}
        
    def execute(self, context):

        
        bpy.ops.object.select_all(action='DESELECT')
        
        bpy.ops.object.empty_add()
        
        bpy.ops.transform.translate()
        
        bpy.ops.view3d.snap_cursor_to_selected()

        bpy.ops.object.delete()
      
   
        return{'FINISHED'}

########################
# Interface Definition #
########################

# DATA 
class ObjectData(bpy.types.Panel):
    bl_label = "Object + Mesh Data"
    bl_idname = "ObjectData"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'
    bl_category = "Modeling Toolbox"

    def draw(self, context):
        layout = self.layout

        obj = context.object
  
        row = layout.row()
        self.layout.operator("snap.originobject")
        


# END     
def register(): bpy.utils.register_module(__name__)
def unregister(): bpy.utils.unregister_module(__name__)

 
if __name__ == "__main__":
    register()
Claas Kuhnen
  • 1.8k
  • 4
  • 18
  • 41