4 from bpy
.props
import *
8 class curvetoolsSelectedObjectHeader(bpy
.types
.Header
):
10 bl_space_type
= "VIEW_3D"
17 blenderSelectedObjects
= bpy
.context
.selected_objects
18 selectedObjects
= bpy
.context
.scene
.curvetools
.SelectedObjects
20 selectedObjectsToRemove
= []
21 for selectedObject
in selectedObjects
:
22 if not selectedObject
.IsElementOf(blenderSelectedObjects
): selectedObjectsToRemove
.append(selectedObject
)
23 for selectedObject
in selectedObjectsToRemove
: selectedObjects
.remove(selectedObject
)
25 blenderObjectsToAdd
= []
26 for blenderObject
in blenderSelectedObjects
:
27 if not curvetoolsSelectedObject
.ListContains(selectedObjects
, blenderObject
): blenderObjectsToAdd
.append(blenderObject
)
28 for blenderObject
in blenderObjectsToAdd
:
29 newSelectedObject
= curvetoolsSelectedObject(blenderObject
)
30 selectedObjects
.append(newSelectedObject
)
33 def draw(self
, context
):
34 selectedObjects
= bpy
.context
.scene
.curvetools
.SelectedObjects
35 nrSelectedObjects
= len(selectedObjects
)
39 row
.label(text
="Sel: " + str(nrSelectedObjects
))
42 class curvetoolsSelectedObject(bpy
.types
.PropertyGroup
):
43 name
: StringProperty(name
= "name", default
= "??")
47 def UpdateThreadTarget(lock
, sleepTime
, selectedObjectNames
, selectedBlenderObjectNames
):
50 newSelectedObjectNames
= []
52 for name
in selectedObjectNames
:
53 if name
in selectedBlenderObjectNames
: newSelectedObjectNames
.append(name
)
55 for name
in selectedBlenderObjectNames
:
56 if not (name
in selectedObjectNames
): newSelectedObjectNames
.append(name
)
58 # sometimes it still complains about the context
60 nrNewSelectedObjects
= len(newSelectedObjectNames
)
61 bpy
.context
.scene
.curvetools
.NrSelectedObjects
= nrNewSelectedObjects
63 selectedObjects
= bpy
.context
.scene
.curvetools
.SelectedObjects
64 selectedObjects
.clear()
65 for i
in range(nrNewSelectedObjects
): selectedObjects
.add()
66 for i
, newSelectedObjectName
in enumerate(newSelectedObjectNames
):
67 selectedObjects
[i
].name
= newSelectedObjectName
72 def GetSelectedObjectNames():
73 selectedObjects
= bpy
.context
.scene
.curvetools
.SelectedObjects
76 selectedObjectValues
= selectedObjects
.values()
77 for selectedObject
in selectedObjectValues
: rvNames
.append(selectedObject
.name
)
83 def GetSelectedBlenderObjectNames():
84 blenderSelectedObjects
= bpy
.context
.selected_objects
87 for blObject
in blenderSelectedObjects
: rvNames
.append(blObject
.name
)
93 bpy
.utils
.register_class(operators
)
97 bpy
.utils
.unregister_class(operators
)
99 if __name__
== "__main__":
103 curvetoolsSelectedObject
,