Files
LeoVoron2.4/macros/tools.cfg
2025-03-16 03:22:40 +03:00

92 lines
5.0 KiB
INI
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#Аргументы
#NAME (строка) — отфильтруйте результаты по названию (отображайте только переменные с названиями, содержащими эту строку)
#VALUE (строка) — отфильтруйте результаты по значению (отображайте только значения, содержащие это значение)
#SHOW_CFG (целое число, 0-1) — установите значение 1, чтобы включить в вывод всю конфигурацию. По умолчанию 0 (конфигурация отфильтровывается)
#Примеры
#DUMP_VARIABLES: Возвращает все переменные (за исключением printer['configfile'].config и printer['configfile'].settings, так как они содержат всю конфигурацию).
#DUMP_VARIABLES NAME=stepper: Возвращает все переменные, в имени которых есть строка stepper.
#DUMP_VARIABLES VALUE=extruder : Возвращает все переменные, в значении которых есть строка extruder.
#DUMP_VARIABLES NAME=stepper VALUE=extruder : Возвращает все переменные, в названии которых есть строка stepper и в значении которых есть строка extruder.
#DUMP_VARIABLES SHOW_CFG=1 : Возвращает все переменные, включая конфигурацию.
[gcode_macro DUMP_VARIABLES]
gcode:
{% set filter_name = params.NAME|default('')|string|lower %}
{% set filter_value = params.VALUE|default('')|string|lower %}
{% set show_cfg = params.SHOW_CFG|default(0)|int %}
{% set out = [] %}
{% for key1 in printer %}
{% for key2 in printer[key1] %}
{% if (show_cfg or not (key1|lower == 'configfile' and key2|lower in ['config', 'settings'])) and (filter_name in key1|lower or filter_name in key2|lower) and filter_value in printer[key1][key2]|string|lower %}
{% set dummy = out.append("printer['%s'].%s = %s" % (key1, key2, printer[key1][key2])) %}
{% endif %}
{% else %}
{% if filter_name in key1|lower and filter_value in printer[key1]|string|lower %}
{% set dummy = out.append("printer['%s'] = %s" % (key1, printer[key1])) %}
{% endif %}
{% endfor %}
{% endfor %}
{action_respond_info(out|join("\n"))}
#Аргументы
#NAME (строка) (обязательно) — укажите имя переменной, которую вы хотите получить.
#Примеры
#GET_VARIABLE NAME=toolhead: Возвращает значение и тип переменной printer.toolhead.
#GET_VARIABLE NAME=bed_mesh.profiles.default.points.1.0: Возвращает значение и тип переменной printer.bed_mesh.profiles.default.points[1][0].
[gcode_macro GET_VARIABLE]
gcode:
{% set names = (params.NAME).split('.')|list %}
{% set join = (params.JOIN)|default(1)|int %}
{% set _dummy0 = namespace( break = 0 ) %}
{% set _dummy1 = namespace( out = printer[names|first] ) %}
{% for name in names if _dummy0.break == 0 %}
{% if loop.index > 1 %}
{% if name in _dummy1.out %}
{% set _dummy1.out = _dummy1.out[name] %}
{% elif name[0] in '0123456789' and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping and _dummy1.out|length > name[0]|int %}
{% set _dummy1.out = _dummy1.out[name|int] %}
{% else %}
{% set _dummy0.break = loop.index0 %}
{% endif %}
{% endif %}
{% endfor %}
{% if _dummy1.out is boolean %}
{ action_respond_info('Type: boolean') }
{% elif _dummy1.out is float %}
{ action_respond_info('Type: float') }
{% elif _dummy1.out is integer %}
{ action_respond_info('Type: integer') }
{% elif _dummy1.out is mapping %}
{ action_respond_info('Type: mapping') }
{% elif _dummy1.out is string %}
{ action_respond_info('Type: string') }
{% elif _dummy1.out is iterable %}
{ action_respond_info('Type: iterable') }
{% elif _dummy1.out is none %}
{ action_respond_info('Type: none') }
{% elif _dummy1.out is undefined %}
{ action_respond_info('Type: undefined') }
{% elif _dummy1.out is callable %}
{ action_respond_info('Type: callable') }
{% else %}
{ action_respond_info('Type: unknown') }
{% endif %}
{% if join and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping %}
{ action_respond_info('%s' % _dummy1.out|join("\n")) }
{% else %}
{ action_respond_info('%s' % _dummy1.out) }
{% endif %}
{% if _dummy0.break != 0 %}
{ action_respond_info('"printer.%s" does not contain "%s"!' % (names[0:_dummy0.break]|join('.'), names[_dummy0.break])) }
{% endif %}