Вот вам ещё ОКР-контент.
Понял, что стол в мастерской очень быстро заваливается вещами, которые, вроде как, нужны под рукой, поэтому прятать их в ящик неудобно. Сначала решил купить для упорядочивания канцелярский органайзер, но очень быстро уперся в недостаточную гибкость и неподходящие размеры как самих органайзеров, так и ячеек в них.
В этом проекте попробовал две новые для себя фишки 3D-печати: длинные мосты и разглаживание.
Чисто формально каждый новый слой при печати должен лежать на предыдущем. Если геометрия модели не подходит для этого, то печатается поддержка: специальная искусственная хрупкая башенка от стола до того места, где у детали нависание. Но если у нависания с двух сторон есть опорная часть детали, то настоящая физика нередко позволяет нам протянуть ниточку пластика прямо по воздуху горизонтально без поддержек. Это называется мостом. Нить охлаждается и твердеет сразу в процессе вытягивания, что чисто в теории не даёт ей провиснуть. У меня мостами сделаны ниши для выдвижных ящичков: поддержки там потребовались на ребре и небольшая полоска по центру. Качество поверхности так себе, но геометрия сохранилась, что и нужно было. Получилось, правда, со второго раза. Этот манёвр (неудачная попытка) стоил мне половину катушки. Но всё равно рекомендую.
Разглаживание — специальная механика, с помощью которой горящее сопло водит по поверхности и размазывает пластик, из-за чего поверхность становится чуть более плоской и глянцевой. Я пробовал такой метод для улучшения прозрачности стенок ящичков, но, к сожалению, эффекта это не дало. Полагаю, что более прозрачные крышки можно было бы напечатать только на стекле. И ещё из-за разглаживания пластик забил термобарьер, так что пришлось впервые разбирать голову у нового принтера, благо, это делается не слишком сложно. Но всё равно не рекомендую.
#life#diy#окр
#Functions are first-class citizens in Python:
# They can be passed as arguments to other functions,
# returned as values from other functions, and
# assigned to variables and stored in data structures.
»> def myfunc(a, b):
... return a + b
...
»> funcs = [myfunc]
»> funcs[0]
<function myfunc at 0x107012230>
»> funcs[0](2, 3)
5
# Functions are first-class citizens in Python.
# They can be passed as arguments to other functions,
# returned as values from other #functions, and
# assigned to variables and stored in data structures.
»> def myfunc(a, b):
... return a + b
...
»> funcs = [myfunc]
»> funcs[0]
<function myfunc at 0x107012230>
»> funcs[0](2, 3)
5
https://docs.python.org/3/library/subprocess.html
The #subprocess module allows you to spawn new #processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older #modules and #functions.
#python
https://docs.python.org/3/library/atexit.html
The #atexit module defines #functions to #register and #unregister cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination. atexit runs these functions in the reverse order in which they were registered; if you register A, B, and C, at #interpreter#termination time they will be run in the order C, B, A.