From 505bdf9f4be430e2d2571ab6ba084a5f9a36d3f6 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 15 Jul 2012 18:52:29 -0400 Subject: [PATCH] print line numbers when failing to load material library, bugfix "next" --- wfobj.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/wfobj.py b/wfobj.py index 65e5cdd..51ba5a9 100755 --- a/wfobj.py +++ b/wfobj.py @@ -118,39 +118,43 @@ class WFObj(object): fh = open(name, 'r') material = None material_name = '' + lineno = 0 for line in iter(fh.readline, ''): + lineno += 1 line = line.strip() if line.startswith('#'): - next + continue parts = line.split() if len(parts) < 1: - next + continue if parts[0] == 'newmtl': if len(parts[1:]) < 1: - raise ValueError('newmtl directive requires argument') + raise ValueError('newmtl directive requires argument on line %d' % lineno) material = Material() material_name = parts[1] self.materials[material_name] = material else: if material is None: - raise ValueError('Material directive preceeding "newmtl"') + print line + print repr(parts) + raise ValueError('Material directive preceeding "newmtl" on line %d' % lineno) if parts[0] == 'Ns': material.shininess = float(parts[1]) elif parts[0] == 'Ka': if len(parts[1:]) < 3: - raise ValueError('Ka requires 3 arguments') + raise ValueError('Ka requires 3 arguments on line %d' % lineno) material.ambient = map(float, parts[1:]) if len(material.ambient) < 4: material.ambient.append(1.0) elif parts[0] == 'Kd': if len(parts[1:]) < 3: - raise ValueError('Kd requires 3 arguments') + raise ValueError('Kd requires 3 arguments on line %d' % lineno) material.diffuse = map(float, parts[1:]) if len(material.diffuse) < 4: material.diffuse.append(1.0) elif parts[0] == 'Ks': if len(parts[1:]) < 3: - raise ValueError('Ks requires 3 arguments') + raise ValueError('Ks requires 3 arguments on line %d' % lineno) material.specular = map(float, parts[1:]) if len(material.specular) < 4: material.specular.append(1.0) @@ -166,7 +170,7 @@ class WFObj(object): elif parts[0] == 'map_Kd': material.texture = parts[1] else: - raise ValueError('Unknown material directive "%s"' % parts[0]) + raise ValueError('Unknown material directive "%s" on line %d' % (parts[0], lineno)) if self.fileloader is None: fh.close()