From 1524fc23401b589ab6e923a75a0d58772ef72055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 6 Aug 2017 20:52:21 +0200 Subject: [PATCH] first prototype for openscad rendering --- .../mapdata/management/commands/renderscad.py | 17 +++++++++++++++++ src/c3nav/mapdata/utils/scad.py | 7 +++++++ 2 files changed, 24 insertions(+) create mode 100644 src/c3nav/mapdata/management/commands/renderscad.py create mode 100644 src/c3nav/mapdata/utils/scad.py diff --git a/src/c3nav/mapdata/management/commands/renderscad.py b/src/c3nav/mapdata/management/commands/renderscad.py new file mode 100644 index 00000000..c89f6ac6 --- /dev/null +++ b/src/c3nav/mapdata/management/commands/renderscad.py @@ -0,0 +1,17 @@ +import os +from django.conf import settings +from django.core.management.base import BaseCommand + +from c3nav.mapdata.utils.scad import polygon_scad + + +class Command(BaseCommand): + help = 'render the map to openscad' + + def handle(self, *args, **options): + from c3nav.mapdata.models import AltitudeArea + filename = os.path.join(settings.RENDER_ROOT, 'all.scad') + with open(filename, 'w') as f: + for area in AltitudeArea.objects.all(): + f.write('translate([0, 0, %.2f]) ' % area.altitude) + f.write(polygon_scad(area.geometry)+';\n') diff --git a/src/c3nav/mapdata/utils/scad.py b/src/c3nav/mapdata/utils/scad.py new file mode 100644 index 00000000..8e6349a7 --- /dev/null +++ b/src/c3nav/mapdata/utils/scad.py @@ -0,0 +1,7 @@ +import json + +from shapely.geometry import mapping + + +def polygon_scad(polygon): + return 'polygon(points='+json.dumps(mapping(polygon)['coordinates'][0], separators=(',', ':'))+')'