From d6b94b01674f7b88272d689f9229218ec497c19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 14 Nov 2017 14:37:32 +0100 Subject: [PATCH] use level.short_label as group name for rendering --- src/c3nav/mapdata/render/data.py | 3 +++ src/c3nav/mapdata/render/engines/openscad.py | 10 ++++++---- src/c3nav/mapdata/render/renderer.py | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/c3nav/mapdata/render/data.py b/src/c3nav/mapdata/render/data.py index 5e5c507a..bc9cb6ab 100644 --- a/src/c3nav/mapdata/render/data.py +++ b/src/c3nav/mapdata/render/data.py @@ -273,6 +273,7 @@ class LevelRenderData: new_geoms.pk = old_geoms.pk new_geoms.on_top_of_id = old_geoms.on_top_of_id + new_geoms.short_label = old_geoms.short_label new_geoms.base_altitude = old_geoms.base_altitude new_geoms.default_height = old_geoms.default_height new_geoms.min_altitude = (min(area.altitude for area in new_geoms.altitudeareas) @@ -369,6 +370,7 @@ class LevelGeometries: self.pk = None self.on_top_of_id = None + self.short_label = None self.base_altitude = None self.default_height = None self.min_altitude = None @@ -463,6 +465,7 @@ class LevelGeometries: # general level infos geoms.pk = level.pk geoms.on_top_of_id = level.on_top_of_id + geoms.short_label = level.short_label geoms.base_altititude = int(level.base_altitude * 1000) geoms.default_height = int(level.default_height * 1000) geoms.min_altitude = (min(area.altitude for area in geoms.altitudeareas) diff --git a/src/c3nav/mapdata/render/engines/openscad.py b/src/c3nav/mapdata/render/engines/openscad.py index 2756f763..c0a6bf9c 100644 --- a/src/c3nav/mapdata/render/engines/openscad.py +++ b/src/c3nav/mapdata/render/engines/openscad.py @@ -13,7 +13,7 @@ class OpenSCADEngine(Base3DEngine): vertices = tuple(set(tuple(vertex) for vertex in facets.reshape((-1, 3)))) lookup = {vertex: i for i, vertex in enumerate(vertices)} - return (b'module ' + name.encode() + b'() {\n' + + return (b'module ' + name.replace('-', 'minus').encode() + b'() {\n' + b' polyhedron(\n' + b' points = [\n' + b'\n'.join((b' [%.3f, %.3f, %.3f],' % tuple(vertex)) for vertex in vertices) + b'\n' + @@ -29,11 +29,13 @@ class OpenSCADEngine(Base3DEngine): def render(self) -> bytes: result = (b'c3nav_export();\n\n' + b'module c3nav_export() {\n' + - b'\n'.join((b' %s();' % group.encode()) for group in self.groups.keys()) + b'\n' + + b'\n'.join((b' %s();' % group.replace('-', 'minus').encode()) + for group in self.groups.keys()) + b'\n' + b'}\n\n') for group, subgroups in self.groups.items(): - result += (b'module ' + group.encode() + b'() {\n' + - b'\n'.join((b' %s();' % subgroup.encode()) for subgroup in subgroups) + b'\n' + + result += (b'module ' + group.replace('-', 'minus').encode() + b'() {\n' + + b'\n'.join((b' %s();' % subgroup.replace('-', 'minus').encode()) + for subgroup in subgroups) + b'\n' + b'}\n') result += b'\n' for group, vertices in self.vertices.items(): diff --git a/src/c3nav/mapdata/render/renderer.py b/src/c3nav/mapdata/render/renderer.py index 7e4bb821..43724c43 100644 --- a/src/c3nav/mapdata/render/renderer.py +++ b/src/c3nav/mapdata/render/renderer.py @@ -90,7 +90,7 @@ class MapRenderer: if not bbox.intersects(geoms.affected_area): continue - engine.add_group('level_%s' % geoms.pk) + engine.add_group('level_%s' % geoms.short_label) # hide indoor and outdoor rooms if their access restriction was not unlocked add_walls = hybrid_union(tuple(area for access_restriction, area in geoms.restricted_spaces_indoors.items()