"""Вращается установленная планка. Она перекрывает две ответные полки снизу. Установку оси выполнять с обратной стороны до монтажа панели.""" import FreeCAD # noqa: F401 (initialize the CAD runtime first) # isort: split import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from common import Piece, Pose, box, cyl, join, main, params, require MODEL_ID = "turn-tab" DEFAULTS = { "width": 50, "depth": 34, "height": 20, "bar_length": 42, "bar_width": 5, "clearance": 0.3, } NOTE = "Вращается установленная планка. Она перекрывает две ответные полки снизу. Установку оси выполнять с обратной стороны до монтажа панели." MODE = "rigid" def make_parts(supplied=None): p = params(DEFAULTS, supplied) w, d, h, bl, bw, c = [ p[k] for k in ("width", "depth", "height", "bar_length", "bar_width", "clearance") ] require( w > bl + 4 and bl > w * 0.6 and h > 12 and d > bw + 8, "Bar must overlap the receiving ledges", ) base = box(-w / 2, -d / 2, 0, w, d, 3) for sign in (-1, 1): base = join( base, box(-w / 2 if sign < 0 else w / 2 - 3, -d / 2, 3, 3, d, h - 3), box(-w / 2 if sign < 0 else w / 2 - 11, -d / 2, h - 3, 11, d, 3), ) lid = box(-w / 2 + 4, -d / 2 + 2, h + c, w - 8, d - 4, 3).cut( cyl(2 + c, 7, (0, 0, h - 1)) ) bar = join( box(-bl / 2, -bw / 2, h - 6, bl, bw, 3 - c), cyl(2, 9 + 2 * c, (0, 0, h - 3 - c)), cyl(4, 2, (0, 0, h + 6 + c)), ) return [ Piece("receiver", "Рама с двумя полками", base), Piece("lid", "Съёмная панель", lid), Piece("bar", "Планка с осью и ручкой", bar, lambda t: Pose(angle=90 * (1 - t))), ] if __name__ == "__main__": main(make_parts, DEFAULTS, MODEL_ID, __file__, NOTE, MODE)