From 4969937e6aa32b668880a9c663f1d55b51dc3e66 Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Thu, 10 Oct 2013 17:46:22 +0200 Subject: [PATCH] More metadata --- pastebin/models.py | 107 ++++++++++++++++++---- pastebin/templates/pastebin/geometry.html | 24 +++++ 2 files changed, 114 insertions(+), 17 deletions(-) diff --git a/pastebin/models.py b/pastebin/models.py index 1832336..afaf7dc 100644 --- a/pastebin/models.py +++ b/pastebin/models.py @@ -1,5 +1,6 @@ import os.path import struct +import re from hashlib import md5 from datetime import datetime @@ -7,7 +8,7 @@ from datetime import datetime from django.contrib.auth.models import User from django.db import models - +vertex_pattern = re.compile(r'vertex\s+([0-9.e+-]+)\s+([0-9.e+-]+)\s+([0-9.e+-]+)') def safe_upload_path(base_dir): @@ -33,27 +34,99 @@ class Geometry(models.Model): user = models.ForeignKey(User, blank=True) date = models.DateTimeField(auto_now_add=True) polycount = models.IntegerField(blank=True, default=0) + width = models.FloatField(blank=True, default=0) + depth = models.FloatField(blank=True, default=0) + height = models.FloatField(blank=True, default=0) file = models.FileField(upload_to=safe_upload_path('models')) sourcefile = models.FileField(upload_to=safe_upload_path('sources'), blank=True) + def _generate_meta_infos(self): + print "Generating metainfos %s" % self.name + + self.file.open() + + count = 0 + min_coord = [None,None,None] + max_coord = [None,None,None] + + if self.file.read(5) != "solid": + print "binary" + #Skip header + self.file.seek(80) + count = struct.unpack("i",self.file.read(4))[0] + + done = False + for pos in range(0,count): + #Skip normal (3 * 32bit) + self.file.seek(self.file.tell()+3*4) + #Loop over each coordinate + for vert in range(0,3): + # Loop over each coordinate + for i in range(0,3): + x = struct.unpack(" +
+
+ width: +
+
+ {{geometry.get_width}} +
+
+
+
+ height: +
+
+ {{geometry.get_height}} +
+
+
+
+ depth: +
+
+ {{geometry.get_depth}} +
+

Downloads

Download Model