示例#1
0
    def PickObjects(self, str, filter = cad.Filter(), just_one = False):
        if self.inMainLoop:
            wx.MessageBox('recursive call to PickObjects')
            return
        
        if isinstance(filter,int):
            filter_int = filter
            filter = cad.Filter()
            filter.AddType(filter_int)
        
        self.StartPickObjects(str, filter, just_one)

        self.OnRun()
        
        return self.EndPickObjects()
示例#2
0
文件: CamApp.py 项目: danheeks/PyCAM
 def OnLeftClick(self, event):
     if not event.controlDown:
         # check for nc code block clicked
         if self.select_mode.filter.IsTypeInFilter(cam.GetNcCodeBlockType()):
             mask = cad.Filter()
             mask.AddType(cam.GetNcCodeBlockType())
             objects = cad.ObjectsUnderWindow(cad.IRect(self.select_mode.button_down_point.x, self.select_mode.button_down_point.y), False, True, mask, False)
             if len(objects):
                 block = objects[0]
                 cad.ClearSelection()
                 cad.Select(block)
                 block.__class__ = cam.NcCodeBlock
                 self.output_window.viewport.SelectLine(block.line_number, True)
                 wx.GetApp().frame.graphics_canvas.Refresh()
                 self.output_window.Refresh()
                 return            
             
             program = wx.GetApp().program
             if program != None:
                 nccode = program.nccode
                 if nccode != None:
                     nccode.nc_code.SetHighlightedBlock(None)
     
     # do the default click behaviour
     SolidApp.OnLeftClick(self, event)
示例#3
0
def PickOrigin(prompt):
    filter = cad.Filter()
    filter.AddType(cad.OBJECT_TYPE_COORD_SYS)
    wx.GetApp().PickObjects(prompt, filter, True)
    origin = None
    for object in cad.GetSelectedObjects():
        if object.GetType() == cad.OBJECT_TYPE_COORD_SYS:
            origin = object
            break
    return origin
示例#4
0
    def PickPoints(self):
        cad.ClearSelection()
        wx.GetApp().PickObjects('Pick points to drill',
                                cad.Filter(cad.OBJECT_TYPE_POINT), False)

        ids = []
        for object in cad.GetSelectedObjects():
            if object.GetType() == cad.OBJECT_TYPE_POINT:
                ids.append(object.GetID())

        self.idsPoints.SetFromIdList(ids)

        self.Fit()
示例#5
0
 def PickSolids(self):
     cad.ClearSelection(True)
     filter = cad.Filter()
     filter.AddType(cad.OBJECT_TYPE_STL_SOLID)
     if wx.GetApp().IsSolidApp():
         import step
         filter.AddType(step.GetSolidType())
     wx.GetApp().PickObjects('Pick solids', filter, False)
     
     solids = []
     for object in cad.GetSelectedObjects():
         if object.GetIDGroupType() == cad.OBJECT_TYPE_STL_SOLID:
             solids.append(object.GetID())
             
     self.idsSolids.SetFromIdList(solids)
     self.Fit()
示例#6
0
 def CheckForNumberOrMore(self, min_num, types, msg, caption):
     num_found = 0
     for object in cad.GetSelectedObjects():
         for type in types:
             if object.GetType() == type:
                 num_found += 1
                 break
             
     if num_found < min_num:
         filter = cad.Filter()
         for t in types: filter.AddType(t)
         objects = self.PickObjects(msg, filter, False)
         if cad.GetNumSelected() < min_num:
             wx.MessageBox(msg)
             return False
     return True