Switch Selection Faces <--> Edges

 From:  Frenchy Pilou (PILOU)
10372.1 
script: /* switch selection from a face to its edges */ var gd = moi.geometryDatabase; var faces = gd.getSelectedObjects().getFaces(); gd.deselectAll(); for ( var i = 0; i < faces.length; ++i ) faces.item(i).getEdges().setProperty( 'selected', true );



script: /* Switch edge selection to face selection */ var processed_faces = [], processed_edges = []; var edges = moi.geometryDatabase.getSelectedObjects().getEdges(); for ( var i = 0; i < edges.length; ++i ) { var edge = edges.item(i); var faces = edge.getFacesOfEdge(); for ( var j = 0; j < faces.length; ++j ) { var face = faces.item(j); if ( processed_faces[face.id] ) { continue; } processed_faces[face.id] = true; var all_selected = true; var these_edges = face.getEdges(); for ( var k = 0; k < these_edges.length; ++k ) { var this_edge = these_edges.item(k); if ( !this_edge.selected ) { all_selected = false; break; } } if ( all_selected ) { for ( var k = 0; k < these_edges.length; ++k ) { var this_edge = these_edges.item(k); processed_edges[this_edge.id] = true; } face.selected = true; } } } for ( var i = 0; i < edges.length; ++i ) { var edge = edges.item(i); if ( processed_edges[edge.id] ) { edge.selected = false; } }

Remark : no need to click twice on the commun edges, orphan edges don't select any faces!




That version above is compacted ready to copy/paste into a keyboard shortcut. The uncompacted version is like this:


var processed_faces = [], processed_edges = [];

var edges = moi.geometryDatabase.getSelectedObjects().getEdges();

for ( var i = 0; i < edges.length; ++i )
{
var edge = edges.item(i);
var faces = edge.getFacesOfEdge();

for ( var j = 0; j < faces.length; ++j )

{
var face = faces.item(j);
if ( processed_faces[face.id] ) { continue; }
processed_faces[face.id] = true;
var all_selected = true;
var these_edges = face.getEdges();

for ( var k = 0; k < these_edges.length; ++k )

{
var this_edge = these_edges.item(k);
if ( !this_edge.selected )
{
all_selected = false;
break;
}
}

if ( all_selected )
{
for ( var k = 0; k < these_edges.length; ++k )
{
var this_edge = these_edges.item(k);
processed_edges[this_edge.id] = true;
}
face.selected = true;
}
}
}

for ( var i = 0; i < edges.length; ++i )
{
var edge = edges.item(i);
if ( processed_edges[edge.id] ) { edge.selected = false; }
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All