[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56389] trunk/blender: select loose wasn' t working very usefully if you only wanted to select loose verts, now select loose verts/edges/faces depending on the selection mode.
Campbell Barton
ideasman42 at gmail.com
Mon Apr 29 18:59:54 CEST 2013
Revision: 56389
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56389
Author: campbellbarton
Date: 2013-04-29 16:59:53 +0000 (Mon, 29 Apr 2013)
Log Message:
-----------
select loose wasn't working very usefully if you only wanted to select loose verts, now select loose verts/edges/faces depending on the selection mode.
Modified Paths:
--------------
trunk/blender/doc/python_api/sphinx_doc_gen.py
trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
trunk/blender/source/blender/editors/mesh/editmesh_select.c
trunk/blender/source/blender/editors/mesh/mesh_intern.h
trunk/blender/source/blender/editors/mesh/mesh_ops.c
Modified: trunk/blender/doc/python_api/sphinx_doc_gen.py
===================================================================
--- trunk/blender/doc/python_api/sphinx_doc_gen.py 2013-04-29 16:20:49 UTC (rev 56388)
+++ trunk/blender/doc/python_api/sphinx_doc_gen.py 2013-04-29 16:59:53 UTC (rev 56389)
@@ -1045,7 +1045,7 @@
if prop.identifier in struct_blacklist:
continue
- type_descr = prop.get_type_description(class_fmt=":class:`%s`", collection_id=_BPY_PROP_COLLECTION_ID)
+ type_descr = prop.get_type_description(class_fmt=":class:`bpy.types.%s`", collection_id=_BPY_PROP_COLLECTION_ID)
fw(".. data:: %s\n\n" % prop.identifier)
if prop.description:
fw(" %s\n\n" % prop.description)
Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2013-04-29 16:20:49 UTC (rev 56388)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2013-04-29 16:59:53 UTC (rev 56389)
@@ -600,7 +600,7 @@
layout.operator("mesh.select_face_by_sides")
if context.scene.tool_settings.mesh_select_mode[2] is False:
layout.operator("mesh.select_non_manifold", text="Non Manifold")
- layout.operator("mesh.select_loose_verts", text="Loose Verts/Edges")
+ layout.operator("mesh.select_loose", text="Loose Geometry")
layout.operator_menu_enum("mesh.select_similar", "type", text="Similar")
layout.separator()
Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-04-29 16:20:49 UTC (rev 56388)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c 2013-04-29 16:59:53 UTC (rev 56389)
@@ -2684,44 +2684,67 @@
}
-static int edbm_select_loose_verts_exec(bContext *C, wmOperator *op)
+static int edbm_select_loose_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
BMEditMesh *em = BKE_editmesh_from_object(obedit);
- BMVert *eve;
- BMEdge *eed;
+ BMesh *bm = em->bm;
BMIter iter;
if (!RNA_boolean_get(op->ptr, "extend"))
EDBM_flag_disable_all(em, BM_ELEM_SELECT);
- BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
- if (!eve->e) {
- BM_vert_select_set(em->bm, eve, true);
+ if (em->selectmode & SCE_SELECT_VERTEX) {
+ BMVert *eve;
+ BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
+ if (!eve->e) {
+ BM_vert_select_set(bm, eve, true);
+ }
}
}
- BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) {
- if (!eed->l) {
- BM_edge_select_set(em->bm, eed, true);
+ if (em->selectmode & SCE_SELECT_EDGE) {
+ BMEdge *eed;
+ BM_ITER_MESH (eed, &iter, bm, BM_EDGES_OF_MESH) {
+ if (BM_edge_is_wire(eed)) {
+ BM_edge_select_set(bm, eed, true);
+ }
}
}
+ if (em->selectmode & SCE_SELECT_FACE) {
+ BMFace *efa;
+ BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) {
+ BMIter liter;
+ BMLoop *l;
+ bool is_loose = true;
+ BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
+ if (!BM_edge_is_boundary(l->e)) {
+ is_loose = false;
+ break;
+ }
+ }
+ if (is_loose) {
+ BM_face_select_set(bm, efa, true);
+ }
+ }
+ }
+
EDBM_selectmode_flush(em);
WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
return OPERATOR_FINISHED;
}
-void MESH_OT_select_loose_verts(wmOperatorType *ot)
+void MESH_OT_select_loose(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Select Loose Vertices/Edges";
- ot->description = "Select vertices with no edges nor faces, and edges with no faces";
- ot->idname = "MESH_OT_select_loose_verts";
+ ot->name = "Select Loose Geometry";
+ ot->description = "Select loose geometry based on the selection mode";
+ ot->idname = "MESH_OT_select_loose";
/* api callbacks */
- ot->exec = edbm_select_loose_verts_exec;
+ ot->exec = edbm_select_loose_exec;
ot->poll = ED_operator_editmesh;
/* flags */
Modified: trunk/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_intern.h 2013-04-29 16:20:49 UTC (rev 56388)
+++ trunk/blender/source/blender/editors/mesh/mesh_intern.h 2013-04-29 16:59:53 UTC (rev 56389)
@@ -138,7 +138,7 @@
void MESH_OT_select_linked(struct wmOperatorType *ot);
void MESH_OT_select_linked_pick(struct wmOperatorType *ot);
void MESH_OT_select_face_by_sides(struct wmOperatorType *ot);
-void MESH_OT_select_loose_verts(struct wmOperatorType *ot);
+void MESH_OT_select_loose(struct wmOperatorType *ot);
void MESH_OT_select_mirror(struct wmOperatorType *ot);
void MESH_OT_select_more(struct wmOperatorType *ot);
void MESH_OT_select_less(struct wmOperatorType *ot);
Modified: trunk/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_ops.c 2013-04-29 16:20:49 UTC (rev 56388)
+++ trunk/blender/source/blender/editors/mesh/mesh_ops.c 2013-04-29 16:59:53 UTC (rev 56389)
@@ -57,7 +57,7 @@
WM_operatortype_append(MESH_OT_hide);
WM_operatortype_append(MESH_OT_reveal);
WM_operatortype_append(MESH_OT_select_face_by_sides);
- WM_operatortype_append(MESH_OT_select_loose_verts);
+ WM_operatortype_append(MESH_OT_select_loose);
WM_operatortype_append(MESH_OT_select_mirror);
WM_operatortype_append(MESH_OT_normals_make_consistent);
WM_operatortype_append(MESH_OT_merge);
More information about the Bf-blender-cvs
mailing list