in 2.82 is there a way to make a property become a min or max for another property
thanks
happy bl
in 2.82 is there a way to make a property become a min or max for another property
thanks
happy bl
hy,
With a get/set it’s posible, but I don’t know how to do it when the v value is entered from a panel entry. If anyone knows I would be curious to know how to do it.
class GetSet:
def __init__(self, init = 0):
self._prop = init
self._max = 20
self._mini = 10
# getter method
def get_prop(self):
return self._prop
# setter method
def set_prop(self, v):
if v >= self._max :
self._prop = self._max
elif v <= self._mini :
self._prop = self._mini
else :
self._prop = v
gt = GetSet()
# setting
gt.set_prop(5)
# retrieving property using getter
print(gt.get_prop())
print(gt._prop)
if there is something like that in a blender operator
it would be interesting
I have some properties in operator
but would like to make one property a limit on another property
problem is that property are defined when class is created not afterward unless there is another way around !
but there might be a way around with some Hack !
Ex:
one property might be for a parabola curve = the SAG or height
but then you got another prop for the span
but there is a limit on the ratio of Sag / Span
and should be check after entering a value in the Span value or the opposite to make certain it is a valid value
thanks
happy bl
I will test this new way and see if it can work
thanks
happy bl
It’s an interesting question, the beginning of a solution.
import bpy
def get_int(self):
return self["testprop"]
def set_int(self, v):
#self["testprop"] = value
if v > 100 :
self["testprop"] = 99
elif v < 20 :
self["testprop"] = 21
else :
self["testprop"] = v
bpy.types.Scene.test_int = bpy.props.IntProperty(name="bones", default=0, get=get_int, set=set_int)
#bpy.types.WindowManager.bones_nbr = bpy.props.IntProperty(name="bones", default=0)
#scene = bpy.context.scene
#scene.test_int = 100
#print('test_int:', scene.test_int)
class InterGetSetExemple (bpy.types.Panel) :
bl_label = "Get_Set_exemple..."
bl_idname = "VIEW_3D_PT_GET_SET_EXEMPLE"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "get set exemple"
bl_description = "get set property test"
def draw(self, context) :
l = self.layout
c=l.column(align = True)
#c.prop(context.object, "name")
c.prop(bpy.context.scene, "test_int")
#obj = context
def register() :
bpy.utils.register_class(InterGetSetExemple)
def unregister() :
bpy.utils.unregister_class(InterGetSetExemple)
if __name__ == "__main__" :
register()
@[megablast2
very interesting way for prop !
is it possible to add a label or string in the definition
to show the error made may be ?
thanks
happy bl
I don’t know about that, but yeah, I guess so. Actually I was way too far gone, the solution is much simpler than that.
import bpy
bpy.types.WindowManager.v_max = bpy.props.IntProperty(name="vmax", default=100)
bpy.types.WindowManager.v_mini = bpy.props.IntProperty(name="vmini", default=5)
bpy.types.WindowManager.test_int = bpy.props.IntProperty(name="value_test", default=0)
class InterGetSetExemple (bpy.types.Panel) :
bl_label = "Get_Set_exemple..."
bl_idname = "VIEW_3D_PT_GET_SET_EXEMPLE"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "get set exemple"
bl_description = "get set property test"
def minimax(self) :
if bpy.context.window_manager.test_int > bpy.context.window_manager.v_max :
bpy.context.window_manager.test_int = bpy.context.window_manager.v_max
elif bpy.context.window_manager.test_int < bpy.context.window_manager.v_mini :
bpy.context.window_manager.test_int = bpy.context.window_manager.v_mini
def draw(self, context) :
l = self.layout
c=l.column(align = True)
#c=l.row(align = False)
c.prop(bpy.context.window_manager, "v_mini")
c.prop(bpy.context.window_manager, "test_int")
c.prop(bpy.context.window_manager, "v_max")
self.minimax()
def register() :
bpy.utils.register_class(InterGetSetExemple)
def unregister() :
bpy.utils.unregister_class(InterGetSetExemple)
if __name__ == "__main__" :
register()
Happy bl
have not use this window manager things prop
can you explain what it is and what it does ?
have to think how to use this for my addon with operator!
be back may be tomorrow
thanks
happy bl
It’s for the use interface, then I can’t explain all the subtleties.