@3dcursortools@post.hr avatar

3dcursortools

@[email protected]

This profile is from a federated server and may be incomplete. View on remote instance

3dcursortools , to Blender Developers in New 3D Cursor - Blender 2.8 Code Quest
@3dcursortools@post.hr avatar

@blender@video.blender.org avatar blender I share these two addons for Blender 2.80 via video.blender.org because extensions.blender.org requires Configure MFA and I am unable to do so.
All my addons are Open source and made for Blender 2.80 or newer.
The 3D Cursor Tools addon version 1.0 and 2.0 are just a shortcut to the "location": "3D Viewport > Sidebar > View > 3D Cursor" up to 4 actions with the 3D Cursor on the round drop-down menu that you can access via shift + s
The addon needs to: copy the code from the comments paste it into the Blender text editor save as something with a .py at the end or it won't work and remove all the characters - which break words into two parts from one line to the next.
The addons are below🔽

3dcursortools , to Blender Developers in New 3D Cursor - Blender 2.8 Code Quest
@3dcursortools@post.hr avatar

@blender@video.blender.org avatar blender Blender addon 3D Cursor Toosls V2 bl_info = {
"name": "3D Cursor Tools",
"author": "",
"version": (2, 0),
"blender": (2, 80, 0),
"location": "3D Viewport > Sidebar > View > 3D Cursor",
"description": "",
"category": "3D View"
}

import bpy

class ADDON_PT_tools(bpy.types.Panel):
bl_label = "Tools"
bl_idname = "ADDON_PT_tools"
bl_parent_id = "VIEW3D_PT_view3d_cursor"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "View"

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

Cursor tools

col.operator("view3d.snap_cursor_to_center", text="Cursor to World Origin", icon='CURSOR')
col.separator(factor=0.5)

col.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected", icon='CURSOR')
col.separator(factor=0.5)

col.operator("view3d.snap_cursor_to_active", text="Cursor to Active", icon='CURSOR')
col.separator(factor=0.5)

col.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid", icon='CURSOR')

classes = (ADDON_PT_tools,)

def register():
for c in classes:
bpy.utils.register_class(c)

def unregister():
for c in reversed(classes):
bpy.utils.unregister_class(c)

if name == "main":
register()

3dcursortools , to Blender Developers in New 3D Cursor - Blender 2.8 Code Quest
@3dcursortools@post.hr avatar

@blender@video.blender.org avatar blender Blender addon Origin To 3D Cursor Panel ( "location": "3D Viewport > Sidebar > View" ) bl_info = {
"name": "Origin To 3D Cursor Panel",
"author": "",
"version": (1, 0),
"blender": (2, 80, 0),
"location": "3D Viewport > Sidebar > View",
"description": "Panel with a button to set origin to 3D cursor",
"category": "Object",
}

import bpy

class OBJECT_OT_origin_to_cursor(bpy.types.Operator):
bl_idname = "object.origin_to_cursor_button"
bl_label = "Origin to 3D Cursor"
bl_options = {'REGISTER', 'UNDO'}

def execute(self, context):
bpy.ops.object.origin_set(type='ORIGIN_CURSOR', center='MEDIAN')
return {'FINISHED'}

class VIEW3D_PT_origin_to_cursor_panel(bpy.types.Panel):
bl_label = "Origin to 3D Cursor"
bl_idname = "VIEW3D_PT_origin_to_cursor_panel"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "View" # ← Sidebar tab

def draw(self, context):
layout = self.layout
layout.operator("object.origin_to_cursor_button", icon='PIVOT_CURSOR')

classes = (
OBJECT_OT_origin_to_cursor,
VIEW3D_PT_origin_to_cursor_panel,
)

def register():
for cls in classes:
bpy.utils.register_class(cls)

def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)

if name == "main":
register()

3dcursortools , to Blender Developers in New 3D Cursor - Blender 2.8 Code Quest
@3dcursortools@post.hr avatar

@blender@video.blender.org avatar blender Blender addon 3D Cursor Toosls V1 bl_info = {
"name": "3D Corsor Tools",
"author": "",
"version": (1, 0),
"blender": (2, 80, 0),
"location": "3D Viewport > Sidebar > View > 3D Cursor",
"description": "Panel s alatima za cursor s prirodnim razmakom",
"category": "3D View"
}

import bpy

-----------------------------

PANELS

-----------------------------

class ADDON_PT_tools(bpy.types.Panel):
bl_label = "Tools"
bl_idname = "ADDON_PT_tools"
bl_parent_id = "VIEW3D_PT_view3d_cursor"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "View"

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

Koristimo kolonu bez poravnanja za standardni razmak

col = layout.column()

col.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected", icon='CURSOR')

separator s malim faktorom za suptilan razmak

col.separator(factor=0.5)
col.operator("view3d.snap_cursor_to_center", text="Cursor to World Origin", icon='CURSOR')

class ADDON_PT_more(bpy.types.Panel):
bl_label = "More"
bl_idname = "ADDON_PT_more"
bl_parent_id = "ADDON_PT_tools"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "View"
bl_options = {'DEFAULT_CLOSED'}

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

col.operator("view3d.snap_cursor_to_active", text="Cursor to Active", icon='CURSOR')
col.separator(factor=0.5)
col.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid", icon='CURSOR')

-----------------------------

REGISTER

-----------------------------

classes = (
ADDON_PT_tools,
ADDON_PT_more,
)

def register():
for c in classes:
bpy.utils.register_class(c)

def unregister():
for c in reversed(classes):
bpy.utils.unregister_class(c)

if name == "main":
register()