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()
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)
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
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()
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()
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