This repository was archived by the owner on Mar 17, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_lamps.py
More file actions
67 lines (55 loc) · 2.91 KB
/
create_lamps.py
File metadata and controls
67 lines (55 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import bpy
import os
fixture_dic = {
"dimmer": "obj.data.energy = watt * 1000 * (values[i] / 255)",
"rgb": "obj.data.energy = watt * 1000\nobj.data.color = ((values[i] / 255),(values[i+1] / 255),(values[i+2] / 255))",
"rgbw": "obj.data.energy = watt * 1000\nobj.data.color = ((values[i] / 255),(values[i+1] / 255),(values[i+2] / 255))",
"rbg_dimmer": "obj.data.energy = watt * 1000 * (values[i+3] / 255)\nobj.data.color = ((values[i] / 255),(values[i+1] / 255),(values[i+2] / 255))",
"dimmer_rgb": "obj.data.energy = watt * 1000 * (values[i] / 255)\nobj.data.color = ((values[i+1] / 255),(values[i+2] / 255),(values[i+3] / 255))",
"uv": "obj.data.energy = watt * 1000 * (values[i] / 255)\nobj.data.color = (127, 26, 229)"
}
lamps = []
for i in range(512):
lamps.append([])
class DialogOperator(bpy.types.Operator):
bl_idname = "object.dialog_operator"
bl_label = "Add lamp to scene"
dmx_address = bpy.props.IntProperty(name="Starting DMX Address")
fixture_type = bpy.props.StringProperty(name="Fixturetype")
watts = bpy.props.FloatProperty(name="Watts")
def execute(self, context):
if int(self.dmx_address) > 0:
lamps[int(self.dmx_address) -
1] = [str(self.fixture_type), float(self.watts)]
basedir = os.path.dirname(bpy.data.filepath)
lamps_file = open(str(basedir)+'/lamps_file.csv', 'w')
for a in range(len(lamps)):
if len(lamps[a]) > 0:
bpy.ops.mesh.primitive_cube_add()
bpy.data.objects['Cube'].name = "%03d" % (a+1)
bpy.ops.object.light_add(type='SPOT')
bpy.data.objects['Spot'].data.spot_size = 0.450295
bpy.data.objects['Spot'].data.spot_blend = 0.420
bpy.data.objects['Spot'].data.shadow_soft_size = 0.367
bpy.data.objects['Spot'].name = "%03d_lamp" % (a+1)
bpy.data.objects["%03d_lamp" %
(a+1)].parent = bpy.data.objects["%03d" % (a+1)]
if lamps[a][0] == 'dimmer':
bpy.data.objects["%03d" %
(a+1)].data = bpy.data.objects['Theater'].data
elif lamps[a][0] in ['rgb', 'rgbw', 'rgb_dimmer', 'dimmer_rgb', 'uv']:
bpy.data.objects["%03d" %
(a+1)].data = bpy.data.objects['LED'].data
else:
bpy.data.objects["%03d" % (
a+1)].data = bpy.data.objects['Profiler'].data
for b in range(len(lamps[a])):
lamps_file.write(str(lamps[a][b])+";")
lamps_file.write("\n")
lamps_file.close()
return {'FINISHED'}
def invoke(self, context, event):
wm = context.window_manager
return wm.invoke_props_dialog(self)
bpy.utils.register_class(DialogOperator)
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')