[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2525] branches/geodesic_domes/vefm_259 .py: adjusted for basic working version 0.3
Peter K.H. Gragert
pkhgragert at gmail.com
Tue Oct 25 17:30:05 CEST 2011
Revision: 2525
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2525
Author: pkhg
Date: 2011-10-25 15:30:05 +0000 (Tue, 25 Oct 2011)
Log Message:
-----------
adjusted for basic working version 0.3
Modified Paths:
--------------
branches/geodesic_domes/vefm_259.py
Modified: branches/geodesic_domes/vefm_259.py
===================================================================
--- branches/geodesic_domes/vefm_259.py 2011-10-25 15:29:20 UTC (rev 2524)
+++ branches/geodesic_domes/vefm_259.py 2011-10-25 15:30:05 UTC (rev 2525)
@@ -231,17 +231,11 @@
#dotproduct is misleading name, it is the hook between two vectors!
def dotproduct(self,v1,v2):
- # print("dp ",v1.x,v1.y,v1.z," ",v2.x,v2.y,v2.z)
- # print("v1 length",v1.length)
- # print("v2 length",v2.length)
-
v1.findlength()
v2.findlength()
if v1.length == 0 or v2.length == 0:
print("\nPKHG warning, =========== at least one zero vector 0.0 used")
return 0.0
- # print("v1 length",v1.length)
- # print("v2 length",v2.length)
dot=(v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z)
costheta = dot/(v1.length*v2.length)
pkhgtmp = v1.vector.dot(v2.vector)
@@ -396,7 +390,6 @@
class mesh:
def __init__(self , name="pkhg_test"):
- print("\n\n>>>>>>>> mesh.__init__ called <<<<<<<")
self.name = name #pkhg test phase at least ;-)
self.verts=[]
self.edges=[]
@@ -438,14 +431,7 @@
def sign(self,d): ## Works out the sign of a number.
return sgn(d)
- '''
- if d<0:
- return -1
- elif d>0:
- return 1
- elif d==0:
- return 0
- '''
+
def ellipsecomp(self,efactor,theta):
if theta==self.a90:
result = self.a90
@@ -676,8 +662,8 @@
self.vertedgeflag = 0
self.vertfaceflag = 0
self.faceedgeflag = 0
+
def class2(self):
-
self.class2verts=[]
self.class2edges=[]
self.class2faces=[]
@@ -690,9 +676,7 @@
self.edges[i].index = i
for i in range(len(self.faces)):
self.faces[i].index = i
-
self.connectivity()
-
for currentface in self.faces:
currentface.docorners()
newvert = average(currentface.vertices).centroid()
@@ -703,7 +687,6 @@
self.edges.append(newedge1)
self.edges.append(newedge2)
self.edges.append(newedge3)
-
for currentedge in range(newedgestart):
self.edges[currentedge].a = self.verts[self.edges[currentedge].faces[0].index+newvertstart]
self.edges[currentedge].b = self.verts[self.edges[currentedge].faces[1].index+newvertstart]
@@ -729,7 +712,6 @@
self.vertfaceflag = 0
self.faceedgeflag = 0
-
def dual(self):
self.dualverts=[]
# self.dualedges=[]
@@ -848,7 +830,6 @@
up = candidate.normal*self.coords[i][1]
line=[]
for j in range(len(candidate.vertices)):
-
dotfac = candidate.corners[j][3]*0.5
vec=(candidate.spokes[j]*(self.coords[i][0]/sin(dotfac))) #self.coords[i][0])#(self.coords[i][0]/sin(dotfac)))#+up
newvert = candidate.vertices[j]+vec+up
@@ -856,14 +837,11 @@
self.verts.append(newvert)
grid.append(line)
if self.endtype==4:
-
line=[]
for i in range(len(candidate.vertices)):
-
vert = self.verts[candidate.vertices[i].index+self.ghoststart]
line.append(vert)
# self.verts.append(vert)
-
grid.append(line)
for line in grid:
line.append(line[0])
@@ -890,32 +868,34 @@
for i in range(len(ring)-1):
newface = face([newvert,ring[i],ring[i+1]])
self.faces.append(newface)
+
class importmesh(mesh):
-
def __init__(self,meshname,breakquadflag):
mesh.__init__(self)
# print("mesh and breakquad",meshname,breakquadflag)
# impmesh = NMesh.GetRawFromObject(meshname)
impmesh = bpy.data.objects[meshname]
+ copied_mesh = None
+ if breakquadflag:
+ name = impmesh.name
+ impmesh.name = "Original_" + name
+#PKHG TODO use a copy? bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0,0}))
+#PKHG TODO use a copy? copied_mesh = bpy.context.active_object
+ bpy.ops.object.mode_set(mode='EDIT')
+ bpy.ops.mesh.quads_convert_to_tris()
+ bpy.ops.object.mode_set(mode='OBJECT')
+
for v in impmesh.data.vertices:
-# x = v.co[0]
-# y = v.co[1]
-# z = v.co[2]
-
-# vert = vertex((x,y,z))
vert = vertex(v.co)
+ vert.index = v.index
self.verts.append(vert)
- indexcount = 0
-
-# for f in impmesh.faces:
for f in impmesh.data.faces:
temp=[]
- for vert in f.vertices:
- a = self.verts[vert]
+ for vert in f.vertices: #PKHG a list of indice
+ a = self.verts[vert] #PKHG verts contains alrady vetex objects
temp.append(a)
newface = face(temp)
- newface.index = indexcount
- indexcount += 1
+ newface.index = f.index #indexcount
self.faces.append(newface)
self.dovertedge()
self.dovertface()
@@ -924,12 +904,13 @@
for i in range(len(self.verts)):
self.temp.append([])
self.verts[i].index = i
+ ''' see above! PKHG something is missing in breakquad
if breakquadflag:
for facey in self.faces:
if len(facey.vertices)>3:
#print("***INFO***quad found")
self.breakquad(facey)
-
+ #'''
for i in range(len(self.verts)):
target = self.surroundingverts(self.verts[i])
for j in range(len(target)): ## go through those verts
@@ -985,20 +966,15 @@
class strut(mesh):
def __init__(self,base,struttype,width,height,length,widthtog,heighttog,lengthtog,meshname,stretchflag,lift):
mesh.__init__(self)
-
## put in strut prep stuff here
if struttype==None:
return
-
total = 0
divvy = len(base.faces[0].edges)
for lengf in base.faces[0].edges:
-
lengf.vect.findlength()
total = total+lengf.vect.length
-
yardstick = total/divvy
-
if widthtog:
self.width = width
else:
@@ -1011,13 +987,11 @@
self.shrink = length
else:
self.shrink = length#*yardstick
-
if not base.facenormalflag:
for currentface in base.faces:
currentface.docorners()
currentface.findnormal()
base.facenormalflag = 1
-
for edj in base.edges:
edj.findnormal()
side = edge(edj.a,edj.b)
@@ -1027,10 +1001,8 @@
print("meshname",meshname )
template = importmesh(meshname,0)
-
maxx = 0
minx = 0
-
for vert in template.verts:
if vert.x>maxx:
maxx = vert.x
@@ -1056,9 +1028,7 @@
elif point.x == 0.0:
be = edj.unit*self.shrink*point.x
de = ay + be + ce
-
newvert = centre + de
-
self.verts.append(newvert)
for edjy in template.edges:
one = edjy.a.index+start
@@ -1079,7 +1049,6 @@
class hub(mesh):
def __init__(self,base,hubtype,width,height,length,widthtog,heighttog,lengthtog,meshname):
mesh.__init__(self)
-
## put in strut prep stuff here
if hubtype==None:
return
@@ -1101,13 +1070,11 @@
self.shrink = length
else:
self.shrink = length * yardstick
-
if not base.facenormalflag:
for currentface in base.faces:
currentface.docorners()
currentface.findnormal()
base.facenormalflag = 1
-
for apex in base.verts:
apex.findnormal()
side = edge(apex.edges[0].a,apex.edges[0].b)
@@ -1124,22 +1091,16 @@
ce = apex.cross*point.y*self.width
be = apex.unit*point.x*self.shrink
de = ay+be+ce
-
newvert = centre+de
-
self.verts.append(newvert)
for edjy in template.edges:
-
one = edjy.a.index+start
two = edjy.b.index+start
-
newedge = edge(self.verts[one],self.verts[two])
self.edges.append(newedge)
-
for facey in template.faces:
faceverts=[]
for verty in facey.vertices:
-
index = verty.index+start
faceverts.append(self.verts[index])
newface = face(faceverts)
@@ -1150,10 +1111,12 @@
#???PKHG TODO Nmesh used yet wrong!
def finalfill(source,target):
+ if source == target: #PKHG: otherewise >infinite< loop
+ return
count = 0
for point in source.verts:
# newvert = NMesh.Vert(point.x,point.y,point.z)
- newvert = vertex((point.x,point.y,point.z))
+ newvert = vertex(point.vector)
target.verts.append(newvert)
point.index = count
count = count+1
@@ -1163,7 +1126,7 @@
if row >= 5:
newvert = average(facey.vertices).centroid()
# centre = NMesh.Vert(newvert.x,newvert.y,newvert.z)
- centre = vertex((newvert.x,newvert.y,newvert.z))
+ centre = vertex(newvert)
target.verts.append(centre)
for i in range(row):
# f = NMesh.Face()
More information about the Bf-extensions-cvs
mailing list