示例#1
0
 def __init__(self):
     try:
         self.s = labvcnc.stat()
         self.c = labvcnc.command()
     except Exception, msg:
         print "cant initialize LbvInterface: %s - LabvCNC not running?" % (
             msg)
示例#2
0
 def __init__(self):
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.c = labvcnc.command()
     self.s = labvcnc.stat()
     self.gui = self.i.find('DISPLAY', 'DISPLAY').lower()
     self.configFile = '{}_wizards.cfg'.format(
         self.i.find('LBV', 'MACHINE').lower())
 def support_coord_buttons(self):
     try:
         self.stat = labvcnc.stat()
         self.stat.poll()
         has_x = False
         for axno in range(0, 9):
             axname = 'XYZABCUVW'[axno]
             if self.label_to_btn.has_key(axname):
                 b = self.label_to_btn[axname]
                 if bool(self.stat.axis_mask & (1 << axno)):
                     b.show()
                     if axno == 0: has_x = True
                 else:
                     b.hide()
         bdiam = None
         if self.label_to_btn.has_key('D'):
             bdiam = self.label_to_btn['D']
         if bdiam and has_x:
             bdiam.show()
         elif bdiam:
             bdiam.hide()
     except labvcnc.error, msg:
         self.stat = None
         if self.coord_buttons is not None:
             self.coord_buttons.hide()
             print "labvcnc must be running to use coordinate keys"
示例#4
0
 def __init__(self, halcomp, builder, useropts):
     self.halcomp = halcomp
     self.builder = builder
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.s = labvcnc.stat()
     self.c = labvcnc.command()
     self.prefFile = self.i.find('LBV', 'MACHINE') + '.pref'
     self.set_theme()
     self.maxFeed = int(
         float(self.i.find("DISPLAY", "MAX_FEED_OVERRIDE") or '1') * 100)
     self.maxRapid = int(
         float(self.i.find("DISPLAY", "MAX_RAPID_OVERRIDE") or '1') * 100)
     self.oldMode = 9
     self.configure_widgets()
     self.feed_override = 0
     self.rapid_override = 0
     self.torch_height = 0
     self.builder.get_object('height-override').set_text('{:.1f} V'.format(
         self.torch_height))
     hal.set_p('plasmac.height-override', '{:f}'.format(self.torch_height))
     self.configure_comboboxes('feed-override', 0, self.maxFeed, 1, '100')
     self.feed_override = 1
     self.configure_comboboxes('rapid-override', 0, self.maxRapid, 1, '100')
     self.rapid_override = 1
     pause_motion_init = self.i.find("PLASMAC",
                                     "PAUSED_MOTION_SPEED") or '50'
     torch_pulse_init = self.i.find("PLASMAC", "TORCH_PULSE_TIME") or '1.0'
     self.configure_comboboxes('paused-motion-speed', 0, 100, 5,
                               pause_motion_init)
     self.configure_comboboxes('torch-pulse-time', 0, 10, 0.1,
                               torch_pulse_init)
     gobject.timeout_add(100, self.periodic)
示例#5
0
 def __init__(self, halcomp,builder,useropts):
     self.W = gtk.Window()
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.s = labvcnc.stat()
     self.c = labvcnc.command()
     self.builder = builder
     self.prefFile = self.i.find('LBV', 'MACHINE') + '.pref'
     self.gui = self.i.find('DISPLAY', 'DISPLAY').lower()
     self.configFile = self.i.find('LBV', 'MACHINE').lower() + '_wizards.cfg'
     self.builder.get_object('hbox1').connect('destroy', self.on_shutdown)
     self.tmpDir = ('/tmp/plasmac_wizards')
     if not os.path.isdir(self.tmpDir):
         os.mkdir(self.tmpDir)
     self.fWizard = '{}/wizard.ngc'.format(self.tmpDir)
     self.check_settings()
     self.set_theme()
     for wizard in ['line', 'circle', 'triangle', 'rectangle', 'polygon', 'bolt-circle', 'slot', 'star', 'gusset']:
         pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(
                 filename='./wizards/images/{}-thumb.png'.format(wizard), 
                 width=60, 
                 height=60)
         image = gtk.Image()
         image.set_from_pixbuf(pixbuf)
         self.builder.get_object('{}'.format(wizard)).set_image(image)
     self.button_setup()
     self.builder.get_object('button10').connect('realize', self.set_style)
     self.initialized = True
     gobject.timeout_add(100, self.periodic)
示例#6
0
 def __init__(self, halcomp, widgets, paths):
     self.hal = halcomp
     self.w = widgets
     self.stat = labvcnc.stat()
     self.cmnd = labvcnc.command()
     self.error = labvcnc.error_channel()
     self.PATH = paths.CONFIGPATH
     self.IMAGE_PATH = paths.IMAGEDIR
     self.STYLE = Styles(widgets, paths)
示例#7
0
 def __init__(self):
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.c = labvcnc.command()
     self.s = labvcnc.stat()
     self.gui = self.i.find('DISPLAY', 'DISPLAY').lower()
     self.configFile = '{}_wizards.cfg'.format(
         self.i.find('LBV', 'MACHINE').lower())
     self.fNgc = ''
     self.fCode = ''
     self.previewed = False
     self.data_changed = True
示例#8
0
    def __init__(self, command=None, status=None, error=None):
        """init docs"""
        self.command = command
        self.status = status
        self.error = error

        if not self.command:
            self.command = labvcnc.command()

        if not self.status:
            self.status = labvcnc.stat()

        if not self.error:
            self.error = labvcnc.error_channel()
示例#9
0
 def __init__(self, halcomp, builder, useropts):
     self.W = gtk.Window()
     self.halcomp = halcomp
     self.builder = builder
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.s = labvcnc.stat()
     self.c = labvcnc.command()
     self.prefFile = self.i.find('LBV', 'MACHINE') + '.pref'
     self.iniButtonName = ['Names']
     self.iniButtonCode = ['Codes']
     self.probePressed = False
     self.probeTimer = 0
     self.probeButton = ''
     self.cutType = 0
     self.inFile = ''
     self.cutButton = ''
     for button in range(1, 5):
         bname = self.i.find('PLASMAC',
                             'BUTTON_' + str(button) + '_NAME') or '0'
         self.iniButtonName.append(bname)
         code = self.i.find('PLASMAC', 'BUTTON_' + str(button) + '_CODE')
         self.iniButtonCode.append(code)
         if code == 'cut-type':
             self.cutButton = 'button{}'.format(button)
         if bname != '0':
             bname = bname.split('\\')
             if len(bname) > 1:
                 blabel = bname[0] + '\n' + bname[1]
             else:
                 blabel = bname[0]
             self.builder.get_object('button' +
                                     str(button)).set_label(blabel)
             self.builder.get_object('button' +
                                     str(button)).children()[0].set_justify(
                                         gtk.JUSTIFY_CENTER)
         if 'change-consumables' in code:
             ccParm = self.i.find(
                 'PLASMAC', 'BUTTON_' + str(button) + '_CODE').replace(
                     'change-consumables', '').replace(' ',
                                                       '').lower() or None
             if ccParm:
                 self.consumable_change_setup(ccParm)
             else:
                 self.dialog_error(
                     'Parameters required for consumable change\n\nCheck .ini file settings\n'
                 )
     self.set_theme()
     self.builder.get_object('button1').connect('realize', self.set_style)
     gobject.timeout_add(100, self.periodic)
示例#10
0
 def __init__(self, master):
     global DBG_state
     DBG_state = master._dbg
     self.lbv = labvcnc
     self.lbvstat = labvcnc.stat()
     self.lbvcommand = labvcnc.command()
     self.return_to_mode = -1  # if not -1 return to the mode specified
     self.sb = 0
     self.jog_velocity = 100.0 / 60.0
     self.angular_jog_velocity = 3600 / 60
     self._mdi = 0
     self.isjogging = [0, 0, 0, 0, 0, 0, 0, 0, 0]
     self.restart_line_number = self.restart_reset_line = 0
     try:
         handlers,self.handler_module,self.handler_instance = \
         load_handlers([CONFIGDIR], self.lbvstat, self.lbvcommand,self, master)
     except Exception, e:
         print e
示例#11
0
 def __init__(self, halcomp,builder,useropts):
     self.W = gtk.Window()
     self.halcomp = halcomp
     self.builder = builder
     self.i = labvcnc.ini(os.environ['INI_FILE_NAME'])
     self.upgrade_check()
     self.c = labvcnc.command()
     self.s = labvcnc.stat()
     self.cutTypePin = hal_glib.GPin(halcomp.newpin('cut-type', hal.HAL_S32, hal.HAL_IN))
     self.materialNumberPin = hal_glib.GPin(halcomp.newpin('material-change-number', hal.HAL_S32, hal.HAL_IN))
     self.materialChangePin = hal_glib.GPin(halcomp.newpin('material-change', hal.HAL_S32, hal.HAL_IN))
     self.firstMaterialPin = hal_glib.GPin(halcomp.newpin('first-material', hal.HAL_S32, hal.HAL_IN))
     self.thcEnablePin = hal_glib.GPin(halcomp.newpin('thc-enable-out', hal.HAL_BIT, hal.HAL_OUT))
     self.materialNumberPin.connect('value-changed', self.material_change_number_changed)
     self.materialChangePin.connect('value-changed', self.material_change_changed)
     self.firstMaterialPin.connect('value-changed', self.first_material_changed)
     self.idlePin = hal_glib.GPin(halcomp.newpin('program-is-idle', hal.HAL_BIT, hal.HAL_IN))
     hal.connect('plasmac_run.program-is-idle', 'plasmac:program-is-idle') 
     self.idlePin.connect('value-changed', self.idle_changed)
     self.previewPin = hal_glib.GPin(halcomp.newpin('preview-tab', hal.HAL_BIT, hal.HAL_IN))
     self.thcFeedRate = (float(self.i.find('AXIS_Z', 'MAX_VELOCITY')) * \
                         float(self.i.find('AXIS_Z', 'OFFSET_AV_RATIO'))) * 60
     hal.set_p('plasmac.thc-feed-rate','{}'.format(self.thcFeedRate))
     self.configFile = self.i.find('LBV', 'MACHINE').lower() + '_run.cfg'
     self.prefFile = self.i.find('LBV', 'MACHINE') + '.pref'
     self.materialFile = self.i.find('LBV', 'MACHINE').lower() + '_material.cfg'
     self.materialFileDict = {}
     self.materialDict = {}
     self.configDict = {}
     self.materialNumList = []
     hal.set_p('plasmac.mode','{}'.format(int(self.i.find('PLASMAC','MODE') or '0')))
     self.oldMode = 9
     self.oldMaterial = -1
     self.materialUpdate = False
     self.autoChange = False
     self.manualChange = False
     self.configure_widgets()
     self.load_settings()
     self.check_material_file()
     self.get_material()
     self.set_theme()
     gobject.timeout_add(100, self.periodic)
    def __init__(self, halcomp, widgets, paths):
        self.hal = halcomp
        self.w = widgets
        self.stat = labvcnc.stat()
        self.cmnd = labvcnc.command()
        self.error = labvcnc.error_channel()
        self.jog_velocity = 10.0
        self.PATH = paths.CONFIGPATH
        self.IMAGE_PATH = paths.IMAGEDIR
        #print paths.CONFIGPATH
        # connect to GStat to catch labvcnc events
        STATUS.connect('state-estop', self.say_estop)
        STATUS.connect('state-on', self.on_state_on)
        STATUS.connect('state-off', self.on_state_off)
        STATUS.connect('jograte-changed', self.on_jograte_changed)
        STATUS.connect('periodic', self.on_periodic)

        # Read user preferences
        self.desktop_notify = PREFS.getpref('desktop_notify', True, bool)
        self.shutdown_check = PREFS.getpref('shutdown_check', True, bool)
示例#13
0
    def __init__(self, stat = None):
        gobject.GObject.__init__(self)
        self.stat = stat or labvcnc.stat()
        self.cmd = labvcnc.command()
        self._status_active = False
        self.old = {}
        self.old['tool-prep-number'] = 0
        try:
            self.stat.poll()
            self.merge()
        except:
            pass

        self.current_jog_rate = 15
        self.current_angular_jog_rate = 360
        self.current_jog_distance = 0
        self.current_jog_distance_text =''
        self.current_jog_distance_angular= 0
        self.current_jog_distance_angular_text =''
        self.selected_joint = -1
        self.selected_axis = ''
        self._is_all_homed = False
        self.set_timer()
示例#14
0
timeout = 1.0

#
# set up pins
# shell out to halcmd to net our pins to where they need to go
#

h = hal.component("python-ui")
h.ready()

#
# connect to LabvCNC
#

c = labvcnc.command()
s = labvcnc.stat()
e = labvcnc.error_channel()

l = labvcnc_util.LabvCNC(command=c, status=s, error=e)

c.state(labvcnc.STATE_ESTOP_RESET)
c.state(labvcnc.STATE_ON)
c.home(0)
c.home(1)
c.home(2)

l.wait_for_home([1, 1, 1, 0, 0, 0, 0, 0, 0])

c.mode(labvcnc.MODE_MDI)

c.mdi("O<obug> call [0]")
 def __init__(self, timeout=2):
     self.c = labvcnc.command()
     self.e = labvcnc.error_channel()
     self.s = labvcnc.stat()
     self.timeout = timeout
示例#16
0
    def __init__(self, toolfile=None, *a, **kw):
        super(ToolEdit, self).__init__()
        self.lbvstat = labvcnc.stat()
        self.hash_check = None
        self.lathe_display_type = True
        self.toolfile = toolfile
        self.num_of_col = 1
        self.font = "sans 12"
        self.hide_columns = ''
        self.toolinfo_num = 0
        self.toolinfo = []
        self.wTree = gtk.Builder()
        self.wTree.set_translation_domain("labvcnc")  # for locale translations
        self.wTree.add_from_file(os.path.join(datadir, "tooledit_gtk.glade"))
        # connect the signals from Glade
        dic = {
            "on_delete_clicked": self.delete,
            "on_add_clicked": self.add,
            "on_reload_clicked": self.reload,
            "on_save_clicked": self.save,
            "cell_toggled": self.toggled
        }
        self.wTree.connect_signals(dic)

        self.treeview1 = self.wTree.get_object("treeview1")
        self.treeview1.connect("key-release-event",
                               self.on_tree_navigate_key_press, None)

        # for raw view 1:

        # toggle button useable
        renderer = self.wTree.get_object("cell_toggle1")
        renderer.set_property('activatable', True)
        # make colums editable
        self.tool_cell_list = "cell_tool#","cell_pos","cell_x","cell_y","cell_z","cell_a","cell_b","cell_c","cell_u","cell_v","cell_w","cell_d", \
                "cell_front","cell_back","cell_orient","cell_comments"
        for col, name in enumerate(self.tool_cell_list):
            #print name,col
            renderer = self.wTree.get_object(name + '1')
            renderer.connect('edited', self.col_editted, col + 1, None)
            renderer.props.editable = True
        self.all_label = self.wTree.get_object("all_label")

        # for lathe wear view2:

        # make columns editable
        temp =[ ("cell_x2",3),("cell_z2",5),("cell_front2",13),("cell_back2",14), \
                ("cell_orient2",15), ("cell_comments2",16)]
        for name, col in temp:
            renderer = self.wTree.get_object(name)
            renderer.connect('edited', self.col_editted, col, 'wear')
            renderer.props.editable = True
        # Hide columns we don't want to see
        self.set_col_visible(list='spyabcuvwdijq', bool=False, tab='2')
        self.wear_label = self.wTree.get_object("wear_label")

        # for tool offsets view 3:

        # make columns editable
        temp =[ ("cell_x3",3),("cell_z3",5),("cell_front3",13),("cell_back3",14), \
                ("cell_orient3",15), ("cell_comments3",16)]
        for name, col in temp:
            renderer = self.wTree.get_object(name)
            renderer.connect('edited', self.col_editted, col, 'tool')
            renderer.props.editable = True
        # Hide columns we don't want to see
        self.set_col_visible(list='spyabcuvwdij', bool=False, tab='3')
        self.tool_label = self.wTree.get_object("tool_label")

        # global references
        self.model = self.wTree.get_object("liststore1")
        self.notebook = self.wTree.get_object("tool_offset_notebook")
        self.all_window = self.wTree.get_object("all_window")
        self.wear_window = self.wTree.get_object("wear_window")
        self.tool_window = self.wTree.get_object("tool_window")
        self.view1 = self.wTree.get_object("treeview1")
        self.view2 = self.wTree.get_object("treeview2")

        # sort routine for tool diameter
        def compare(model, row1, row2, user_data=None):
            sort_column, _ = model.get_sort_column_id()
            value1 = model.get_value(row1, sort_column)
            value2 = model.get_value(row2, sort_column)
            return cmp(value1, value2)

        model = self.view1.get_model()
        model.set_sort_func(12, compare)
        #self.view2.connect('button_press_event', self.on_treeview2_button_press_event)
        self.view2.connect("key-release-event",
                           self.on_tree_navigate_key_press, 'wear')
        self.selection = self.view2.get_selection()
        self.selection.set_mode(gtk.SELECTION_SINGLE)
        self.view3 = self.wTree.get_object("treeview3")
        #self.view3.connect('button_press_event', self.on_treeview2_button_press_event)
        self.view3.connect("key-release-event",
                           self.on_tree_navigate_key_press, 'tool')
        self.apply = self.wTree.get_object("apply")
        self.buttonbox = self.wTree.get_object("buttonbox")
        self.tool_filter = self.wTree.get_object("tool_modelfilter")
        self.tool_filter.set_visible_func(self.match_type, False)
        self.wear_filter = self.wTree.get_object("wear_modelfilter")
        self.wear_filter.set_visible_func(self.match_type, True)
        # reparent tooledit box from Glades tp level window to tooledit's VBox
        window = self.wTree.get_object("tooledit_box")
        window.reparent(self)
        # If the toolfile was specified when tooledit was created load it
        if toolfile:
            self.reload(None)
        # check the ini file if display-type: LATHE is set
        try:
            self.inifile = labvcnc.ini(INIPATH)
            test = self.inifile.find("DISPLAY", "LATHE")
            if test == '1' or test == 'True':
                self.lathe_display_type = True
                self.set_lathe_display(True)
            else:
                self.lathe_display_type = False
                self.set_lathe_display(False)
        except:
            pass

        # check labvcnc status every second
        gobject.timeout_add(1000, self.periodic_check)
示例#17
0
    def periodic_radiobuttons(self):
        self.radiobutton_mask = 1
        s = labvcnc.stat()
        s.poll()
        # Show effect of external override inputs
        self.fo_val = s.feedrate * 100
        self.so_val = s.spindle[0]['override'] * 100
        self.mv_val = s.max_velocity * 60
        am = s.axis_mask
        if not self.resized_wheelbuttons:
            at = self.wTree.get_widget("axis_table")
            for i in range(9):
                b = [
                    "wheelx", "wheely", "wheelz", "wheela", "wheelb", "wheelc",
                    "wheelu", "wheelv", "wheelw"
                ][i]
                w = self.wTree.get_widget(b)
                if not (am & (1 << i)):
                    at.remove(w)
            if (am & 0700) == 0:
                at.resize(3, 2)
                if (am & 070) == 0:
                    at.resize(3, 1)
                    self.wTree.get_widget("wheel_hbox").set_homogeneous(1)
            self.resized_wheelbuttons = 1

        self.wTree.get_widget("scrolling").set_sensitive(self.tab == 3)
        if self.tab != 3 and self.wheel == "scrolling":
            self.jogsettings_activate(0)
            self.wheel = "fo"

        set_active(self.wTree.get_widget("wheelx"), self.wheelxyz == 0)
        set_active(self.wTree.get_widget("wheely"), self.wheelxyz == 1)
        set_active(self.wTree.get_widget("wheelz"), self.wheelxyz == 2)
        set_active(self.wTree.get_widget("wheela"), self.wheelxyz == 3)
        set_active(self.wTree.get_widget("wheelb"), self.wheelxyz == 4)
        set_active(self.wTree.get_widget("wheelc"), self.wheelxyz == 5)
        set_active(self.wTree.get_widget("wheelu"), self.wheelxyz == 6)
        set_active(self.wTree.get_widget("wheelv"), self.wheelxyz == 7)
        set_active(self.wTree.get_widget("wheelw"), self.wheelxyz == 8)
        set_active(self.wTree.get_widget("wheelinc1"), self.wheelinc == 0)
        set_active(self.wTree.get_widget("wheelinc2"), self.wheelinc == 1)
        set_active(self.wTree.get_widget("wheelinc3"), self.wheelinc == 2)
        set_active(self.wTree.get_widget("fo"), self.wheel == "fo")
        set_active(self.wTree.get_widget("so"), self.wheel == "so")
        set_active(self.wTree.get_widget("mv"), self.wheel == "mv")
        set_active(self.wTree.get_widget("jogging"), self.wheel == "jogging")
        set_active(self.wTree.get_widget("scrolling"),
                   self.wheel == "scrolling")
        set_active(self.wTree.get_widget("pointer_show"),
                   not self.invisible_cursor)
        set_active(self.wTree.get_widget("pointer_hide"),
                   self.invisible_cursor)
        set_active(self.wTree.get_widget("toolset_workpiece"), not self.g10l11)
        set_active(self.wTree.get_widget("toolset_fixture"), self.g10l11)
        self.radiobutton_mask = 0

        if self.wheel == "jogging":
            self.hal.jogaxis(self.wheelxyz)
        else:
            # disable all
            self.hal.jogaxis(-1)

        if self.wheel == "scrolling":
            incs = ["100", "10", "1"]
        elif self.wheelxyz == 3 or self.wheelxyz == 4 or self.wheelxyz == 5:
            incs = ["1.0", "0.1", "0.01"]
        elif self.machine_units_mm:
            incs = ["0.1", "0.01", "0.001"]
        else:
            incs = ["0.01", "0.001", "0.0001"]

        set_label(self.wTree.get_widget("wheelinc1").child, incs[0])
        set_label(self.wTree.get_widget("wheelinc2").child, incs[1])
        set_label(self.wTree.get_widget("wheelinc3").child, incs[2])

        self.hal.jogincrement(self.wheelinc, map(float, incs))

        d = self.hal.wheel()
        if self.wheel == "fo":
            self.fo_val += d
            if self.fo_val < 0: self.fo_val = 0
            if d != 0: self.labvcnc.feed_override(self.fo_val)

        if self.wheel == "so":
            self.so_val += d
            if self.so_val < 0: self.so_val = 0
            if d != 0: self.labvcnc.spindle_override(self.so_val)

        if self.wheel == "mv":
            if self.machine_units_mm:
                self.mv_val += 20 * d
            else:
                self.mv_val += d
            if self.mv_val < 0: self.mv_val = 0
            if d != 0:
                self.labvcnc.max_velocity(self.mv_val)
                self.labvcnc.continuous_jog_velocity(self.mv_val)

        if self.wheel == "scrolling":
            d0 = d * 10**(2 - self.wheelinc)
            if d != 0: self.listing.next(None, d0)
        set_label(self.wTree.get_widget("fo").child, "FO: %d%%" % self.fo_val)
        set_label(self.wTree.get_widget("so").child, "SO: %d%%" % self.so_val)
        set_label(self.wTree.get_widget("mv").child, "MV: %d" % self.mv_val)

        return True
示例#18
0
    def __init__(self, joint_number=0):
        super(Combi_DRO, self).__init__()

        # we have to distinguish this, as we use the joints number to check homing
        # and we do need the axis to check for the positions
        # this is needed if non trivial kinematics are used or just a lathe,
        # as the lathe has only two joints, but Z will be the third value in position feedback
        self.axis_no = self.joint_no = joint_number

        # get the necessary connections to labvcnc
        self.labvcnc = labvcnc
        self.status = labvcnc.stat()
        self.gstat = GStat()

        # set some default values'
        self._ORDER = ["Rel", "Abs", "DTG"]
        self.system = "Rel"
        self.homed = False
        self.homed_color = gtk.gdk.Color("green")
        self.unhomed_color = gtk.gdk.Color("red")
        self.abs_color = gtk.gdk.Color("blue")
        self.rel_color = gtk.gdk.Color("black")
        self.dtg_color = gtk.gdk.Color("yellow")
        self.mm_text_template = "%10.3f"
        self.imperial_text_template = "%9.4f"
        self.font_size = 25
        self.metric_units = True
        self.machine_units = _MM
        self.unit_convert = 1
        self._auto_units = True
        self.toggle_readout = True
        self.cycle_time = 150

        # Make the GUI and connect signals
        self.eventbox = gtk.EventBox()
        self.eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
        self.add(self.eventbox)
        vbox_main = gtk.VBox(False, 0)
        self.eventbox.add(vbox_main)
        hbox_up = gtk.HBox(False, 0)
        vbox_main.pack_start(hbox_up)
        attr = self._set_attributes((0, 0, 0), (65535, 0, 0),
                                    (self.font_size * 1000, 0, -1),
                                    (600, 0, -1))
        self.lbl_axisletter = gtk.Label(_AXISLETTERS[self.axis_no])
        self.lbl_axisletter.set_attributes(attr)
        hbox_up.pack_start(self.lbl_axisletter, False, False)
        vbox_ref_type = gtk.VBox(False, 0)
        hbox_up.pack_start(vbox_ref_type, False, False)
        lbl_space = gtk.Label("")
        vbox_ref_type.pack_start(lbl_space)
        attr = self._set_attributes((0, 0, 0), (65535, 0, 0),
                                    (int(self.font_size * 1000 / 2.5), 0, -1),
                                    (600, 0, -1))
        self.lbl_sys_main = gtk.Label(self.system)
        vbox_ref_type.pack_start(self.lbl_sys_main, False, False)
        self.lbl_sys_main.set_attributes(attr)
        self.main_dro = gtk.Label("9999.999")
        hbox_up.pack_start(self.main_dro)
        self.main_dro.set_alignment(1.0, 0.5)
        attr = self._set_attributes((0, 0, 0), (65535, 0, 0),
                                    (self.font_size, 0, -1), (600, 0, -1))
        self.main_dro.set_attributes(attr)
        hbox_down = gtk.HBox(False, 5)
        vbox_main.pack_start(hbox_down)
        self.lbl_sys_left = gtk.Label("Abs")
        hbox_down.pack_start(self.lbl_sys_left)
        attr = self._set_attributes((0, 0, 0), (65535, 0, 0),
                                    (int(self.font_size * 1000 / 2.5), 0, -1),
                                    (600, 0, -1))
        self.lbl_sys_left.set_attributes(attr)
        self.dro_left = gtk.Label("-11.111")
        hbox_down.pack_start(self.dro_left)
        self.dro_left.set_alignment(1.0, 0.5)
        self.dro_left.set_attributes(attr)
        self.lbl_sys_right = gtk.Label("DTG")
        hbox_down.pack_start(self.lbl_sys_right)
        self.lbl_sys_right.set_attributes(attr)
        self.dro_right = gtk.Label("22.222")
        hbox_down.pack_start(self.dro_right)
        self.dro_right.set_alignment(1.0, 0.5)
        self.dro_right.set_attributes(attr)

        self.eventbox.connect("button_press_event", self._on_eventbox_clicked)

        self.show_all()

        self.gstat.connect('not-all-homed', self._not_all_homed)
        self.gstat.connect('all-homed', self._all_homed)
        self.gstat.connect('homed', self._homed)

        # This try is only needed because while working with glade
        # labvcnc may not be working
        try:
            self.inifile = self.labvcnc.ini(INIPATH)
            # check the ini file if UNITS are set to mm"
            # first check the global settings
            units = self.inifile.find("TRAJ", "LINEAR_UNITS")
            if units == None:
                # else then the X axis units
                units = self.inifile.find("AXIS_0", "UNITS")
        except:
            units = "inch"

        if units == "mm" or units == "metric" or units == "1.0":
            self.machine_units = _MM
        else:
            self.machine_units = _INCH

        # add the timer at a period of 100 ms
        gobject.timeout_add(self.cycle_time, self._periodic)
示例#19
0
    def __init__(self, inifile):

        display_mode = ( gtk.gdkgl.MODE_RGB | gtk.gdkgl.MODE_DEPTH |
                         gtk.gdkgl.MODE_DOUBLE )
        glconfig = gtk.gdkgl.Config(mode=display_mode)

        gtk.gtkgl.widget.DrawingArea.__init__(self, glconfig)
        glnav.GlNavBase.__init__(self)
        def C(s):
            a = self.colors[s + "_alpha"]
            s = self.colors[s]
            return [int(x * 255) for x in s + (a,)]
        self.inifile = inifile
        self.logger = labvcnc.positionlogger(labvcnc.stat(),
            C('backplotjog'),
            C('backplottraverse'),
            C('backplotfeed'),
            C('backplotarc'),
            C('backplottoolchange'),
            C('backplotprobing'),
            self.get_geometry()
        )
        thread.start_new_thread(self.logger.start, (.01,))

        rs274.glcanon.GlCanonDraw.__init__(self, labvcnc.stat(), self.logger)

        self.current_view = 'z'

        self.select_primed = None

        self.connect_after('realize', self.realize)
        self.connect('configure_event', self.reshape)
        self.connect('map_event', self.map)
        self.connect('expose_event', self.expose)
        self.connect('motion-notify-event', self.motion)
        self.connect('button-press-event', self.pressed)
        self.connect('button-release-event', self.select_fire)
        self.connect('scroll-event', self.scroll)

        self.add_events(gtk.gdk.POINTER_MOTION_MASK)
        self.add_events(gtk.gdk.POINTER_MOTION_HINT_MASK)
        self.add_events(gtk.gdk.BUTTON_MOTION_MASK)
        self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.add_events(gtk.gdk.BUTTON_RELEASE_MASK)

        self.fingerprint = ()

        self.lat = 0
        self.minlat = -90
        self.maxlat = 90

        self.highlight_line = None
        self.program_alpha = False
        self.use_joints_mode = False
        self.use_commanded = True
        self.show_limits = True
        self.show_extents_option = True
        self.show_live_plot = True
        self.show_velocity = True
        self.metric_units = True
        self.show_program = True
        self.show_rapids = True
        self.use_relative = True
        self.show_tool = True
        self.show_dtg = True
        self.grid_size = 0.0
        temp = inifile.find("DISPLAY", "LATHE")
        self.lathe_option = bool(temp == "1" or temp == "True" or temp == "true" )
        self.foam_option = bool(inifile.find("DISPLAY", "FOAM"))
        self.show_offsets = False
        self.use_default_controls = True
        self.mouse_btn_mode = 0

        self.a_axis_wrapped = inifile.find("AXIS_A", "WRAPPED_ROTARY")
        self.b_axis_wrapped = inifile.find("AXIS_B", "WRAPPED_ROTARY")
        self.c_axis_wrapped = inifile.find("AXIS_C", "WRAPPED_ROTARY")

        live_axis_count = 0
        for i,j in enumerate("XYZABCUVW"):
            if self.stat.axis_mask & (1<<i) == 0: continue
            live_axis_count += 1
        self.num_joints = int(inifile.find("KINS", "JOINTS") or live_axis_count)
示例#20
0
 def __init__(self, halcomp, widgets):
     self.hal = halcomp
     self.w = widgets
     self.stat = labvcnc.stat()
     self.cmnd = labvcnc.command()
示例#21
0
    def __init__(self, parent=None):
        super(Lcnc_3dGraphics, self).__init__(parent)
        glnav.GlNavBase.__init__(self)

        def C(s):
            a = self.colors[s + "_alpha"]
            s = self.colors[s]
            return [int(x * 255) for x in s + (a, )]

        # requires labvcnc running before laoding this widget
        inifile = os.environ.get('INI_FILE_NAME', '/dev/null')
        self.inifile = labvcnc.ini(inifile)
        self.logger = labvcnc.positionlogger(labvcnc.stat(), C('backplotjog'),
                                             C('backplottraverse'),
                                             C('backplotfeed'),
                                             C('backplotarc'),
                                             C('backplottoolchange'),
                                             C('backplotprobing'),
                                             self.get_geometry())
        # start tracking labvcnc position so we can plot it
        thread.start_new_thread(self.logger.start, (.01, ))
        glcanon.GlCanonDraw.__init__(self, labvcnc.stat(), self.logger)

        # set defaults
        self.current_view = 'p'
        self.fingerprint = ()
        self.select_primed = None
        self.lat = 0
        self.minlat = -90
        self.maxlat = 90

        self._current_file = None
        self.highlight_line = None
        self.program_alpha = False
        self.use_joints_mode = False
        self.use_commanded = True
        self.show_limits = True
        self.show_extents_option = True
        self.gcode_properties = None
        self.show_live_plot = True
        self.show_velocity = True
        self.metric_units = True
        self.show_program = True
        self.show_rapids = True
        self.use_relative = True
        self.show_tool = True
        self.show_dtg = True
        self.grid_size = 0.0
        temp = self.inifile.find("DISPLAY", "LATHE")
        self.lathe_option = bool(temp == "1" or temp == "True"
                                 or temp == "true")
        self.foam_option = bool(self.inifile.find("DISPLAY", "FOAM"))
        self.show_offsets = False
        self.show_overlay = False
        self.enable_dro = False
        self.use_default_controls = True
        self.mouse_btn_mode = 0
        self.use_gradient_background = False

        self.a_axis_wrapped = self.inifile.find("AXIS_A", "WRAPPED_ROTARY")
        self.b_axis_wrapped = self.inifile.find("AXIS_B", "WRAPPED_ROTARY")
        self.c_axis_wrapped = self.inifile.find("AXIS_C", "WRAPPED_ROTARY")

        live_axis_count = 0
        for i, j in enumerate("XYZABCUVW"):
            if self.stat.axis_mask & (1 << i) == 0: continue
            live_axis_count += 1
        self.num_joints = int(
            self.inifile.find("KINS", "JOINTS") or live_axis_count)

        self.object = 0
        self.xRot = 0
        self.yRot = 0
        self.zRot = 0

        # add a 100ms timer to poll labvcnc stats
        self.timer = QTimer()
        self.timer.timeout.connect(self.poll)
        self.timer.start(100)

        self.Green = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0)