# Пример простого аддона для Blender 2.93, создающего в качестве объекта одну вершину меша по нажатию кнопки.
# Аддон расположен в свойствах сцены "Scene Properties" - название "Super Line 0.3 prototype"
# Контакты:
# www.suny-o.narod.ru
# https://vk.com/aorlov1979
# https://vk.com/blender_diary
# aorlv@yandex.ru
# suny-o@yandex.ru
# Лицензия GNU (GPLv3)
bl_info = {
"name": "Super Line Prototype",
"author": "Orlov Alexander",
"version": (0, 3),
"blender": (2, 93, 0),
"location": "PROPERTIES > WINDOW > scene > Super Line 0.3 prototype",
"description": "Adds a new one mesh point",
"warning": "",
"doc_url": "",
"category": "Add Mesh",
}
import bpy
# ---------------------------- Main function -------------------------------
def main(context):
# make mesh
x0 = 0
y0 = 0
z0 = 0
vertices = [(x0, y0, z0),]
edges = []
faces = []
super_line = bpy.data.meshes.new('name_superline')
super_line.from_pydata(vertices, edges, faces)
super_line.update()
# make object from mesh
supeline_object = bpy.data.objects.new('Super line object', super_line)
# add object to scene
bpy.context.scene.collection.objects.link(supeline_object)
# make collection
# superline_collection = bpy.data.collections.new('Super line collection')
# bpy.context.scene.collection.children.link(superline_collection)
# add object to scene collection
#superline_collection.objects.link(supeline_object)
class SuperLineOperator(bpy.types.Operator):
"""Tooltip"""
bl_idname = "object.superline_operator"
bl_label = "Super Line - one mesh point"
def execute(self, context):
main(context)
return {'FINISHED'}
# ---------------------------- Panels -------------------------------
class SuperLineMenuPanel(bpy.types.Panel):
"""Creates a Panel in the scene context of the properties editor"""
bl_label = "Super Line 0.3 prototype"
bl_idname = "SCENE_PT_layout"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "scene"
def draw(self, context):
layout = self.layout
scene = context.scene
# Big super line button
layout.label(text="Сreate:")
row = layout.row()
row.scale_y = 2.0
row.operator("object.superline_operator") # Вызов функции рисования вершины - call function
# ---------------------------- Регистрация функций и меню -------------------------------
def register():
bpy.utils.register_class(SuperLineOperator) # Регистрация процедуры создания вершины - Включить
bpy.utils.register_class(SuperLineMenuPanel) # Регистрация меню - Включить
def unregister():
bpy.utils.unregister_class(SuperLineOperator) # Регистрация процедуры создания вершины - Выключить
bpy.utils.unregister_class(SuperLineMenuPanel) # Регистрация меню - Выключить
#bpy.utils.register_class(SuperLineOperator)
if __name__ == "__main__":
register()
# test call
# bpy.ops.object.superline_operator()
|