setar писал(а):2.2
в свойствах материала "Custom Syntax"
<BED_TEMP_REDUCE>=[M140 S<BED-20>; reduce bed heat]
вместо фиксированной величены уменьшения температуры можно истользовать математику и высоту Z
например S<BED-Z/1.45>
К гигантскому сожалению математика полностью тут не работает. Только + или -, никаких умножений и делений. И причем только одно последовательное действие.
Например, пусть BED=60. Определим новый токен <TEST>:
<TEST>=[
M104 S<BED-1>
M104 S<BED-1-1>
M104 S<<BED>-1-1>
M104 S<<BED-1>-1>
M104 S<BED>-1-1
M104 S<BED-BED+1>
M104 S<BED<BED>>
M104 S<BED<BED>+1>
]
В результате вызова <TEST> в конечный gcode будут внесены строки:
M104 S59
M104 S59
M104 S<60-1-1>
M104 S<59-1>
M104 S60-1-1
M104 S60
M104 S60>
M104 S60+1>
Как видим даже попытка искусственно удвоить BED путем сложения BED+BED в разном синтаксисе к успехам не привела.
Вместе с тем две конструкции M104 S<BED<EXT>> и M104 S<BED<EXT-2>> как ни странно жизнеспособны. EXT прекрасно подставляется.
Например, при EXT = 1 результатом будет gcode M104 S61 и M104 S59 соответственно. Таким образом <BED<EXT-2>> это что-то типа 60+(1-2).
Если заменить EXT на токен BOX, то связка работать не будет. Если использовать TEMP, то снова заработает.
Где логика?((
А теперь собственно вопрос к уважаемому setar и коллегам. Реально нужна помощь!
Сделал вторую голову на свой принтер. Переключение осуществляется без сервопривода, а только за счет механического движения портала.
https://youtu.be/zxtQChU2hyUСтоит задача - научить kisslicer вставлять код переключения головок. Если использовать абсолютные координаты, то последовательность действий для переключения отличается только значениями X. Если относительные координаты, то направлениями перемещения по оси X, т.е. надо менять + на - и наоборот.
Оптимально было бы что-то типа ветвления, но тут нет конструкций типа "IF ELSE".
Решил схитрить. Определил два токена <REMOVE0> и <REMOVE1> (внутри них переключение слева-направо и справа-налево соответственно).
Во вкладке "Select New Ext & Warm" прописал <REMOVE<EXT+0>>
При переключении слайсер честно вставляет в код строки REMOVE0 или REMOVE1 в зависимости от текущего экструдера, но никак не содержимое данных токенов.((
Получается, что он не идентифицирует искусственно созданные записи REMOVE0 и REMOVE1 как токены.
Что делать? Весь мозг себе сломал.. Перерыл родной форум kisslicer, но ничего путного не нашел.
Можно было бы одним общим токеном обойтись. Типа на входе 0 или 1 (Т0 и Т1), а на выходе +Х или -Х соответственно. Но тогда нужна математика, а ее тут НОЛЬ!
Подскажите в каком направлении копать???