This commit is contained in:
Thaddeus-Maximus
2026-04-03 15:58:58 -05:00
commit f3953d66ae
1516 changed files with 586639 additions and 0 deletions

19
configs/sim.axis.ngcgui/README Executable file
View File

@@ -0,0 +1,19 @@
ngcgui -- Create tabs in the axis gui for subroutines.
pyngcgui -- python, gladevcp implementation of ngcgui that can be embedded in guis like touchy, gscreen gmoccapy
In the packaged version of LinuxCNC, ngcgui_lib is created as a symbolic link to a system directory owned by root:
/usr/share/linuxcnc/ncfiles/ngcgui_lib
This library is not ordinarily changed by the user. To modify a library .ngc file, copy the .ngc file to the [DISPLAY]PROGRAM_PREFIX directory or to a directory that is included in the path specified by [RS274NGC]SUBROUTINE_PATH and (optionally) change the filename.
The search path for LinuxCNC and ngcgui is:
[DISPLAY]PROGRAM_PREFIX
followed in order by all the colon (:) separated directories listed in:
[RS274NGC]SUBROUTINE_PATH
The search for subroutine files uses the first file found with a matching name.
See the examples and the documentation for configuring ngcgui in the startup ini file.

View File

@@ -0,0 +1,21 @@
ngcgui -- Crea pestañas en el gui Axis para las subrutinas.
pyngcgui -- implementación de ngcgui python, gladevcp que se puede incrustar en guis como gmoccapy, touchy, gscreen
En la versión empaquetada de LinuxCNC, ngcgui_lib se crea como un enlace simbólico a un directorio del sistema propiedad root:
/usr/share/linuxcnc/ncfiles/ngcgui_lib
Esta biblioteca normalmente no es cambiada por el usuario. Para modificar un archivo .ngc de la biblioteca,
copie el archivo .ngc en el directorio [DISPLAY]PROGRAM_PREFIX o en un directorio que esté incluido en la
ruta especificada por [RS274NGC]SUBROUTINE_PATH y (opcionalmente) cambie el nombre del archivo.
La ruta de búsqueda para LinuxCNC y ngcgui es:
[DISPLAY]PROGRAM_PREFIX
Seguido en orden por todos los directorios listados separados por dos puntos (:) en:
[RS274NGC]SUBROUTINE_PATH
La búsqueda de archivos de subrutinas utiliza el primer archivo encontrado con un nombre coincidente.
Consulte los ejemplos y la documentación para configurar ngcgui en el archivo ini de arranque.

View File

@@ -0,0 +1,14 @@
# user command file to increase default axis gui size
# invoke with the ini file item:
# [DISPLAY]USER_COMMAND_FILE = axis_resize.py
maxgeo=root_window.tk.call("wm","maxsize",".")
# custom size (to accommodate bigger gladevcp panels)
newsize = '800' + 'x' + '680'
# for fullsize: uncomment this
# newsize=fullsize
root_window.tk.call("wm","geometry",".",newsize)

View File

@@ -0,0 +1,31 @@
#-----------------------------------------------------------------------
# Copyright: 2013
# Author: Dewey Garrett <dgarrett@panix.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#-----------------------------------------------------------------------
# Expand to fullscreen
# for axis gui, include ini item:
# Usage (in ini file):
# [DISPLAY]USER_COMMAND_FILE = fullscreen.py
maxgeo=root_window.tk.call("wm","maxsize",".")
if type(maxgeo) is type(''):
fullsize=maxgeo.split(' ')[0] + 'x' + maxgeo.split(' ')[1]
else:
fullsize=str(maxgeo[0]) + 'x' + str(maxgeo[1])
root_window.tk.call("wm","geometry",".",fullsize)

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="HAL_GremlinPlus" id="hal_gremlin_plus1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<property name="debug">False</property>
<property name="width">-1</property>
<property name="height">-1</property>
<property name="glade_file">default</property>
</object>
</child>
</object>
</interface>

View File

@@ -0,0 +1,10 @@
T1 P1 D0.100000 Z+0.100000 I+95.000000 J+155.000000 Q1 ;
T2 P2 D0.100000 I+85.000000 J+25.000000 Q2 ;
T3 P3 D0.100000 I+275.000000 J+335.000000 Q3 ;
T4 P4 D0.100000 I+265.000000 J+205.000000 Q4 ;
T5 P5 D0.100000 I+210.000000 J+150.000000 Q5 ;
T6 P6 D0.100000 X+0.500000 Z+0.500000 I+120.000000 J+60.000000 Q6 ;
T7 P7 D0.100000 I-30.000000 J+30.000000 Q7 ;
T8 P8 D0.100000 I+240.000000 J+300.000000 Q8 ;
T9 P9 D0.100000 Q9 ;
T10 P10 D0. ; demo zero diameter

View File

@@ -0,0 +1,161 @@
[EMC]
VERSION = 1.1
MACHINE = Ngcgui-demo
DEBUG = 0
[DISPLAY]
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# Ngcgui must precede Ngcguittt
NGCGUI_FONT = Helvetica -12 normal
# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE, TTT_PREAMBLE
# items, specifly:
# a) absolute filename (start with /)
# b) relative filename: search directories specified by
# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = qpocket.ngc
NGCGUI_SUBFILE = qpex.ngc
NGCGUI_SUBFILE = arc2.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = gosper.ngc
# specify "" for a custom tab page
NGCGUI_SUBFILE = ""
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
# nom2 -- no m2 terminator (use %)
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
MAX_SPINDLE_OVERRIDE = 1.0
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_VELOCITY = .25
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
EDITOR = gedit
# use tooltable columns for diam and z only:
TOOL_EDITOR = tooledit diam z
INCREMENTS = 1 in, 0.1 in, 10 mil, 1 mil, 1mm, .1mm, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 1.2
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1
[AXIS_Y]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
HOME = 0.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

View File

@@ -0,0 +1 @@
ngcgui -- comprehensive example

View File

@@ -0,0 +1,174 @@
# Sat Aug 03 09:34:55 CDT 2024
#
# This file: ./ngcgui_cmds.hal
# Created by: /usr/share/linuxcnc/hallib/basic_sim.tcl
# With options:
# From inifile: /home/linuxcnc/linuxcnc/configs/sim.axis.ngcgui/ngcgui.ini
# Halfiles: LIB:basic_sim.tcl
#
# This file contains the hal commands produced by basic_sim.tcl
# (and any hal commands executed prior to its execution).
# ------------------------------------------------------------------
# To use ./ngcgui_cmds.hal in the original inifile (or a copy of it),
# edit to change:
# [HAL]
# HALFILE = LIB:basic_sim.tcl parameters
# to:
# [HAL]
# HALFILE = ./ngcgui_cmds.hal
#
# Notes:
# 1) Inifile Variables substitutions specified in the inifile
# and interpreted by halcmd are automatically substituted
# in the created halfile (./ngcgui_cmds.hal).
# 2) Input pins connected to a signal with no writer are
# not included in the setp listings herein so must be added
# manually
#
# user space components
loadusr -W hal_manualtoolchange
# components
#preloaded module: loadrt tpmod
#preloaded module: loadrt homemod
loadrt trivkins
loadrt motmod base_period_nsec=0 servo_period_nsec=1000000 num_joints=3
#loadrt __servo-thread (not loaded by loadrt, no args saved)
loadrt pid names=J0_pid,J1_pid,J2_pid
loadrt mux2 names=J0_mux,J1_mux,J2_mux
loadrt ddt names=J0_vel,J0_accel,J1_vel,J1_accel,J2_vel,J2_accel
loadrt hypot names=hyp_xy,hyp_xyz
loadrt sim_home_switch names=J0_switch,J1_switch,J2_switch
loadrt sim_spindle names=sim_spindle
loadrt limit2 names=limit_speed
loadrt lowpass names=spindle_mass
loadrt near names=near_speed
loadrt scale names=rpm_rps
# pin aliases
# param aliases
# signals
# nets
net J0:acc J0_accel.out
net J0:enable joint.0.amp-enable-out => J0_pid.enable
net J0:homesw J0_switch.home-sw => joint.0.home-sw-in
net J0:on-pos J0_pid.output => J0_mux.in1
net J0:pos-cmd joint.0.motor-pos-cmd => J0_pid.command
net J0:pos-fb J0_mux.out => J0_mux.in0 J0_switch.cur-pos J0_vel.in joint.0.motor-pos-fb
net J0:vel J0_vel.out => J0_accel.in hyp_xy.in0 hyp_xyz.in0
net J1:acc J1_accel.out
net J1:enable joint.1.amp-enable-out => J1_pid.enable
net J1:homesw J1_switch.home-sw => joint.1.home-sw-in
net J1:on-pos J1_pid.output => J1_mux.in1
net J1:pos-cmd joint.1.motor-pos-cmd => J1_pid.command
net J1:pos-fb J1_mux.out => J1_mux.in0 J1_switch.cur-pos J1_vel.in joint.1.motor-pos-fb
net J1:vel J1_vel.out => J1_accel.in hyp_xy.in1 hyp_xyz.in1
net J2:acc J2_accel.out
net J2:enable joint.2.amp-enable-out => J2_pid.enable
net J2:homesw J2_switch.home-sw => joint.2.home-sw-in
net J2:on-pos J2_pid.output => J2_mux.in1
net J2:pos-cmd joint.2.motor-pos-cmd => J2_pid.command
net J2:pos-fb J2_mux.out => J2_mux.in0 J2_switch.cur-pos J2_vel.in joint.2.motor-pos-fb
net J2:vel J2_vel.out => J2_accel.in hyp_xyz.in2
net estop:loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in
net sample:enable motion.motion-enabled => J0_mux.sel J1_mux.sel J2_mux.sel
net spindle-at-speed near_speed.out => spindle.0.at-speed
net spindle-index-enable sim_spindle.index-enable <=> spindle.0.index-enable
net spindle-orient spindle.0.orient => spindle.0.is-oriented
net spindle-pos sim_spindle.position-fb => spindle.0.revs
net spindle-rpm-filtered spindle_mass.out => near_speed.in2 rpm_rps.in
net spindle-rps-filtered rpm_rps.out => spindle.0.speed-in
net spindle-speed-cmd spindle.0.speed-out => limit_speed.in near_speed.in1
net spindle-speed-limited limit_speed.out => sim_spindle.velocity-cmd spindle_mass.in
net tool:change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool:changed hal_manualtoolchange.changed => iocontrol.0.tool-changed
net tool:prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool:prep-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net xy:vel hyp_xy.out
net xyz:vel hyp_xyz.out
# parameter values
setp J0_accel.tmax 0
setp J0_mux.tmax 0
setp J0_pid.do-pid-calcs.tmax 0
setp J0_switch.tmax 0
setp J0_vel.tmax 0
setp J1_accel.tmax 0
setp J1_mux.tmax 0
setp J1_pid.do-pid-calcs.tmax 0
setp J1_switch.tmax 0
setp J1_vel.tmax 0
setp J2_accel.tmax 0
setp J2_mux.tmax 0
setp J2_pid.do-pid-calcs.tmax 0
setp J2_switch.tmax 0
setp J2_vel.tmax 0
setp hyp_xy.tmax 0
setp hyp_xyz.tmax 0
setp limit_speed.tmax 0
setp motion-command-handler.tmax 0
setp motion-controller.tmax 0
setp near_speed.difference 10
setp near_speed.scale 1.1
setp near_speed.tmax 0
setp rpm_rps.tmax 0
setp servo-thread.tmax 0
setp sim_spindle.scale 0.01666667
setp sim_spindle.tmax 0
setp spindle_mass.gain 0.07
setp spindle_mass.tmax 0
# realtime thread/function links
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf J0_pid.do-pid-calcs servo-thread
addf J1_pid.do-pid-calcs servo-thread
addf J2_pid.do-pid-calcs servo-thread
addf J0_mux servo-thread
addf J1_mux servo-thread
addf J2_mux servo-thread
addf J0_vel servo-thread
addf J0_accel servo-thread
addf J1_vel servo-thread
addf J1_accel servo-thread
addf J2_vel servo-thread
addf J2_accel servo-thread
addf hyp_xy servo-thread
addf hyp_xyz servo-thread
addf J0_switch servo-thread
addf J1_switch servo-thread
addf J2_switch servo-thread
addf limit_speed servo-thread
addf spindle_mass servo-thread
addf rpm_rps servo-thread
addf near_speed servo-thread
addf sim_spindle servo-thread
# setp commands for unconnected input pins
setp J0_pid.FF0 1.0
setp J0_pid.Pgain 0
setp J0_pid.Dgain 0
setp J0_pid.Igain 0
setp J0_pid.FF1 0
setp J0_pid.FF2 0
setp J1_pid.FF0 1.0
setp J1_pid.Pgain 0
setp J1_pid.Dgain 0
setp J1_pid.Igain 0
setp J1_pid.FF1 0
setp J1_pid.FF2 0
setp J2_pid.FF0 1.0
setp J2_pid.Pgain 0
setp J2_pid.Dgain 0
setp J2_pid.Igain 0
setp J2_pid.FF1 0
setp J2_pid.FF2 0
setp J0_switch.hysteresis 0.05
setp J0_switch.home-pos 0.10
setp J1_switch.hysteresis 0.05
setp J1_switch.home-pos 0.10
setp J2_switch.hysteresis 0.05
setp J2_switch.home-pos 0.10
setp sim_spindle.scale 0.01666667
setp limit_speed.maxv 5000.0
setp spindle_mass.gain .07
setp near_speed.scale 1.1
setp near_speed.difference 10

View File

@@ -0,0 +1 @@
ngcgui -- ejemplo completo

View File

@@ -0,0 +1,163 @@
[EMC]
VERSION = 1.1
MACHINE = Ngcgui-gcmc-demo
DEBUG = 0
[DISPLAY]
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# Ngcgui must precede Ngcguittt
NGCGUI_FONT = Helvetica -12 normal
# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE, TTT_PREAMBLE
# items, specifly:
# a) absolute filename (start with /)
# b) relative filename: search directories specified by
# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_SUBFILE = rectangle.gcmc
NGCGUI_SUBFILE = drill.gcmc
NGCGUI_SUBFILE = involute-gear.gcmc
NGCGUI_SUBFILE = trochoid-path.gcmc
NGCGUI_SUBFILE = cpocket.gcmc
NGCGUI_SUBFILE = star.gcmc
NGCGUI_SUBFILE = wheels.gcmc
NGCGUI_SUBFILE = xyz.ngc
# specify "" for a custom tab page
NGCGUI_SUBFILE = ""
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
# nom2 -- no m2 terminator (use %)
# example for gcmc includes: separate dirnames with colons:
# GCMC_INCLUDE_PATH = dir1:dir2:...
GCMC_INCLUDE_PATH = ../../nc_files/gcmc_lib
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
MAX_SPINDLE_OVERRIDE = 1.0
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_VELOCITY = .25
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
EDITOR = gedit
# use tooltable columns for diam and z only:
TOOL_EDITOR = tooledit diam z
INCREMENTS = 1 in, 0.1 in, 10 mil, 1 mil, 1mm, .1mm, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/gcmc_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = X Y Z
NO_FORCE_HOMING = 1
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 1.2
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1
[AXIS_Y]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
HOME = 0.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

View File

@@ -0,0 +1,15 @@
ngcgui embedded as axis tab
with support for .gcmc (G-Code Meta Compiler) files
The .ngc and .gcmc files can be intermixed with
ini file lines like:
NGCGUI_SUBFILE = drill.gcmc
NGCGUI_SUBFILE = wheels.gcmc
NGCGUI_SUBFILE = star.gcmc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = ""
See the ini file for example details

View File

@@ -0,0 +1,15 @@
ngcgui incrustado como pestaña de Axis
con soporte para archivos .gcmc (G-Code Meta Compiler)
Los archivos .ngc y .gcmc se pueden mezclar con
líneas de archivo ini como:
NGCGUI_SUBFILE = drill.gcmc
NGCGUI_SUBFILE = wheels.gcmc
NGCGUI_SUBFILE = star.gcmc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = ""
Ver el archivo ini para detalles de ejemplo

View File

@@ -0,0 +1,131 @@
[EMC]
VERSION = 1.1
MACHINE = ngcgui-lathe
[DISPLAY]
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -12 normal
# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE, TTT_PREAMBLE
# items, specifly:
# a) absolute filename (start with /)
# b) relative filename: search directories specified by
# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH
NGCGUI_PREAMBLE = lathe_std.ngc
NGCGUI_SUBFILE = id.ngc
NGCGUI_SUBFILE = od.ngc
NGCGUI_SUBFILE = taper-od.ngc
NGCGUI_SUBFILE = g76base.ngc
NGCGUI_SUBFILE = g76diam.ngc
# specify "" for a custom tab page
NGCGUI_SUBFILE = ""
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
# nom2 -- no m2 terminator (use %)
DISPLAY = axis
LATHE = 1
EDITOR = gedit
# use tooltable columns for: diam front back orien
TOOL_EDITOR = tooledit diam front back orien
CYCLE_TIME = 0.100
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
MAX_SPINDLE_OVERRIDE = 1.0
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim-lathe.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib/lathe:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 50000
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = X Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.0
MAX_LINEAR_VELOCITY = 3.333334
DEFAULT_LINEAR_ACCELERATION = 20.0
MAX_LINEAR_ACCELERATION = 20.0
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = lathe.tbl
TOOL_CHANGE_POSITION = 1 0 1
TOOL_CHANGE_WITH_SPINDLE_ON = 1
[KINS]
KINEMATICS = trivkins coordinates=xz
JOINTS = 2
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 3.333334
MAX_ACCELERATION = 20.0
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 3.333334
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 3.333334
MAX_ACCELERATION = 20.0
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 5.0
HOME_LATCH_VEL = 1.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1
[JOINT_1]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 3.333334
MAX_ACCELERATION = 20.0
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 5.0
HOME_LATCH_VEL = 1.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1

View File

@@ -0,0 +1 @@
ngcgui example with lathe subroutines

View File

@@ -0,0 +1 @@
Ejemplo ngcgui con subrutinas para torno

View File

@@ -0,0 +1,149 @@
[EMC]
VERSION = 1.1
MACHINE = Ngcgui-demo
DEBUG = 0
[DISPLAY]
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
# Note: TKPKG (one or more) specifies tcl/tk apps to embed in axis tab pages
TKPKG = Ngcgui 1.0
# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE, TTT_PREAMBLE
# items, specifly:
# a) absolute filename (start with /)
# b) relative filename: search directories specified by
# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_FONT = Helvetica -12 normal
NGCGUI_OPTIONS = nonew noremove
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
# nom2 -- no m2 terminator (use %)
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
MAX_SPINDLE_OVERRIDE = 1.0
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_VELOCITY = .25
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
EDITOR = gedit
TOOL_EDITOR = tooledit
INCREMENTS = 1 in, 0.1 in, 10 mil, 1 mil, 1mm, .1mm, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = X Y Z
#NO_FORCE_HOMING = 1
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 1.2
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1
[AXIS_Y]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
HOME = 0.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

View File

@@ -0,0 +1 @@
ngcgui -- simple example subroutines

View File

@@ -0,0 +1 @@
ngcgui -- ejemplo simple de subrutinas

View File

@@ -0,0 +1,162 @@
[EMC]
VERSION = 1.1
MACHINE = pyngcgui-axis demo
DEBUG = 0
[DISPLAY]
PROGRAM_PREFIX = /home/linuxcnc/linuxcnc/nc_files
USER_COMMAND_FILE = ./fullscreen.py
EMBED_TAB_NAME = Pyngcgui
EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui
EMBED_TAB_NAME = Gremlinview
EMBED_TAB_COMMAND = gladevcp -x {XID} gremlin_view.ui
NGCGUI_FONT = Helvetica -12 normal
# for startup NGCGUI_PREAMBLE, NGCGUI_SUBFILE, NGCGUI_POSTAMBLE
# items, specifly:
# a) absolute filename (start with /)
# b) relative filename: search directories specified by
# [DISPLAY]PROGRAM_PREFIX and [RS274NGC]SUBROUTINE_PATH
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = gosper.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = qpocket.ngc
NGCGUI_SUBFILE = arc2.ngc
NGCGUI_SUBFILE = ihex.ngc
# specify "" for a custom tab page
NGCGUI_SUBFILE = ""
NGCGUI_OPTIONS =
#NGCGUI_OPTIONS = opt1 opt2 ...
# opt items:
# nonew -- disallow making new tab page
# noremove -- disallow removing any tab page
# noauto -- no autosend (makeFile, then manually send)
# noiframe -- no internal image, image on separate toplevel
# nom2 -- no m2 terminator (use %)
DISPLAY = axis
CYCLE_TIME = 0.100
HELP_FILE = doc/help.txt
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
MAX_SPINDLE_OVERRIDE = 1.0
MAX_LINEAR_VELOCITY = 1.2
DEFAULT_LINEAR_VELOCITY = .25
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
EDITOR = gedit
# use tooltable columns for diam and z only:
TOOL_EDITOR = tooledit diam z
INCREMENTS = 1 in, 0.1 in, 10 mil, 1 mil, 1mm, .1mm, 1/8000 in
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python3
[RS274NGC]
PARAMETER_FILE = sim.var
SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 1.2
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1
[AXIS_Y]
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -400.0
MAX_LIMIT = 400.0
HOME = 0.0
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 1
[AXIS_Z]
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
MIN_LIMIT = -800.0
MAX_LIMIT = 100.0
HOME = 0.0
HOME_OFFSET = 1.0
HOME_SEARCH_VEL = 20.0
HOME_LATCH_VEL = 20.0
HOME_USE_INDEX = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

View File

@@ -0,0 +1,5 @@
pyngcgui_axis
Demonstrates pyngcgui as gladevcp app in axis gui
The original ngcgui may be better integrated in the axis gui

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="default_width">712</property>
<property name="default_height">200</property>
<child>
<object class="PyNgcGui" id="pyngcgui1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<property name="use_keyboard">False</property>
<property name="debug">False</property>
<property name="verbose">False</property>
<property name="send_function_name">send_to_axis</property>
<property name="send_to_dir"></property>
<property name="control_font_name"></property>
</object>
</child>
</object>
</interface>

View File

@@ -0,0 +1,5 @@
pyngcgui_axis
Demuestra pyngcgui como aplicación gladevcp en gui Axis
El ngcgui original puede integrarse mejor en la interfaz Axis

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="default_width">712</property>
<property name="default_height">200</property>
<child>
<object class="PyNgcGui" id="pyngcgui1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<property name="use_keyboard">True</property>
<property name="debug">False</property>
<property name="verbose">False</property>
<property name="send_function_name">default_send</property>
<property name="send_to_dir"></property>
<property name="control_font_name"></property>
</object>
</child>
</object>
</interface>

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T98876 P543 Z+0.100000 ;big tool number

119
configs/sim.axis.ngcgui/sim.var Executable file
View File

@@ -0,0 +1,119 @@
5161 0.000000
5162 0.000000
5163 0.000000
5164 0.000000
5165 0.000000
5166 0.000000
5167 0.000000
5168 0.000000
5169 0.000000
5181 0.000000
5182 0.000000
5183 0.000000
5184 0.000000
5185 0.000000
5186 0.000000
5187 0.000000
5188 0.000000
5189 0.000000
5210 0.000000
5211 0.000000
5212 0.000000
5213 0.000000
5214 0.000000
5215 0.000000
5216 0.000000
5217 0.000000
5218 0.000000
5219 0.000000
5220 1.000000
5221 0.000000
5222 0.000000
5223 0.000000
5224 0.000000
5225 0.000000
5226 0.000000
5227 0.000000
5228 0.000000
5229 0.000000
5230 0.000000
5241 0.000000
5242 0.000000
5243 0.000000
5244 0.000000
5245 0.000000
5246 0.000000
5247 0.000000
5248 0.000000
5249 0.000000
5250 0.000000
5261 0.000000
5262 0.000000
5263 0.000000
5264 0.000000
5265 0.000000
5266 0.000000
5267 0.000000
5268 0.000000
5269 0.000000
5270 0.000000
5281 0.000000
5282 0.000000
5283 0.000000
5284 0.000000
5285 0.000000
5286 0.000000
5287 0.000000
5288 0.000000
5289 0.000000
5290 0.000000
5301 0.000000
5302 0.000000
5303 0.000000
5304 0.000000
5305 0.000000
5306 0.000000
5307 0.000000
5308 0.000000
5309 0.000000
5310 0.000000
5321 0.000000
5322 0.000000
5323 0.000000
5324 0.000000
5325 0.000000
5326 0.000000
5327 0.000000
5328 0.000000
5329 0.000000
5330 0.000000
5341 0.000000
5342 0.000000
5343 0.000000
5344 0.000000
5345 0.000000
5346 0.000000
5347 0.000000
5348 0.000000
5349 0.000000
5350 0.000000
5361 0.000000
5362 0.000000
5363 0.000000
5364 0.000000
5365 0.000000
5366 0.000000
5367 0.000000
5368 0.000000
5369 0.000000
5370 0.000000
5381 0.000000
5382 0.000000
5383 0.000000
5384 0.000000
5385 0.000000
5386 0.000000
5387 0.000000
5388 0.000000
5389 0.000000
5390 0.000000

View File

@@ -0,0 +1,119 @@
5161 0.000000
5162 0.000000
5163 0.000000
5164 0.000000
5165 0.000000
5166 0.000000
5167 0.000000
5168 0.000000
5169 0.000000
5181 0.000000
5182 0.000000
5183 0.000000
5184 0.000000
5185 0.000000
5186 0.000000
5187 0.000000
5188 0.000000
5189 0.000000
5210 0.000000
5211 0.000000
5212 0.000000
5213 0.000000
5214 0.000000
5215 0.000000
5216 0.000000
5217 0.000000
5218 0.000000
5219 0.000000
5220 1.000000
5221 0.000000
5222 0.000000
5223 0.000000
5224 0.000000
5225 0.000000
5226 0.000000
5227 0.000000
5228 0.000000
5229 0.000000
5230 0.000000
5241 0.000000
5242 0.000000
5243 0.000000
5244 0.000000
5245 0.000000
5246 0.000000
5247 0.000000
5248 0.000000
5249 0.000000
5250 0.000000
5261 0.000000
5262 0.000000
5263 0.000000
5264 0.000000
5265 0.000000
5266 0.000000
5267 0.000000
5268 0.000000
5269 0.000000
5270 0.000000
5281 0.000000
5282 0.000000
5283 0.000000
5284 0.000000
5285 0.000000
5286 0.000000
5287 0.000000
5288 0.000000
5289 0.000000
5290 0.000000
5301 0.000000
5302 0.000000
5303 0.000000
5304 0.000000
5305 0.000000
5306 0.000000
5307 0.000000
5308 0.000000
5309 0.000000
5310 0.000000
5321 0.000000
5322 0.000000
5323 0.000000
5324 0.000000
5325 0.000000
5326 0.000000
5327 0.000000
5328 0.000000
5329 0.000000
5330 0.000000
5341 0.000000
5342 0.000000
5343 0.000000
5344 0.000000
5345 0.000000
5346 0.000000
5347 0.000000
5348 0.000000
5349 0.000000
5350 0.000000
5361 0.000000
5362 0.000000
5363 0.000000
5364 0.000000
5365 0.000000
5366 0.000000
5367 0.000000
5368 0.000000
5369 0.000000
5370 0.000000
5381 0.000000
5382 0.000000
5383 0.000000
5384 0.000000
5385 0.000000
5386 0.000000
5387 0.000000
5388 0.000000
5389 0.000000
5390 0.000000