Changeset 958


Ignore:
Timestamp:
Feb 25, 2005, 1:44:53 PM (20 years ago)
Author:
duncan
Message:

adding more alpha shape control

Location:
inundation/ga/storm_surge/pmesh
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pmesh/mesh.py

    r935 r958  
    3030SET_COLOUR='red'
    3131
     32
     33#for alpha shapes boundary type
     34RAW = 0
     35REMOVE_HOLES = 1
     36REMOVE_SHARP_INDENTS = 2
     37REMOVE_PINCH_OFF = 3
    3238
    3339
     
    11921198        return newsegs
    11931199     
    1194     def autoSegment(self, alpha = None):
     1200    def autoSegment(self, alpha = None, boundary_type=REMOVE_PINCH_OFF):
    11951201        """
    11961202        Precon: There must be 3 or more vertices in the userVertices structure
     
    12011207            points.append((vertex.x,vertex.y))
    12021208        shape = alpha_shape.alpha_shape.Alpha_Shape(points, alpha = alpha)
     1209        shape.set_boundary_type(flag = boundary_type)
    12031210        boundary_segs = shape.get_boundary()
    12041211
  • inundation/ga/storm_surge/pmesh/pmesh.py

    r953 r958  
    2323DEFAULT_ATTRIBUTE = 'elevation'
    2424
     25#for alpha shapes
    2526NO_SELECTION = 0
    2627AUTO = 1
    2728SET_ALPHA = 2
     29
    2830
    2931class Draw(AppShell.AppShell):
     
    623625    def autoSegmentGiveAlphaButton (self, parent):
    624626        dialog = AutoSegmentDialog(self.canvas, self.meshLastAlpha)
    625         if dialog.var.get() == SET_ALPHA:
     627        if dialog.use_optimum.get() == SET_ALPHA:
    626628            if dialog.alphaValueOk:
    627                 self.autoSegment(alpha = dialog.alpha)
     629                self.autoSegment(alpha = dialog.alpha,
     630                                 boundary_type=dialog.boundary_type.get())
    628631            else:
    629632                 showerror('pMesh',
     
    631634        else:
    632635            self.autoSegment()
    633             
    634        
    635     def autoSegment (self, alpha = None):
     636           
     637       
     638    def autoSegment (self, alpha = None, boundary_type=mesh.REMOVE_PINCH_OFF):
    636639        """
    637640        add Segments to bound all vertices
     
    14491452        self.title("Automatically Add Segments")
    14501453
    1451         self.var = IntVar()
    1452         self.var.set(AUTO) # should initialise the radio buttons. It doesn't
    1453         #self.var.set(NO_SELECTION)
    1454         self.ck = Radiobutton(master, value = AUTO, variable=self.var)
     1454        self.use_optimum = IntVar()
     1455        self.use_optimum.set(AUTO) # should initialise the radio buttons.
     1456                                   #  It doesn't
     1457        self.boundary_type = IntVar()
     1458                                   
     1459        #self.use_optimum.set(NO_SELECTION)
     1460        self.ck = Radiobutton(master, value = AUTO, variable=self.use_optimum)
    14551461        self.ck.grid(row=1, column=0)
    14561462        Label(master, text='Use optimum alpha').grid(row=1, column=1, sticky=W)
    14571463
    1458         self.ck2 = Radiobutton(master, value = SET_ALPHA, variable=self.var)
     1464        self.ck2 = Radiobutton(master, value = SET_ALPHA,
     1465                               variable=self.use_optimum)
    14591466        self.ck2.grid(row=2, column=0)
    14601467       
     
    14711478        self.alpha_str.grid(row=2, column=3, sticky=W)
    14721479
     1480        #boundary type buttons
     1481        self.ck3 = Radiobutton(master, value = mesh.RAW,
     1482                               variable=self.boundary_type)
     1483        self.ck3.grid(row=3, column=0)
     1484        Label(master, text='Raw boundary').grid(row=3, column=1, sticky=W)
     1485        #
     1486        self.ck4 = Radiobutton(master, value = mesh.REMOVE_HOLES,
     1487                               variable=self.boundary_type)
     1488        self.ck4.grid(row=4, column=0)
     1489        Label(master, text='Remove small holes').grid(row=4,column=1, sticky=W)
     1490        #
     1491        self.ck5 = Radiobutton(master, value = mesh.REMOVE_SHARP_INDENTS,
     1492                               variable=self.boundary_type)
     1493        self.ck5.grid(row=5, column=0)
     1494        Label(master,
     1495              text='Remove small holes \n& sharp indents').grid(row=5,
     1496                                                              column=1,
     1497                                                              sticky=W)
     1498        #
     1499        self.ck6 = Radiobutton(master, value = mesh.REMOVE_PINCH_OFF,
     1500                               variable=self.boundary_type)
     1501        self.ck6.grid(row=6, column=0)
     1502        Label(master,
     1503              text='Remove small holes & \nsharp indents & pinch off').grid( \
     1504                                                              row=6,
     1505                                                              column=1,
     1506                                                              sticky=W)
     1507
     1508       
    14731509        self.alpha  = 0
    14741510        self.alphaValueOk = False
Note: See TracChangeset for help on using the changeset viewer.