예제 #1
0
 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)
예제 #2
0
 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()
예제 #3
0
    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)
예제 #4
0
 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
예제 #5
0
파일: Program.py 프로젝트: danheeks/PyCAM
 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)
예제 #6
0
 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
예제 #7
0
 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)
예제 #8
0
 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)
예제 #9
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())
예제 #10
0
 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()
예제 #11
0
 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)
예제 #12
0
    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))
예제 #13
0
 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()
예제 #14
0
파일: Transform.py 프로젝트: danheeks/PyCAD
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()
예제 #15
0
파일: Transform.py 프로젝트: danheeks/PyCAD
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()
예제 #16
0
파일: Program.py 프로젝트: danheeks/PyCAM
 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)
예제 #17
0
 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())
예제 #18
0
 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()
예제 #19
0
    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))
예제 #20
0
 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)
예제 #21
0
 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)
예제 #22
0
 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)
예제 #23
0
 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)
예제 #24
0
파일: CamApp.py 프로젝트: danheeks/PyCAM
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())))))
예제 #25
0
 def OnModeChanged(self):
     wx.GetApp().graphics_text_mode = self.mode
     # remember config
     config = HeeksConfig()
     config.WriteInt("TextMode", self.mode)
예제 #26
0
    def OnScreenText(self, event):
        wx.GetApp().graphics_text_mode = event.GetSelection()
        HeeksConfig().WriteInt("TextMode", event.GetSelection())

        cad.Repaint()
예제 #27
0
 def OnRotateUpright(self, event):
     cad.SetRotateUpright(event.IsChecked())
     HeeksConfig().WriteBool("RotateUpright", event.IsChecked())
예제 #28
0
 def SetColor(self, c):
     cad.SetBackgroundColor(self.index, c)
     HeeksConfig().WriteInt("BackgroundColor" + str(self.index), c.ref())
     self.GetRibbon().GetParent().graphics_canvas.Refresh()
예제 #29
0
 def SetColor(self, c):
     cad.SetCurrentColor(c)
     HeeksConfig().WriteInt("CurrentColor", c.ref())
     self.GetRibbon().GetParent().graphics_canvas.Refresh()
예제 #30
0
 def OnMove(self, e):
     pos = self.GetPosition()
     config = HeeksConfig()
     config.WriteInt('MainFramePosX', pos.x)
     config.WriteInt('MainFramePosY', pos.y)