[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [528] contrib/py/scripts/addons: sorry, removed (3) from CursorToEdgeIntersection.py

Brendon Murphy meta.androcto1 at gmail.com
Tue Mar 30 13:26:11 CEST 2010


Revision: 528
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=528
Author:   meta-androcto
Date:     2010-03-30 13:26:11 +0200 (Tue, 30 Mar 2010)

Log Message:
-----------
sorry, removed (3) from CursorToEdgeIntersection.py

Added Paths:
-----------
    contrib/py/scripts/addons/cursor_to_edge_intersection.py

Removed Paths:
-------------
    contrib/py/scripts/addons/cursor_to_edge_intersection(3).py

Deleted: contrib/py/scripts/addons/cursor_to_edge_intersection(3).py
===================================================================
--- contrib/py/scripts/addons/cursor_to_edge_intersection(3).py	2010-03-30 11:24:16 UTC (rev 527)
+++ contrib/py/scripts/addons/cursor_to_edge_intersection(3).py	2010-03-30 11:26:11 UTC (rev 528)
@@ -1,145 +0,0 @@
-# cursor_to_edge_intersection.py Copyright (C) 2009-2010, Keith (Wahooney) Boshoff
-# parts based on Paul Bourke's Shortest Line Between 2 lines
-# ***** BEGIN GPL LICENSE BLOCK *****
-#
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-# ***** END GPL LICENCE BLOCK *****
-
-bl_addon_info = {
-    'name': 'Cursor to Edge Intersection',
-    'author': 'Keith (Wahooney) Boshoff',
-    'version': '1.0',
-    'blender': (2, 5, 3),
-    'location': 'Snap',
-    'url': '',
-    'category': 'Cursor'}
-
-from Mathutils import Vector, Matrix
-import math
-import bpy
-
-def abs(val):
-    if val > 0:
-        return val
-    return -val
-
-def LineLineIntersect (p1, p2, p3, p4):
-    # based on Paul Bourke's Shortest Line Between 2 lines
-    
-    min = 0.0000001
-    
-    v1 = Vector(p1.x - p3.x, p1.y - p3.y, p1.z - p3.z)
-    v2 = Vector(p4.x - p3.x, p4.y - p3.y, p4.z - p3.z)
-    
-    if abs(v2.x) < min and abs(v2.y) < min and abs(v2.z)  < min:
-        return None
-        
-    v3 = Vector(p2.x - p1.x, p2.y - p1.y, p2.z - p1.z)
-    
-    if abs(v3.x) < min and abs(v3.y) < min and abs(v3.z) < min:
-        return None
-
-    d1 = v1.dot(v2)
-    d2 = v2.dot(v3)
-    d3 = v1.dot(v3)
-    d4 = v2.dot(v2)
-    d5 = v3.dot(v3)
-
-    d = d5 * d4 - d2 * d2
-    
-    if abs(d) < min:
-        return None
-        
-    n = d1 * d2 - d3 * d4
-
-    mua = n / d
-    mub = (d1 + d2 * (mua)) / d4
-
-    return [Vector(p1.x + mua * v3.x, p1.y + mua * v3.y, p1.z + mua * v3.z), 
-        Vector(p3.x + mub * v2.x, p3.y + mub * v2.y, p3.z + mub * v2.z)]
-
-def edgeIntersect(context, operator):
-    
-    obj = context.active_object
-    
-    if (obj.type != "MESH"):
-        operator.report({'ERROR'}, "Object must be a mesh")
-        return None
-    
-    edges = [];
-    mesh = obj.data
-    verts = mesh.verts
-
-    is_editmode = (obj.mode == 'EDIT')
-    if is_editmode:
-        bpy.ops.object.mode_set(mode='OBJECT')
-    
-    for e in mesh.edges:
-        if e.selected:
-            edges.append(e)
-
-    if is_editmode:
-        bpy.ops.object.mode_set(mode='EDIT')
-            
-    if len(edges) != 2:
-        operator.report({'ERROR'}, "Operator requires exactly 2 edges to be selected.")
-        return
-        
-    line = LineLineIntersect(verts[edges[0].verts[0]].co, verts[edges[0].verts[1]].co, verts[edges[1].verts[0]].co, verts[edges[1].verts[1]].co)
-
-    if (line == None):
-        operator.report({'ERROR'}, "Selected edges are parallel.")
-        return
-
-    tm = obj.matrix.copy()
-    point = ((line[0] + line[1]) / 2)
-    point = tm * point
-
-    context.scene.cursor_location = point
-            
-    return point
-    
-class CursorToEdgeIntersection(bpy.types.Operator):
-    '''Finds the mid-point of the shortest distance between two edges, the point may not lie
-    between the edges as the edges are projected beyond their bounds'''
-    
-    bl_idname = "view3d.snap_cursor_to_edge_intersection"
-    bl_label = "Cursor to Edge Intersection"
-
-    def poll(self, context):
-        obj = context.active_object
-        return obj != None and obj.type == 'MESH'
-
-    def execute(self, context):
-        edgeIntersect(context, self)
-        return {'FINISHED'}
-
-
-menu_func = (lambda self,
-            context: self.layout.operator(CursorToEdgeIntersection.bl_idname,
-            text="Cursor to Edge intersection"))
-
-def register():
-    bpy.types.register(CursorToEdgeIntersection)
-    bpy.types.VIEW3D_MT_snap.append(menu_func)
-
-def unregister():
-    bpy.types.unregister(CursorToEdgeIntersection)
-    bpy.types.VIEW3D_MT_snap.append(menu_func)
-
-if __name__ == "__main__":
-    register()
\ No newline at end of file

Added: contrib/py/scripts/addons/cursor_to_edge_intersection.py
===================================================================
--- contrib/py/scripts/addons/cursor_to_edge_intersection.py	                        (rev 0)
+++ contrib/py/scripts/addons/cursor_to_edge_intersection.py	2010-03-30 11:26:11 UTC (rev 528)
@@ -0,0 +1,145 @@
+# cursor_to_edge_intersection.py Copyright (C) 2009-2010, Keith (Wahooney) Boshoff
+# parts based on Paul Bourke's Shortest Line Between 2 lines
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+
+bl_addon_info = {
+    'name': 'Cursor to Edge Intersection',
+    'author': 'Keith (Wahooney) Boshoff',
+    'version': '1.0',
+    'blender': (2, 5, 3),
+    'location': 'Snap',
+    'url': '',
+    'category': 'Cursor'}
+
+from Mathutils import Vector, Matrix
+import math
+import bpy
+
+def abs(val):
+    if val > 0:
+        return val
+    return -val
+
+def LineLineIntersect (p1, p2, p3, p4):
+    # based on Paul Bourke's Shortest Line Between 2 lines
+    
+    min = 0.0000001
+    
+    v1 = Vector(p1.x - p3.x, p1.y - p3.y, p1.z - p3.z)
+    v2 = Vector(p4.x - p3.x, p4.y - p3.y, p4.z - p3.z)
+    
+    if abs(v2.x) < min and abs(v2.y) < min and abs(v2.z)  < min:
+        return None
+        
+    v3 = Vector(p2.x - p1.x, p2.y - p1.y, p2.z - p1.z)
+    
+    if abs(v3.x) < min and abs(v3.y) < min and abs(v3.z) < min:
+        return None
+
+    d1 = v1.dot(v2)
+    d2 = v2.dot(v3)
+    d3 = v1.dot(v3)
+    d4 = v2.dot(v2)
+    d5 = v3.dot(v3)
+
+    d = d5 * d4 - d2 * d2
+    
+    if abs(d) < min:
+        return None
+        
+    n = d1 * d2 - d3 * d4
+
+    mua = n / d
+    mub = (d1 + d2 * (mua)) / d4
+
+    return [Vector(p1.x + mua * v3.x, p1.y + mua * v3.y, p1.z + mua * v3.z), 
+        Vector(p3.x + mub * v2.x, p3.y + mub * v2.y, p3.z + mub * v2.z)]
+
+def edgeIntersect(context, operator):
+    
+    obj = context.active_object
+    
+    if (obj.type != "MESH"):
+        operator.report({'ERROR'}, "Object must be a mesh")
+        return None
+    
+    edges = [];
+    mesh = obj.data
+    verts = mesh.verts
+
+    is_editmode = (obj.mode == 'EDIT')
+    if is_editmode:
+        bpy.ops.object.mode_set(mode='OBJECT')
+    
+    for e in mesh.edges:
+        if e.selected:
+            edges.append(e)
+
+    if is_editmode:
+        bpy.ops.object.mode_set(mode='EDIT')
+            
+    if len(edges) != 2:
+        operator.report({'ERROR'}, "Operator requires exactly 2 edges to be selected.")
+        return
+        
+    line = LineLineIntersect(verts[edges[0].verts[0]].co, verts[edges[0].verts[1]].co, verts[edges[1].verts[0]].co, verts[edges[1].verts[1]].co)
+
+    if (line == None):
+        operator.report({'ERROR'}, "Selected edges are parallel.")
+        return
+
+    tm = obj.matrix.copy()
+    point = ((line[0] + line[1]) / 2)
+    point = tm * point
+
+    context.scene.cursor_location = point
+            
+    return point
+    
+class CursorToEdgeIntersection(bpy.types.Operator):
+    '''Finds the mid-point of the shortest distance between two edges, the point may not lie
+    between the edges as the edges are projected beyond their bounds'''
+    
+    bl_idname = "view3d.snap_cursor_to_edge_intersection"
+    bl_label = "Cursor to Edge Intersection"
+
+    def poll(self, context):
+        obj = context.active_object
+        return obj != None and obj.type == 'MESH'
+
+    def execute(self, context):
+        edgeIntersect(context, self)
+        return {'FINISHED'}
+
+
+menu_func = (lambda self,
+            context: self.layout.operator(CursorToEdgeIntersection.bl_idname,
+            text="Cursor to Edge intersection"))
+
+def register():
+    bpy.types.register(CursorToEdgeIntersection)
+    bpy.types.VIEW3D_MT_snap.append(menu_func)
+
+def unregister():
+    bpy.types.unregister(CursorToEdgeIntersection)
+    bpy.types.VIEW3D_MT_snap.append(menu_func)
+
+if __name__ == "__main__":
+    register()
\ No newline at end of file




More information about the Bf-extensions-cvs mailing list