There's a piece I'm missing on how the PropertyGroup works. I thought that assigning each to an object would hold the data and be available for manipulation later. However the display through the panel always shows the active object (at least the way I have it set up).
Here is an example and the code:
import bpy def resize(self, context): o = bpy.context.object print(o) o.dimensions.x = o.my_settings.length class MySettings(bpy.types.PropertyGroup): reverse : bpy.props.BoolProperty(name = "Direction", description = "Direction",default = False ) length : bpy.props.FloatProperty(name = "Length", description = "Wall Length", default = 12.0, update = resize) class TEST_PT_Panel(bpy.types.Panel): bl_idname = "TEST_PT_Panel" bl_label = "Test Panel" bl_category = "Test Addon" bl_space_type = "VIEW_3D" bl_region_type = "UI" def draw(self, context): layout = self.layout scene = context.scene obj = context.object box = layout.box() for ob in bpy.data.objects: row = box.row() row.label(text = "Object: " + ob.name) row = box.row() row.prop(obj.my_settings, "reverse") row = box.row() row.prop(obj.my_settings, "length") classes = ( TEST_PT_Panel, MySettings ) def register(): from bpy.utils import register_class for cls in classes: register_class(cls) bpy.types.Object.my_settings = bpy.props.PointerProperty(type=MySettings) def unregister(): from bpy.utils import unregister_class for cls in reversed(classes): unregister_class(cls) if __name__ == "__main__": try: unregister() except: pass register()
I thought each object would get a copy of MySettings PropertyGroup and that when looping through each object would reference them. However in the example the operator works only on the active object, while the panel seems to only be aware of one instance of the PropertyGroup.
What I'm trying to accomplish is having each 'Length' update the object it references in the panel. At this point not sure if I haven't assigned them correctly somehow, or not using them correctly.