Changeset View
Changeset View
Standalone View
Standalone View
mesh_extra_tools/mesh_extrude_and_reshape.py
| Show First 20 Lines • Show All 298 Lines • ▼ Show 20 Lines | def modal(self, context, event): | ||||
| v1, v2 = e.verts | v1, v2 = e.verts | ||||
| lf1 = set(v1.link_faces) | lf1 = set(v1.link_faces) | ||||
| lf2 = set(v2.link_faces) | lf2 = set(v2.link_faces) | ||||
| rlfe = lf1.intersection(lf2) | rlfe = lf1.intersection(lf2) | ||||
| for f in rlfe.difference(lfe): | for f in rlfe.difference(lfe): | ||||
| nf = bmesh.utils.face_split(f, v1, v2) | nf = bmesh.utils.face_split(f, v1, v2) | ||||
| # sp_faces2.update({f, nf[0]}) | # sp_faces2.update({f, nf[0]}) | ||||
| bmesh.update_edit_mesh(self.mesh, tessface=True, destructive=True) | bmesh.update_edit_mesh(self.mesh, loop_triangles=True, destructive=True) | ||||
| return {'FINISHED'} | return {'FINISHED'} | ||||
| if self.cancel: | if self.cancel: | ||||
| return {'FINISHED'} | return {'FINISHED'} | ||||
| self.cancel = event.type in {'ESC', 'NDOF_BUTTON_ESC'} | self.cancel = event.type in {'ESC', 'NDOF_BUTTON_ESC'} | ||||
| self.confirm = event.type in {'LEFTMOUSE', 'RET', 'NUMPAD_ENTER'} | self.confirm = event.type in {'LEFTMOUSE', 'RET', 'NUMPAD_ENTER'} | ||||
| return {'PASS_THROUGH'} | return {'PASS_THROUGH'} | ||||
| def execute(self, context): | def execute(self, context): | ||||
| Show All 24 Lines | def execute(self, context): | ||||
| for face in ret_dict['faces']: | for face in ret_dict['faces']: | ||||
| self.bm.faces.active = face | self.bm.faces.active = face | ||||
| face.select = True | face.select = True | ||||
| sface = face | sface = face | ||||
| dfaces = bmesh.ops.dissolve_edges( | dfaces = bmesh.ops.dissolve_edges( | ||||
| self.bm, edges=geom, use_verts=True, use_face_split=False | self.bm, edges=geom, use_verts=True, use_face_split=False | ||||
| ) | ) | ||||
| bmesh.update_edit_mesh(self.mesh, tessface=True, destructive=True) | bmesh.update_edit_mesh(self.mesh, loop_triangles=True, destructive=True) | ||||
| bpy.ops.transform.translate( | bpy.ops.transform.translate( | ||||
| 'INVOKE_DEFAULT', constraint_axis=(False, False, True), | 'INVOKE_DEFAULT', constraint_axis=(False, False, True), | ||||
| constraint_orientation='NORMAL', release_confirm=True | constraint_orientation='NORMAL', release_confirm=True | ||||
| ) | ) | ||||
| context.window_manager.modal_handler_add(self) | context.window_manager.modal_handler_add(self) | ||||
| self.cancel = False | self.cancel = False | ||||
| Show All 22 Lines | |||||