Skip to content
Snippets Groups Projects
Commit 91fd43c1 authored by Jean-François Remacle's avatar Jean-François Remacle
Browse files

allow multiple holes selection to define surfaces in the GUI

parent 2e8aec53
No related branches found
No related tags found
No related merge requests found
...@@ -154,6 +154,23 @@ void List_Sort(List_T * liste, int (*fcmp) (const void *a, const void *b)) ...@@ -154,6 +154,23 @@ void List_Sort(List_T * liste, int (*fcmp) (const void *a, const void *b))
qsort(liste->array, liste->n, liste->size, fcmp); qsort(liste->array, liste->n, liste->size, fcmp);
} }
void List_Unique(List_T * liste, int (*fcmp) (const void *a, const void *b))
{
if(liste->isorder != 1) {
List_Sort(liste, fcmp);
liste->isorder = 1;
}
if(!List_Nbr(liste))
return;
int write_index=0;
for( int i=1; i < List_Nbr(liste); i++){
void *data=List_Pointer(liste,i);
if((fcmp(data,(void*)List_Pointer(liste,write_index))))
List_Write(liste,++write_index,data);
}
liste->n=write_index+1;
}
int List_Search(List_T * liste, void *data, int List_Search(List_T * liste, void *data,
int (*fcmp) (const void *a, const void *b)) int (*fcmp) (const void *a, const void *b))
{ {
......
...@@ -35,6 +35,7 @@ void *List_Pointer_NoChange(List_T *liste, int index); ...@@ -35,6 +35,7 @@ void *List_Pointer_NoChange(List_T *liste, int index);
void *List_Pointer_Fast(List_T *liste, int index); void *List_Pointer_Fast(List_T *liste, int index);
void *List_Pointer_Test(List_T *liste, int index); void *List_Pointer_Test(List_T *liste, int index);
void List_Sort(List_T *liste, int (*fcmp)(const void *a, const void *b)); void List_Sort(List_T *liste, int (*fcmp)(const void *a, const void *b));
void List_Unique(List_T *liste, int (*fcmp)(const void *a, const void *b));
int List_Search(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b)); int List_Search(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
int List_ISearch(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b)); int List_ISearch(List_T *liste, void *data, int (*fcmp)(const void *a, const void *b));
int List_ISearchSeq(List_T *liste, void * data, int (*fcmp)(const void *a, const void *b)); int List_ISearchSeq(List_T *liste, void * data, int (*fcmp)(const void *a, const void *b));
......
...@@ -940,9 +940,13 @@ static void add_new_surface_volume(int mode) ...@@ -940,9 +940,13 @@ static void add_new_surface_volume(int mode)
} }
} }
if(ib == 'l') { if(ib == 'l') {
int size = (type == ENT_LINE) ?
GUI::instance()->selectedEdges.size() :
GUI::instance()->selectedFaces.size();
for(int i=0;i<size;i++){
int num = (type == ENT_LINE) ? int num = (type == ENT_LINE) ?
GUI::instance()->selectedEdges[0]->tag() : GUI::instance()->selectedEdges[i]->tag() :
GUI::instance()->selectedFaces[0]->tag(); GUI::instance()->selectedFaces[i]->tag();
if(select_contour(type, num, List1)) { if(select_contour(type, num, List1)) {
if(type == ENT_LINE) if(type == ENT_LINE)
add_lineloop(List1, GModel::current()->getFileName(), &num); add_lineloop(List1, GModel::current()->getFileName(), &num);
...@@ -952,11 +956,13 @@ static void add_new_surface_volume(int mode) ...@@ -952,11 +956,13 @@ static void add_new_surface_volume(int mode)
List_Add(List2, &num); List_Add(List2, &num);
} }
} }
}
if(ib == 'r') { if(ib == 'r') {
Msg::Warning("Entity de-selection not supported yet during " Msg::Warning("Entity de-selection not supported yet during "
"surface/volume creation"); "surface/volume creation");
} }
} }
List_Unique(List2,fcmp_absint);
if(List_Nbr(List2)) { if(List_Nbr(List2)) {
switch (mode) { switch (mode) {
case 0: add_surf("Plane Surface", List2, case 0: add_surf("Plane Surface", List2,
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// Contributed by Bastien Gorissen // Contributed by Bastien Gorissen
#include <math.h> #include <math.h>
#include <stdlib.h>
#include "SOrientedBoundingBox.h" #include "SOrientedBoundingBox.h"
#include "GmshMatrix.h" #include "GmshMatrix.h"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment