"""Две термопластичные секции имеют V-разделку. Инструмент проходит вдоль шва, присадка заполняет канавку. Температурное поле и провар требуют отдельной проверки.""" 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, V, cone, main, params, require, section MODEL_ID = "weld" DEFAULTS = { "length": 46, "width": 28, "thickness": 7, "groove_depth": 4, "groove_half_width": 3, } NOTE = "Две термопластичные секции имеют V-разделку. Инструмент проходит вдоль шва, присадка заполняет канавку. Температурное поле и провар требуют отдельной проверки." MODE = "welding" def make_parts(supplied=None): p = params(DEFAULTS, supplied) l, w, h, d, g = [ p[k] for k in ("length", "width", "thickness", "groove_depth", "groove_half_width") ] require(h > d > 1 and l > 4 * g, "Leave a root under the prepared seam") left = section([(-l / 2, 0), (0, 0), (0, h - d), (-g, h), (-l / 2, h)], -w / 2, w) right = section([(0, 0), (l / 2, 0), (l / 2, h), (g, h), (0, h - d)], -w / 2, w) def seam(t): return section([(-g, h), (0, h - d), (g, h)], -w / 2, max(0.02, w * t)) tool = cone(0.5, 3, 12, V(0, -w / 2, h + 4)) return [ Piece("left", "Левая секция с разделкой", left), Piece("right", "Правая секция с разделкой", right), Piece("seam", "Материал сварного шва", seam(1), deform=seam, role="process"), Piece( "tool", "Сварочный наконечник", tool, lambda t: Pose(offset=(0, w * t, 0)), role="tool", ), ] if __name__ == "__main__": main(make_parts, DEFAULTS, MODEL_ID, __file__, NOTE, MODE)