# Path: lasercut/helper.py
# class ObjectProperties(object):
#     def __init__(self, **kwargs):
#         self.obj_class = str(type(self).__name__)
#         for k, v in kwargs.items():
#             if not hasattr(self, "_allowed") or str(k) in self._allowed:
#                 setattr(self, k, v)
#             #else:
#             #    FreeCAD.Console.PrintWarning(str(k) + " is not allowed for " + str(type(self)))


from lasercut.helper import ObjectProperties
    BOTTOM_OUTSIDE = "Outside"
    BOTTOM_INSIDE = "Inside"

    def __init__(self, **kwargs):
        super(BoxProperties, self).__init__(**kwargs)
        if not hasattr(self, 'length'):
            self.length = 90.
        if not hasattr(self, 'width'):
            self.width = 50.
        if not hasattr(self, 'height'):
            self.height = 30.
        if not hasattr(self, 'thickness'):
            self.thickness = 3.
        if not hasattr(self, 'outside_measure'):
            self.outside_measure = True
        # Length/width
        if not hasattr(self, 'length_width_priority'):
            self.length_width_priority = self.LENGTH_PRIORTY
        if not hasattr(self, 'length_outside'):
            self.length_outside = 0.
        if not hasattr(self, 'width_outside'):
            self.width_outside = 0.
        if not hasattr(self, 'inner_radius'):
            self.inner_radius = 0.
        if not hasattr(self, 'length_shift'):
            self.length_shift = 0.
        if not hasattr(self, 'width_shift'):
            self.width_shift = 0.



# Path: lasercut/helper.py
# class ObjectProperties(object):
#     def __init__(self, **kwargs):
#         self.obj_class = str(type(self).__name__)
#         for k, v in kwargs.items():
#             if not hasattr(self, "_allowed") or str(k) in self._allowed:
#                 setattr(self, k, v)
#             #else:
#             #    FreeCAD.Console.PrintWarning(str(k) + " is not allowed for " + str(type(self)))


# Path: lasercut/boxproperties.py
from lasercut.helper import ObjectProperties

    BOTTOM_OUTSIDE = "Outside"
    BOTTOM_INSIDE = "Inside"

    def __init__(self, **kwargs):
        super(BoxProperties, self).__init__(**kwargs)
        if not hasattr(self, 'length'):
            self.length = 90.
        if not hasattr(self, 'width'):
            self.width = 50.
        if not hasattr(self, 'height'):
            self.height = 30.
        if not hasattr(self, 'thickness'):
            self.thickness = 3.
        if not hasattr(self, 'outside_measure'):
            self.outside_measure = True
        # Length/width
        if not hasattr(self, 'length_width_priority'):
            self.length_width_priority = self.LENGTH_PRIORTY
        if not hasattr(self, 'length_outside'):
            self.length_outside = 0.
        if not hasattr(self, 'width_outside'):
            self.width_outside = 0.
        if not hasattr(self, 'inner_radius'):
            self.inner_radius = 0.
        if not hasattr(self, 'length_shift'):
            self.length_shift = 0.
        if not hasattr(self, 'width_shift'):
            self.width_shift = 0.



class TopBottomProperties(ObjectProperties):