Advertisement
Okorosso

teseract_ASAPit

May 22nd, 2021
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.99 KB | None | 0 0
  1. bl_info = {
  2.     "name": "TS maker",
  3.     "author": "RomaOkorosso",
  4.     "version": (1, 0),
  5.     "blender": (2, 80, 0),
  6.     "location": "View3D > Add > Mesh > New Object",
  7.     "description": "Adds a new Mesh Object",
  8.     "warning": "",
  9.     "doc_url": "",
  10.     "category": "Add Mesh",
  11. }
  12.  
  13. import bpy
  14. from bpy.types import Operator
  15. from bpy.props import *
  16. from bpy_extras.object_utils import AddObjectHelper, object_data_add
  17. from mathutils import Vector
  18.  
  19. ssize = 5
  20.  
  21.  
  22. def generate_verts(side_len):
  23.     lp = -(side_len / 2)  # left point
  24.     rp = side_len / 2  # right point
  25.     verts = [Vector((lp, rp, rp)),
  26.              Vector((rp, rp, rp)),
  27.              Vector((rp, lp, rp)),
  28.              Vector((lp, lp, rp)),
  29.              Vector((lp, rp, lp)),
  30.              Vector((rp, rp, lp)),
  31.              Vector((rp, lp, lp)),
  32.              Vector((lp, lp, lp)),
  33.              ]
  34.     return verts
  35.  
  36.  
  37. def gen_tess(side_len):
  38.     small_cube_side = side_len / 2  # right point
  39.     v1 = generate_verts(side_len)
  40.     v2 = generate_verts(small_cube_side)
  41.     print(v1 + v2)
  42.     return v1 + v2
  43.  
  44.  
  45. class DialogOperator(bpy.types.Operator):
  46.     bl_idname = "object.dialog_operator"
  47.     bl_label = "Simple Dialog Operator"
  48.  
  49.     my_size = IntProperty(name="lenght", default=5)
  50.  
  51.     def execute(self, context):
  52.         global ssize
  53.         ssize = self.my_size
  54.         message = "%d" % (self.my_size)
  55.         return {'FINISHED'}
  56.  
  57.     def invoke(self, context, event):
  58.         global ssize
  59.         self.my_size = ssize
  60.         return context.window_manager.invoke_props_dialog(self)
  61.  
  62.  
  63. def add_object(self, context):
  64.     global ssize
  65.     verts = gen_tess(ssize)
  66.     edges = [[0, 1], [1, 2], [2, 3], [3, 0], [4, 5], [5, 6], [6, 7], [7, 4], [0, 4], [1, 5], [2, 6], [3, 7],
  67.              [8, 9], [9, 10], [10, 11], [11, 8], [12, 13], [13, 14], [14, 15], [15, 12], [8, 12], [9, 13], [10, 14],
  68.              [11, 15], [0, 8], [1, 9], [2, 10], [3, 11], [4, 12], [5, 13], [6, 14], [7, 15]]
  69.     faces = []
  70.  
  71.     mesh = bpy.data.meshes.new(name="New Object Mesh")
  72.     mesh.from_pydata(verts, edges, faces)
  73.     object_data_add(context, mesh, operator=self)
  74.  
  75.  
  76. class OBJECT_OT_add_object(Operator, AddObjectHelper):
  77.     """Create a new Mesh Object"""
  78.     bl_idname = "mesh.add_object"
  79.     bl_label = "Add tesseract"
  80.     bl_options = {'REGISTER', 'UNDO'}
  81.  
  82.     def execute(self, context):
  83.         add_object(self, context)
  84.         return {'FINISHED'}
  85.  
  86. def add_object_button(self, context):
  87.     self.layout.operator(
  88.         OBJECT_OT_add_object.bl_idname,
  89.         text="Add tesseract",
  90.         icon='CUBE')
  91.  
  92.  
  93.  
  94. def register():
  95.     bpy.utils.register_class(DialogOperator)
  96.     bpy.utils.register_class(OBJECT_OT_add_object)
  97.     bpy.types.VIEW3D_MT_mesh_add.append(add_object_button)
  98.  
  99.  
  100. def unregister():
  101.     bpy.utils.unregister_class(OBJECT_OT_add_object)
  102.     bpy.types.VIEW3D_MT_mesh_add.remove(add_object_button)
  103.  
  104.  
  105. if __name__ == "__main__":
  106.     register()
  107.     bpy.ops.object.dialog_operator('INVOKE_DEFAULT')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement