python vert2intersection.py

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python vert2intersection.py相关的知识,希望对你有一定的参考价值。

'''
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_info = {
    "name": "Vert tools : vert 2 intersection",
    "author": "zeffii",
    "version": (0, 0, 2),
    "blender": (2, 6, 8),
    "category": "Mesh",
    "location": "View3D > EditMode > (w) Specials",
    "wiki_url": "",
    "tracker_url": ""
}
 
import bmesh
import bpy
from mathutils import geometry

def add_vertex_to_intersection():

    obj = bpy.context.object
    me = obj.data
    bm = bmesh.from_edit_mesh(me)

    edges = [e for e in bm.edges if e.select]

    if len(edges) == 2:
        [[v1, v2], [v3, v4]] = [[v.co for v in e.verts] for e in edges]

        iv = geometry.intersect_line_line(v1, v2, v3, v4)
        iv = (iv[0] + iv[1]) / 2
        bm.verts.new(iv)
        bmesh.update_edit_mesh(me)

 
class Vert2Intersection(bpy.types.Operator):
 
    bl_idname = 'mesh.vertintersect'
    bl_label = bl_info['name']
    bl_options = {'REGISTER', 'UNDO'}
 
    @classmethod
    def poll(self, context):
        obj = context.active_object
        return obj != None and obj.type == 'MESH' and obj.mode == 'EDIT'
 
    def execute(self, context):
        add_vertex_to_intersection()
        return {'FINISHED'}
 
 
def menu_func(self, context):
    self.layout.operator(Vert2Intersection.bl_idname, text="Place vertex at Intersection")
 
def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_edit_mesh_specials.append(menu_func)
 
def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_edit_mesh_specials.remove(menu_func)
 
 
if __name__ == "__main__":
    register()

以上是关于python vert2intersection.py的主要内容,如果未能解决你的问题,请参考以下文章

代写python,代写python编程,python代写,python编程代写,留学生python代写

001--python全栈--基础知识--python安装

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python

Python 介绍