[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1469] trunk/py/scripts/addons/ io_scene_obj/import_obj.py: pass pep8 check now.
Campbell Barton
ideasman42 at gmail.com
Fri Jan 21 15:32:06 CET 2011
Revision: 1469
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1469
Author: campbellbarton
Date: 2011-01-21 14:32:05 +0000 (Fri, 21 Jan 2011)
Log Message:
-----------
pass pep8 check now.
Modified Paths:
--------------
trunk/py/scripts/addons/io_scene_obj/import_obj.py
Modified: trunk/py/scripts/addons/io_scene_obj/import_obj.py
===================================================================
--- trunk/py/scripts/addons/io_scene_obj/import_obj.py 2011-01-21 14:08:17 UTC (rev 1468)
+++ trunk/py/scripts/addons/io_scene_obj/import_obj.py 2011-01-21 14:32:05 UTC (rev 1469)
@@ -39,7 +39,7 @@
from io_utils import load_image, unpack_list, unpack_face_list
-def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS= True):
+def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS=True):
'''
Takes a polyline of indices (fgon)
and returns a list of face indicie lists.
@@ -50,17 +50,20 @@
PREF_FIX_LOOPS: If this is enabled polylines that use loops to make multiple polylines are delt with correctly.
'''
- if not set: # Need sets for this, otherwise do a normal fill.
- PREF_FIX_LOOPS= False
+ if not set: # Need sets for this, otherwise do a normal fill.
+ PREF_FIX_LOOPS = False
- Vector= mathutils.Vector
+ Vector = mathutils.Vector
if not indices:
return []
# return []
- def rvec(co): return round(co.x, 6), round(co.y, 6), round(co.z, 6)
- def mlen(co): return abs(co[0])+abs(co[1])+abs(co[2]) # manhatten length of a vector, faster then length
+ def rvec(co):
+ return round(co.x, 6), round(co.y, 6), round(co.z, 6)
+ def mlen(co):
+ return abs(co[0]) + abs(co[1]) + abs(co[2]) # manhatten length of a vector, faster then length
+
def vert_treplet(v, i):
return v, rvec(v), i, mlen(v)
@@ -70,21 +73,20 @@
else:
return v1[1], v2[1]
-
if not PREF_FIX_LOOPS:
'''
Normal single concave loop filling
'''
if type(from_data) in (tuple, list):
- verts= [Vector(from_data[i]) for ii, i in enumerate(indices)]
+ verts = [Vector(from_data[i]) for ii, i in enumerate(indices)]
else:
- verts= [from_data.vertices[i].co for ii, i in enumerate(indices)]
+ verts = [from_data.vertices[i].co for ii, i in enumerate(indices)]
- for i in range(len(verts)-1, 0, -1): # same as reversed(xrange(1, len(verts))):
- if verts[i][1]==verts[i-1][0]:
- verts.pop(i-1)
+ for i in range(len(verts) - 1, 0, -1): # same as reversed(xrange(1, len(verts))):
+ if verts[i][1] == verts[i - 1][0]:
+ verts.pop(i - 1)
- fill= fill_polygon([verts])
+ fill = fill_polygon([verts])
else:
'''
@@ -93,23 +95,22 @@
'''
if type(from_data) in (tuple, list):
- verts= [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)]
+ verts = [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)]
else:
- verts= [vert_treplet(from_data.vertices[i].co, ii) for ii, i in enumerate(indices)]
+ verts = [vert_treplet(from_data.vertices[i].co, ii) for ii, i in enumerate(indices)]
- edges= [(i, i-1) for i in range(len(verts))]
+ edges = [(i, i - 1) for i in range(len(verts))]
if edges:
- edges[0]= (0,len(verts)-1)
+ edges[0] = (0, len(verts) - 1)
if not verts:
return []
-
- edges_used= set()
- edges_doubles= set()
+ edges_used = set()
+ edges_doubles = set()
# We need to check if any edges are used twice location based.
for ed in edges:
- edkey= ed_key_mlen(verts[ed[0]], verts[ed[1]])
+ edkey = ed_key_mlen(verts[ed[0]], verts[ed[1]])
if edkey in edges_used:
edges_doubles.add(edkey)
else:
@@ -117,118 +118,117 @@
# Store a list of unconnected loop segments split by double edges.
# will join later
- loop_segments= []
+ loop_segments = []
- v_prev= verts[0]
- context_loop= [v_prev]
- loop_segments= [context_loop]
+ v_prev = verts[0]
+ context_loop = [v_prev]
+ loop_segments = [context_loop]
for v in verts:
- if v!=v_prev:
+ if v != v_prev:
# Are we crossing an edge we removed?
if ed_key_mlen(v, v_prev) in edges_doubles:
- context_loop= [v]
+ context_loop = [v]
loop_segments.append(context_loop)
else:
- if context_loop and context_loop[-1][1]==v[1]:
+ if context_loop and context_loop[-1][1] == v[1]:
#raise "as"
pass
else:
context_loop.append(v)
- v_prev= v
+ v_prev = v
# Now join loop segments
- def join_seg(s1,s2):
- if s2[-1][1]==s1[0][1]: #
- s1,s2= s2,s1
- elif s1[-1][1]==s2[0][1]:
+ def join_seg(s1, s2):
+ if s2[-1][1] == s1[0][1]:
+ s1, s2 = s2, s1
+ elif s1[-1][1] == s2[0][1]:
pass
else:
return False
# If were stuill here s1 and s2 are 2 segments in the same polyline
- s1.pop() # remove the last vert from s1
- s1.extend(s2) # add segment 2 to segment 1
+ s1.pop() # remove the last vert from s1
+ s1.extend(s2) # add segment 2 to segment 1
- if s1[0][1]==s1[-1][1]: # remove endpoints double
+ if s1[0][1] == s1[-1][1]: # remove endpoints double
s1.pop()
- s2[:]= [] # Empty this segment s2 so we dont use it again.
+ s2[:] = [] # Empty this segment s2 so we dont use it again.
return True
- joining_segments= True
+ joining_segments = True
while joining_segments:
- joining_segments= False
- segcount= len(loop_segments)
+ joining_segments = False
+ segcount = len(loop_segments)
- for j in range(segcount-1, -1, -1): #reversed(range(segcount)):
- seg_j= loop_segments[j]
+ for j in range(segcount - 1, -1, -1): # reversed(range(segcount)):
+ seg_j = loop_segments[j]
if seg_j:
- for k in range(j-1, -1, -1): # reversed(range(j)):
+ for k in range(j - 1, -1, -1): # reversed(range(j)):
if not seg_j:
break
- seg_k= loop_segments[k]
+ seg_k = loop_segments[k]
if seg_k and join_seg(seg_j, seg_k):
- joining_segments= True
+ joining_segments = True
- loop_list= loop_segments
+ loop_list = loop_segments
for verts in loop_list:
- while verts and verts[0][1]==verts[-1][1]:
+ while verts and verts[0][1] == verts[-1][1]:
verts.pop()
- loop_list= [verts for verts in loop_list if len(verts)>2]
+ loop_list = [verts for verts in loop_list if len(verts) > 2]
# DONE DEALING WITH LOOP FIXING
-
# vert mapping
- vert_map= [None]*len(indices)
- ii=0
+ vert_map = [None] * len(indices)
+ ii = 0
for verts in loop_list:
- if len(verts)>2:
+ if len(verts) > 2:
for i, vert in enumerate(verts):
- vert_map[i+ii]= vert[2]
- ii+=len(verts)
+ vert_map[i + ii] = vert[2]
+ ii += len(verts)
- fill= tesselate_polygon([ [v[0] for v in loop] for loop in loop_list ])
+ fill = tesselate_polygon([[v[0] for v in loop] for loop in loop_list])
#draw_loops(loop_list)
#raise 'done loop'
# map to original indices
- fill= [[vert_map[i] for i in reversed(f)] for f in fill]
+ fill = [[vert_map[i] for i in reversed(f)] for f in fill]
-
if not fill:
print('Warning Cannot scanfill, fallback on a triangle fan.')
- fill= [ [0, i-1, i] for i in range(2, len(indices)) ]
+ fill = [[0, i - 1, i] for i in range(2, len(indices))]
else:
# Use real scanfill.
# See if its flipped the wrong way.
- flip= None
+ flip = None
for fi in fill:
if flip != None:
break
for i, vi in enumerate(fi):
- if vi==0 and fi[i-1]==1:
- flip= False
+ if vi == 0 and fi[i - 1] == 1:
+ flip = False
break
- elif vi==1 and fi[i-1]==0:
- flip= True
+ elif vi == 1 and fi[i - 1] == 0:
+ flip = True
break
if not flip:
for i, fi in enumerate(fill):
- fill[i]= tuple([ii for ii in reversed(fi)])
+ fill[i] = tuple([ii for ii in reversed(fi)])
return fill
+
def line_value(line_split):
'''
Returns 1 string represneting the value for this line
None will be returned if theres only 1 word
'''
- length= len(line_split)
+ length = len(line_split)
if length == 1:
return None
@@ -236,12 +236,12 @@
return line_split[1]
elif length > 2:
- return ' '.join( line_split[1:] )
+ return ' '.join(line_split[1:])
def obj_image_load(imagepath, DIR, IMAGE_SEARCH):
if '_' in imagepath:
- image= load_image(imagepath.replace('_', ' '), DIR)
+ image = load_image(imagepath.replace('_', ' '), DIR)
if image:
return image
@@ -275,14 +275,14 @@
Create all the used materials in this obj,
assign colors and images to the materials from all referenced material libs
'''
- DIR= os.path.dirname(filepath)
+ DIR = os.path.dirname(filepath)
#==================================================================================#
# This function sets textures defined in .mtl file #
#==================================================================================#
def load_material_image(blender_material, context_material_name, imagepath, type):
- texture= bpy.data.textures.new(name=type, type='IMAGE')
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list