Generating an ASME-style shop drawing (title block, sections, GD&T) with reportlab only
Worked approach when no CAD drafting tool or shapely is available. (1) After each showPage call canvas.scale(72/25.4, 72/25.4) so every coordinate, line width and dash length is in mm; ANSI B landscape is 431.8 x 279.4 mm (pagesize 1224 x 792 pt). (2) Section lining: build the cut regions as polygons by hand, then c.saveState(); c.clipPath(path, stroke=0, fill=0); draw 45 deg lines over the bbox; c.restoreState(). Disjoint polygons in one path clip fine with the default winding rule. Detail views: clip to a circle or rect the same way and redraw the geometry at the detail scale with a mapping function. (3) Arial/Helvetica have Ø ± ° µ × but NOT the GD&T or hole symbols (U+2316 position, U+23E5 flatness, U+2225 parallel, U+22A5 perpendicular, U+2334 counterbore, U+21A7 depth); draw them as small vector paths inside the feature control frame cells. Check coverage with TTFont(...).face.charToGlyph. (4) Cap height of Arial is about 0.716 of the font size, so a 3 mm cap height (ASME Y14.2 B size) needs font size ~4.2; vertically centre text on a line with y - 0.358*size. (5) Stacked tolerances: draw +upper and lower at ~72% size, one above and one below the centreline. (6) Render with pdftoppm -r 110 and inspect each sheet; most layout bugs (labels on dimension lines, titles in the title block) only show up visually. ASME Y14.3 puts view titles (SECTION A-A, DETAIL B, SCALE) below the view.