"""Площадка надевается на стойку, затем клин входит в поперечное окно. Наклон выбирает зазор. Усилие и самоторможение требуют пробы.""" 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, join, main, params, phase, require, section MODEL_ID = "wedge" DEFAULTS = { "width": 46, "depth": 30, "post_width": 8, "post_depth": 12, "plate_height": 10, "wedge_length": 44, "clearance": 0.3, } NOTE = "Площадка надевается на стойку, затем клин входит в поперечное окно. Наклон выбирает зазор. Усилие и самоторможение требуют пробы." MODE = "rigid" def make_parts(supplied=None): p = params(DEFAULTS, supplied) w, d, pw, pd, h, wl, c = [ p[k] for k in ( "width", "depth", "post_width", "post_depth", "plate_height", "wedge_length", "clearance", ) ] require( w > pw + 10 and d > pd + 8 and h > 5 and wl > pw + 10, "Allow walls around the slot", ) base = join( box(-w / 2, -d / 2, 0, w, d, 3), box(-pw / 2, -pd / 2, 3, pw, pd, h + 14) ) base = base.cut(box(-pw / 2 - 1, -pd / 2 + 1, h + 3, pw + 2, pd - 2, 6)) plate = box(-w / 2 + 2, -d / 2 + 2, h, w - 4, d - 4, 3).cut( box(-pw / 2 - c, -pd / 2 - c, h - 1, pw + 2 * c, pd + 2 * c, 5) ) wedge = section( [ (-wl / 2, h + 3 + c), (wl / 2, h + 3 + c), (wl / 2, h + 10), (-wl / 2, h + 3.8 + c), ], -pd / 2 + 1 + c, pd - 2 - 2 * c, ) wedge = join(wedge, box(wl / 2 - 2, -pd / 2 - 2, h + 3 + c, 4, pd + 4, 8)) return [ Piece("receiver", "Основание со щелевой стойкой", base), Piece( "plate", "Прижимаемая площадка", plate, lambda t: Pose(offset=(0, 0, 22 * (1 - phase(t, 0, 0.4)))), ), Piece( "wedge", "Клиновой ключ", wedge, lambda t: Pose(offset=((wl + 5) * (1 - phase(t, 0.4, 1)), 0, 0)), ), ] if __name__ == "__main__": main(make_parts, DEFAULTS, MODEL_ID, __file__, NOTE, MODE)