70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
import bmesh
|
|
import bpy
|
|
import mathutils
|
|
|
|
# Makes an empty, at the specified location, rotation, scale stores it in existing collection, from https://blender.stackexchange.com/questions/51290/how-to-add-empty-object-not-using-bpy-ops
|
|
def make_empty(name, location, rotation, scale, collection):
|
|
object_data = None
|
|
empty_obj = bpy.data.objects.new( name, object_data )
|
|
|
|
empty_obj.empty_display_size = 2
|
|
empty_obj.empty_display_type = 'PLAIN_AXES'
|
|
|
|
empty_obj.name = name
|
|
empty_obj.location = location
|
|
empty_obj.scale = scale
|
|
empty_obj.rotation_euler = rotation
|
|
|
|
collection.objects.link( empty_obj )
|
|
#bpy.context.view_layer.update()
|
|
return empty_obj
|
|
|
|
def make_cube(name, location=[0,0,0], rotation=[0,0,0], scale=[1,1,1], collection=None):
|
|
new_mesh = bpy.data.meshes.new(name+"_Mesh") #None
|
|
"""verts = [( 1.0, 1.0, 0.0),
|
|
( 1.0, -1.0, 0.0),
|
|
(-1.0, -1.0, 0.0),
|
|
(-1.0, 1.0, 0.0),
|
|
] # 4 verts made with XYZ coords
|
|
edges = []
|
|
faces = [[0, 1, 2, 3]]
|
|
new_mesh.from_pydata(verts, edges, faces)"""
|
|
|
|
|
|
bm = bmesh.new()
|
|
bmesh.ops.create_cube(bm, size=0.1, matrix=mathutils.Matrix.Translation(location)) # FIXME: other ways to set position seems to fail ?
|
|
bm.to_mesh(new_mesh)
|
|
bm.free()
|
|
|
|
new_object = bpy.data.objects.new(name, new_mesh)
|
|
new_object.name = name
|
|
new_object.location = location
|
|
new_object.scale = scale
|
|
new_object.rotation_euler = rotation
|
|
|
|
if collection is not None:
|
|
collection.objects.link( new_object )
|
|
return new_object
|
|
|
|
|
|
|
|
"""import bpy
|
|
import json
|
|
|
|
# Makes an empty, at the specified location, rotation, scale stores it in existing collection, from https://blender.stackexchange.com/questions/51290/how-to-add-empty-object-not-using-bpy-ops
|
|
def make_empty(name, location, rotation, scale, collection):
|
|
object_data = None
|
|
empty_obj = bpy.data.objects.new( name, object_data )
|
|
|
|
empty_obj.empty_display_size = 2
|
|
empty_obj.empty_display_type = 'PLAIN_AXES'
|
|
|
|
empty_obj.name = name
|
|
empty_obj.location = location
|
|
empty_obj.scale = scale
|
|
empty_obj.rotation_euler = rotation
|
|
|
|
collection.objects.link( empty_obj )
|
|
#bpy.context.view_layer.update()
|
|
return empty_obj
|
|
""" |