You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Прореживание контуров EXCLUDE_OBJECT_DEFINE (#8)
Слайсер пишет контур первого слоя целиком для каждой детали. На плите из
полусотни мелких это больше десяти тысяч точек, и их разбор подвешивает
Klipper: плата отдаёт Timer too close, печать обрывается на первом слое.
Дуглас-Пекер с допуском в миллиметрах, по умолчанию 0.2 — 54 детали дают
1134 точки вместо 13500, силуэт в вебморде остаётся узнаваемым.
Ключ -simplify-objects=0 заменяет контур габаритным прямоугольником,
-no-simplify-objects отключает прореживание.
Крайние по осям точки неудаляемы, поэтому габарит точен при любом допуске —
на него опираются KAMP и LINE_PURGE. Отмена детали идёт по имени и центру
и не затрагивается.
Разбор — стандартными средствами. Значение POLYGON= это обычный JSON:
raw_decode в питоне, json.Decoder с InputOffset в Go, оба заодно сообщают,
где значение кончилось. Аргументы — flag и argparse. Что не разобралось,
оставляем нетронутым.
Go и Python дают одинаковый вывод: сверено на плите из 54 деталей при
допусках 0, 0.1, 0.2, 0.5, 2 и на пятнадцати крайних случаях разбора, коды
возврата на отказах тоже совпадают. Расходятся в одном: ключ, поставленный
ПОСЛЕ пути, flag пропускает, а argparse принимает. Слайсер такую команду не
собирает — он дописывает путь последним.
В питоне разбиение Дугласа-Пекера идёт явным стеком вместо рекурсии: контур
держит тысячи точек.
Co-authored-by: pbannykh <baza182@proton.me>