glTF exporter: No texture export when original can't be retrieved
[blender-addons.git] / io_import_dxf / dxfgrabber / dxfobjects.py
blobf3ef149b3480bc071ea6c4c3bd84657ef5e45a48
1 # SPDX-License-Identifier: MIT
2 # Copyright 2016 Manfred Moitzi
4 # Purpose: objects classes
5 # Created: 17.04.2016
7 from __future__ import unicode_literals
8 __author__ = "mozman <mozman@gmx.at>"
10 from datetime import datetime
11 from .juliandate import calendar_date
14 class DXFObject(object):
15 def __init__(self):
16 self.dxftype = 'ENTITY'
17 self.handle = None
18 self.owner = None
20 def setup_attributes(self, tags):
21 self.dxftype = tags.get_type()
22 for code, value in tags.plain_tags():
23 if code == 5: # special case 105 handled by STYLE TABLE
24 self.handle = value
25 elif code == 330:
26 self.owner = value
27 else:
28 yield code, value # chain of generators
31 def unpack_seconds(seconds):
32 seconds = int(seconds / 1000) # remove 1/1000 part
33 hours = int(seconds / 3600)
34 seconds = int(seconds % 3600)
35 minutes = int(seconds / 60)
36 seconds = int(seconds % 60)
37 return hours, minutes, seconds
40 class Sun(DXFObject):
41 def __init__(self):
42 super(Sun, self).__init__()
43 self.version = 1
44 self.status = False
45 self.sun_color = None
46 self.intensity = 0.
47 self.shadows = False
48 self.date = datetime.now()
49 self.daylight_savings_time = False
50 self.shadow_type = 0
51 self.shadow_map_size = 0
52 self.shadow_softness = 0.
54 def setup_attributes(self, tags):
55 date = 0
56 time = 0
57 for code, value in super(Sun, self).setup_attributes(tags):
58 if code == 40:
59 self.intensity = value
60 elif code == 63:
61 self.sun_color = value
62 elif code == 70:
63 self.shadow_type = value
64 elif code == 71:
65 self.shadow_map_size = value
66 elif code == 90:
67 self.version = value
68 elif code == 91:
69 date = value
70 elif code == 92:
71 time = value
72 elif code == 280:
73 self.shadow_softness = value
74 elif code == 290:
75 self.status = bool(value)
76 elif code == 291:
77 self.shadows = bool(value)
78 elif code == 292:
79 self.daylight_savings_time = bool(value)
80 else:
81 yield code, value # chain of generators
83 if date > 0:
84 date = calendar_date(date)
85 else:
86 date = datetime.now()
87 hours, minutes, seconds = unpack_seconds(time)
88 self.date = datetime(date.year, date.month, date.day, hours, minutes, seconds)
90 ObjectsTable = {
91 'SUN': Sun,
95 def objects_factory(tags):
96 dxftype = tags.get_type()
97 cls = ObjectsTable.get(dxftype, DXFObject) # get object class
98 entity = cls() # call constructor
99 list(entity.setup_attributes(tags)) # setup dxf attributes - chain of generators
100 return entity