from .bsyn_object import BsynObject
import bpy
from ..utils import types
from .utils import GetNewObject
[docs]
class Empty(BsynObject):
def __init__(self, obj: bpy.types.Object = None, name=None, **kwargs):
if obj is None:
obj = self._create_empty_in_blender(**kwargs)
self._object = obj
if name is not None:
obj.name = name
[docs]
@classmethod
def create(
cls,
location: types.VectorLike = None,
rotation: types.VectorLike = None,
scale: types.VectorLike = None,
radius: float = 1.0,
name=None,
**kwargs
):
"""Create and return a new Empty instance."""
obj = cls._create_empty_in_blender(location, rotation, scale, radius, **kwargs)
return cls(obj, name=name)
@staticmethod
def _create_empty_in_blender(
location: types.VectorLike = None,
rotation: types.VectorLike = None,
scale: types.VectorLike = None,
radius: float = 1.0,
**kwargs
) -> bpy.types.Object:
"""Private method to create and return a new Empty object in Blender."""
importer = GetNewObject(bpy.context.scene)
kwargs = {
**kwargs,
**{
k: v
for k, v in zip(
["location", "rotation", "scale", "radius"],
[location, rotation, scale, radius],
)
},
}
kwargs = {k: v for k, v in kwargs.items() if v is not None}
with importer:
bpy.ops.object.empty_add(**kwargs)
return importer.imported_obj