8bd0739653
Each TRO marker gains a UID attribute: a unique, permanent four-digit number in the same space as the TeileId of the CSV export and the ID attribute of SSG_LIB (dxfmakros/Lisp/ssg_id.lsp). The visible ID (TRO03) is untouched - it stays the speaking name that TRO_EDIT and TRO_INSERT work with. The UID is a separate tag on purpose: IDSCHECK treats ID as numeric and would overwrite TRO03 with a number while correcting duplicates. Numbers are allocated above the highest already in use, taken from two sources - the ID attributes of the drawing and the TeileId of every CSV object. The second source is the one that matters here: a mechanical drawing not built with SSG_LIB carries no ID attributes at all (in the Mubea plan only 10 of 669 blocks have any attributes), so without it the run would start at 0001 and take numbers the CSV already uses for components. With it the markers start at 0062, above TeileId 0061. With --flow each edge now also gets a CONNECTION_ARROW block at the midpoint of the arrow, rotated along it, holding FROM_UID/TO_UID plus FROM_TRO/TO_TRO as readable text and KIND. That makes the relationship extractable from a DXF export and stable when a marker is moved or renamed. The shaft and head stay separate geometry: a block with fixed geometry cannot span two arbitrary points, and scaling it in X would distort the arrowhead. Block name prefix CONNECTION_ so the SSG_BLOCKEDIT dispatcher in dxfmakros picks it up via "CONNECTION_*". Verified on the real drawing: 10 markers with UIDs 0062-0071, 29 connections with UIDs 0072-0100, every FROM_UID/TO_UID matching its marker, all 39 UIDs unique. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>