1 # SPDX-License-Identifier: GPL-2.0-or-later
6 from mathutils
import geometry
9 def add_vertex_to_intersection():
11 obj
= bpy
.context
.object
13 bm
= bmesh
.from_edit_mesh(me
)
15 edges
= [e
for e
in bm
.edges
if e
.select
]
18 [[v1
, v2
], [v3
, v4
]] = [[v
.co
for v
in e
.verts
] for e
in edges
]
20 iv
= geometry
.intersect_line_line(v1
, v2
, v3
, v4
)
22 iv
= (iv
[0] + iv
[1]) / 2
25 bm
.verts
.ensure_lookup_table()
27 bm
.verts
[-1].select
= True
28 bmesh
.update_edit_mesh(me
)
31 class TCVert2Intersection(bpy
.types
.Operator
):
32 '''Add a vertex at the intersection (projected or real) of two selected edges'''
33 bl_idname
= 'tinycad.vertintersect'
34 bl_label
= 'V2X vertex to intersection'
35 bl_options
= {'REGISTER', 'UNDO'}
38 def poll(cls
, context
):
39 obj
= context
.active_object
40 return obj
is not None and obj
.type == 'MESH' and obj
.mode
== 'EDIT'
42 def execute(self
, context
):
43 add_vertex_to_intersection()