def OnButton(self, event): self.mode = not self.mode self.setter(self.mode) # remember config config = HeeksConfig() config.WriteBool(self.config_str, self.mode) BitmapChangingButton.OnButton(self, event)
def OnClose(self, e): if e.CanVeto() and wx.GetApp().CheckForModifiedDoc() == wx.CANCEL: e.Veto() return e.Skip() config = HeeksConfig() config.WriteBool('AuiMaximised', self.IsMaximized()) self.aui_manager.UnInit()
def OnButton(self, event): self.on = not self.on self.set_fn(self.on) # remember config config = HeeksConfig() config.WriteBool(self.name, self.on) BitmapChangingButton.OnButton(self, event)
def WriteRecentFiles(self, config = None): if config == None: config = HeeksConfig(self.settings_restored) index = 0 for filepath in self.recent_files: if index >= self.MAX_RECENT_FILES: break config.Write('RecentFilePath' + str(index), self.recent_files[index]) index += 1
def WriteDefaultValues(self): config = HeeksConfig() config.WriteFloat("ProgramUnits", self.units) config.Write("ProgramAlternativeMachinesFile", self.alternative_machines_file) config.Write("ProgramMachine", self.machine.description) config.Write("ProgramOutputFile", self.output_file) config.WriteBool("OutputFileNameFollowsDataFileName", self.output_file_name_follows_data_file_name) config.WriteInt("ProgramPathControlMode", self.path_control_mode) config.WriteFloat("ProgramMotionBlendingTolerance", self.motion_blending_tolerance) config.WriteFloat("ProgramNaiveCamTolerance", self.naive_cam_tolerance)
def OnInit(self): self.RegisterMessageBoxCallback() self.InitCad() self.RegisterObjectTypes() self.printData = wx.PrintData() self.pageSetupData = wx.PageSetupDialogData(self.printData) wx.InitAllImageHandlers() # Turn on high-DPI awareness to make sure rendering is sharp on big # monitors with font scaling enabled. from ctypes import OleDLL OleDLL('shcore').SetProcessDpiAwareness(1) config = HeeksConfig() width = config.ReadInt('MainFrameWidth', -1); height = config.ReadInt('MainFrameHeight', -1); x = config.ReadInt('MainFramePosX', -1); y = config.ReadInt('MainFramePosY', -1); if width < 0: width = -1 height = -1 x = -1 y = -1 else: stored_rect = wx.Rect(x, y, width, height) in_display = False for idx in range(wx.Display.GetCount()): d = wx.Display(idx) rect = d.GetGeometry() if rect.Contains(wx.Point(x, y)): in_display = True if in_display == False: width = -1 height = -1 x = -1 y = -1 self.LoadConfig() self.frame = self.NewFrame(wx.Point(x, y), wx.Size(width, height)) self.frame.Show() self.OnNewOrOpen(False) cad.ClearHistory() cad.SetLikeNewFile() self.frame.SetFrameTitle() return True
def WriteDefaultValues(self): SpeedOp.WriteDefaultValues(self) config = HeeksConfig() config.WriteFloat("ClearanceHeight", self.clearance_height) config.WriteFloat("StartDepth", self.start_depth) config.WriteFloat("StepDown", self.step_down) config.WriteFloat("FinalDepth", self.final_depth) config.WriteFloat("RapidSpace", self.rapid_safety_space) config.WriteFloat("ZFinish", self.z_finish_depth) config.WriteFloat("ZThru", self.z_thru_depth)
def ReadDefaultValues(self): SpeedOp.ReadDefaultValues(self) config = HeeksConfig() self.clearance_height = config.ReadFloat("ClearanceHeight", 5.0) self.start_depth = config.ReadFloat("StartDepth", 0.0) self.step_down = config.ReadFloat("StepDown", 1.0) self.final_depth = config.ReadFloat("FinalDepth", -1.0) self.rapid_safety_space = config.ReadFloat("RapidSpace", 2.0) self.z_finish_depth = config.ReadFloat("ZFinish", 0.0) self.z_thru_depth = config.ReadFloat("ZThru", 0.0)
def ExportWing(self, object): config = HeeksConfig() default_directory = config.Read('WingsExportDirectory', self.GetDefaultDir()) wildcard_string = 'STL files (*.stl)|*.stl' dialog = wx.FileDialog(self.frame, 'Export Wing STL File', default_directory, '', wildcard_string, wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) dialog.CenterOnParent() if dialog.ShowModal() == wx.ID_OK: path = dialog.GetPath() object.ExportFiles(path) config.Write('WingsExportDirectory', dialog.GetDirectory())
def OnFillet(self, event): if not self.CheckForNumberOrMore( 1, [step.GetEdgeType()], 'Pick one or more edges to add a fillet to', 'Edge Fillet'): return config = HeeksConfig() rad = config.ReadFloat('EdgeBlendRadius', 2.0) rad = self.InputLength('Enter Blend Radius', 'Radius', rad) if rad: cad.StartHistory() step.FilletOrChamferEdges(rad, False) config.WriteFloat('EdgeBlendRadius', rad) cad.ClearSelection(True) cad.EndHistory()
def OffsetSketch(self, object): config = HeeksConfig() value = config.ReadFloat('SketchOffsetValue', 1.0) value = self.InputLength('Offset Sketch', 'Offset Value +ve for Outwards -ve for Inwards', value) if value == None: return sketch = object sketch.__class__ = cad.Sketch area = sketch.GetArea() area.Reorder() area.Offset(-value) new_object = cad.NewSketchFromArea(area) cad.AddUndoably(new_object) cad.ClearSelection() cad.Select(new_object)
def OnExtrude(self, event): if cad.GetNumSelected() == 0: self.PickObjects('Pick Some Sketches, Faces or Circles') if not self.CheckForNumberOrMore( 1, [ cad.OBJECT_TYPE_SKETCH, step.GetFaceType(), cad.OBJECT_TYPE_CIRCLE ], 'Pick one or more sketches, faces or circles, to create an extruded body from\n( hold down Ctrl key to select more than one solid )', 'Extude'): return config = HeeksConfig() height = config.ReadFloat('ExtrusionHeight', 10.0) taper_angle = config.ReadFloat('ExtrusionTaperAngle', 0.0) extrude_makes_a_solid = config.ReadBool('ExtrudeToSolid') success, height, extrude_makes_a_solid, taper_angle = self.InputExtrusionHeight( height, extrude_makes_a_solid, taper_angle) if success: config.WriteFloat('ExtrusionHeight', height) config.WriteFloat('ExtrusionTaperAngle', taper_angle) config.WriteBool('ExtrudeToSolid', extrude_makes_a_solid) step.CreateExtrusion(height, extrude_makes_a_solid, False, taper_angle, cad.Color(128, 128, 128))
def OnChamfer(self, event): if not self.CheckForNumberOrMore( 1, [step.GetEdgeType()], 'Pick one or more edges to add a chamfer to', 'Edge Chamfer'): return config = HeeksConfig() rad = config.ReadFloat('EdgeChamferDist', 2.0) rad = self.InputLength('Enter Chamfer Distance', 'Distance', rad) if rad: cad.StartHistory() step.FilletOrChamferEdges(rad, True) config.WriteFloat('EdgeChamferDist', rad) cad.ClearSelection(True) cad.EndHistory()
def Scale(): centre_Pos = geom.Point3D(0, 0, 0) if cad.GetNumSelected() == 0: wx.GetApp().PickObjects('Pick objects to scale') if cad.GetNumSelected() == 0: return config = HeeksConfig() selected_items = cad.GetSelectedObjects() cad.ClearSelection(False) scale_factor = config.ReadFloat('ScaleFactor', 1.0) copy = config.ReadBool("ScaleCopy", False) pos = geom.Point3D(0, 0, 0) pos.x = config.ReadFloat("ScaleAboutPosX", 0.0) pos.y = config.ReadFloat("ScaleAboutPosY", 0.0) pos.z = config.ReadFloat("ScaleAboutPosZ", 0.0) result, pos, scale_factor, copy = InputScale(pos, scale_factor, copy, 'Scale') if not result: return config.WriteFloat("ScaleFactor", scale_factor) config.WriteBool("ScaleCopy", copy) config.WriteFloat("ScaleAboutPosX", pos.x) config.WriteFloat("ScaleAboutPosY", pos.y) config.WriteFloat("ScaleAboutPosZ", pos.z) cad.StartHistory() mat = geom.Matrix() mat.Translate(-pos) mat.Scale(scale_factor) mat.Translate(pos) for object in selected_items: if copy: if object.CanBeCopied(): object = object.MakeACopy() object.Transform(mat) cad.AddUndoably(object) else: cad.TransformUndoably(object, mat) cad.EndHistory()
def OriTransform(): if cad.GetNumSelected() == 0: wx.GetApp().PickObjects('Pick objects to transform') if cad.GetNumSelected() == 0: return config = HeeksConfig() selected_items = cad.GetSelectedObjects() cad.ClearSelection(False) o1 = PickOrigin('Pick From Origin') if o1 == None: wx.MessageBox("You didn't pick an origin\nTransform Cancelled!") return o2 = PickOrigin('Pick To Origin') if o2 == None: wx.MessageBox("You didn't pick an origin\nTransform Cancelled!") return cad.StartHistory() m1 = o1.GetOrigin() mat = m1.Inverse() m2 = o2.GetOrigin() mat.Multiply(m2) for object in selected_items: cad.TransformUndoably(object, mat) cad.EndHistory()
def ReadDefaultValues(self): config = HeeksConfig() self.units = config.ReadFloat("ProgramUnits", self.units) self.alternative_machines_file = config.Read( "ProgramAlternativeMachinesFile", self.alternative_machines_file) self.machine = self.GetMachine( config.Read("ProgramMachine", self.machine.description)) self.output_file = config.Read("ProgramOutputFile", self.output_file) self.output_file_name_follows_data_file_name = config.ReadBool( "OutputFileNameFollowsDataFileName", self.output_file_name_follows_data_file_name) self.path_control_mode = config.ReadInt("ProgramPathControlMode", self.path_control_mode) self.motion_blending_tolerance = config.ReadFloat( "ProgramMotionBlendingTolerance", self.motion_blending_tolerance) self.naive_cam_tolerance = config.ReadFloat("ProgramNaiveCamTolerance", self.naive_cam_tolerance)
def OnExport(self, e): config = HeeksConfig() default_directory = config.Read('ExportDirectory', self.GetDefaultDir()) dialog = wx.FileDialog(self.frame, 'Export File', default_directory, '', self.GetWildcardString(False), wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) dialog.CenterOnParent() if dialog.ShowModal() == wx.ID_OK: path = dialog.GetPath() suffix = self.GetPathSuffix(path) if suffix == 'svg': import Svg Svg.Export(path) elif suffix == '3mf': import Mf3 Mf3.Export(path) else: cad.SaveFile(path) config.Write('ExportDirectory', dialog.GetDirectory())
def OnImport(self, e): config = HeeksConfig() default_directory = config.Read('ImportDirectory', self.GetDefaultDir()) dialog = wx.FileDialog(self.frame, 'Import File', default_directory, '', self.GetWildcardString(True)) dialog.CenterOnParent() if dialog.ShowModal() == wx.ID_OK: filepath = dialog.GetPath() res = cad.Import(filepath) if res: self.DoFileOpenViewMag() if self.filepath == None: dot = filepath.rfind('.') if dot != -1: self.filepath = filepath[:dot+1] + 'heeks' self.frame.SetFrameTitle() config.Write('ImportDirectory', dialog.GetDirectory()) cad.Repaint()
def OnRevolve(self, event): if cad.GetNumSelected() == 0: self.PickObjects('Pick Some Sketches, Faces or Circles') if not self.CheckForNumberOrMore( 1, [ cad.OBJECT_TYPE_SKETCH, step.GetFaceType(), cad.OBJECT_TYPE_CIRCLE ], 'Pick one or more sketches, faces or circles, to create an extruded body from\n( hold down Ctrl key to select more than one solid )', 'Revolve'): return config = HeeksConfig() angle = config.ReadFloat('RevolutionAngle', 360.0) extrude_makes_a_solid = config.ReadBool('ExtrudeToSolid') success, angle, extrude_makes_a_solid = self.InputRevolutionAngle( angle, extrude_makes_a_solid) if success: config.WriteFloat('RevolutionAngle', angle) config.WriteBool('ExtrudeToSolid', extrude_makes_a_solid) step.CreateExtrusion(angle, extrude_makes_a_solid, True, 0.0, cad.Color(128, 128, 150))
def WriteDefaultValues(self): DepthOp.WriteDefaultValues(self) config = HeeksConfig() config.WriteFloat("dwell", self.dwell) config.WriteInt("retract_mode", self.retract_mode) config.WriteInt("spindle_mode", self.spindle_mode) config.WriteBool("internal_coolant_on", self.internal_coolant_on) config.WriteBool("rapid_to_clearance", self.rapid_to_clearance)
def ReadDefaultValues(self): DepthOp.ReadDefaultValues(self) config = HeeksConfig() self.dwell = config.ReadFloat("dwell", 0.0) self.retract_mode = config.ReadInt("retract_mode", 0) self.spindle_mode = config.ReadInt("spindle_mode", 0) self.internal_coolant_on = config.ReadBool("internal_coolant_on", False) self.rapid_to_clearance = config.ReadBool("rapid_to_clearance", True)
def WriteDefaultValues(self): SketchOp.WriteDefaultValues(self) config = HeeksConfig() config.WriteInt("ToolOnSide", self.tool_on_side) config.WriteInt("CutMode", self.cut_mode) config.WriteFloat("RollRadius", self.auto_roll_radius) config.WriteFloat("OffsetExtra", self.offset_extra) config.WriteBool("DoFinishPass", self.do_finishing_pass) config.WriteBool("OnlyFinishPass", self.only_finishing_pass) config.WriteFloat("FinishFeedRate", self.finishing_h_feed_rate) config.WriteInt("FinishCutMode", self.finishing_cut_mode) config.WriteFloat("FinishStepDown", self.finishing_step_down) config.WriteBool("EndBeyond", self.end_beyond_full_profile) config.WriteFloat("ExtendAtStart", self.extend_at_start) config.WriteFloat("ExtendAtEnd", self.extend_at_end) config.WriteFloat("LeadInLineLen", self.lead_in_line_len) config.WriteFloat("LeadOutLineLen", self.lead_out_line_len)
def ReadDefaultValues(self): SketchOp.ReadDefaultValues(self) config = HeeksConfig() self.tool_on_side = config.ReadInt("ToolOnSide", PROFILE_LEFT_OR_OUTSIDE) self.cut_mode = config.ReadInt("CutMode", PROFILE_CLIMB) self.auto_roll_radius = config.ReadFloat("RollRadius", 2.0) self.offset_extra = config.ReadFloat("OffsetExtra", 0.0) self.do_finishing_pass = config.ReadBool("DoFinishPass", False) self.only_finishing_pass = config.ReadBool("OnlyFinishPass", False) self.finishing_h_feed_rate = config.ReadFloat("FinishFeedRate", 100.0) self.finishing_cut_mode = config.ReadInt("FinishCutMode", PROFILE_CONVENTIONAL) self.finishing_step_down = config.ReadFloat("FinishStepDown", 1.0) self.end_beyond_full_profile = config.ReadBool("EndBeyond", False) self.extend_at_start = config.ReadFloat("ExtendAtStart", 0.0) self.extend_at_end = config.ReadFloat("ExtendAtEnd", 0.0) self.lead_in_line_len = config.ReadFloat("LeadInLineLen", 0.0) self.lead_out_line_len = config.ReadFloat("LeadOutLineLen", 0.0)
def ReadNCCodeColorsFromConfig(): config = HeeksConfig() cam.ClearNcCodeColors() cam.AddNcCodeColor('default', cad.Color(int(config.Read('ColorDefaultType', str(cad.Color(0,0,0).ref()))))) cam.AddNcCodeColor('blocknum', cad.Color(int(config.Read('ColorBlockType', str(cad.Color(0,0,222).ref()))))) cam.AddNcCodeColor('misc', cad.Color(int(config.Read('ColorMiscType', str(cad.Color(0,200,0).ref()))))) cam.AddNcCodeColor('program', cad.Color(int(config.Read('ColorProgramType', str(cad.Color(255,128,0).ref()))))) cam.AddNcCodeColor('tool', cad.Color(int(config.Read('ColorToolType', str(cad.Color(200,200,0).ref()))))) cam.AddNcCodeColor('comment', cad.Color(int(config.Read('ColorCommentType', str(cad.Color(0,200,200).ref()))))) cam.AddNcCodeColor('variable', cad.Color(int(config.Read('ColorVariableType', str(cad.Color(164,88,188).ref()))))) cam.AddNcCodeColor('prep', cad.Color(int(config.Read('ColorPrepType', str(cad.Color(255,0,175).ref()))))) cam.AddNcCodeColor('axis', cad.Color(int(config.Read('ColorAxisType', str(cad.Color(128,0,255).ref()))))) cam.AddNcCodeColor('rapid', cad.Color(int(config.Read('ColorRapidType', str(cad.Color(222,0,0).ref()))))) cam.AddNcCodeColor('feed', cad.Color(int(config.Read('ColorFeedType', str(cad.Color(0,179,0).ref())))))
def OnModeChanged(self): wx.GetApp().graphics_text_mode = self.mode # remember config config = HeeksConfig() config.WriteInt("TextMode", self.mode)
def OnScreenText(self, event): wx.GetApp().graphics_text_mode = event.GetSelection() HeeksConfig().WriteInt("TextMode", event.GetSelection()) cad.Repaint()
def OnRotateUpright(self, event): cad.SetRotateUpright(event.IsChecked()) HeeksConfig().WriteBool("RotateUpright", event.IsChecked())
def SetColor(self, c): cad.SetBackgroundColor(self.index, c) HeeksConfig().WriteInt("BackgroundColor" + str(self.index), c.ref()) self.GetRibbon().GetParent().graphics_canvas.Refresh()
def SetColor(self, c): cad.SetCurrentColor(c) HeeksConfig().WriteInt("CurrentColor", c.ref()) self.GetRibbon().GetParent().graphics_canvas.Refresh()
def OnMove(self, e): pos = self.GetPosition() config = HeeksConfig() config.WriteInt('MainFramePosX', pos.x) config.WriteInt('MainFramePosY', pos.y)