[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