This commit is contained in:
2026-09-12 18:16:27 +08:00
parent b7f55aa631
commit 397a7a8cc4
96 changed files with 1167 additions and 1259 deletions
@@ -112,17 +112,17 @@ the word on its left to the word on its right.</p>
<li><p>Reserved words are the topology keywords: <code>X</code>, <code>Y</code>, <code>Z</code>, <code>A</code>, <code>B</code>, <code>C</code> become motion axes, and <code>w</code>
and <code>t</code> become the end anchors. <strong>Any other word is a plain component</strong> carried along without
motion, such as <code>base</code> or <code>S</code> above. A code must name exactly one <code>[w]</code> and one <code>[t]</code>; the six
axes are optional, and each may be used at most once. That uniqueness check reads the words
without regard to letter case, so it refuses a code naming no table buckle at all — <em>the chain
code must contain the table buckle [w]</em> — and a code letting two components claim one role —
<em>more than one component claims the table buckle: [w], [W]</em>. A lone <code>[W]</code> satisfies it, one
component claiming the role, and builds a component named <code>W</code>; that code is refused further
along, by the exact-match end-anchor check below.</p>
axes are optional, and each may be used at most once. Words merge by exact name, so no two
components can claim one role; what the check refuses is a code naming no table buckle at all —
<em>the chain code must contain the table buckle [w].</em> A code carrying only <code>[W]</code> is refused by
that same check, and the message names the near miss: <em>The code carries [W], which differs only
in letter case; the keyword is matched exactly, so rename it to [w].</em></p>
</li>
<li><p><strong>Spell the keywords exactly</strong> — upper case for the axes, lower case for <code>t</code> and <code>w</code>. Everything
downstream of the code compares them as written: axis discovery, the default collision pairs, and
the end-anchor check a machine file is loaded through. So a mis-cased axis contributes no motion,
and a mis-cased end anchor stops the file loading, with a message naming the near miss.</p>
<li><p><strong>Spell the keywords exactly</strong> — upper case for the axes, lower case for <code>t</code> and <code>w</code>. The code
itself and everything downstream of it compare them as written: role resolution, axis discovery,
the default collision pairs, and the end-anchor check a machine file is loaded through. So a
mis-cased axis is a plain component contributing no motion, and a mis-cased end anchor stops the
code building, with a message naming the near miss.</p>
</li>
<li><p><code>[]</code> is an anonymous component. Each occurrence is a separate one, it cannot be referred to from
another segment, and it cannot hold a geometric shape — shapes are stored by component name.</p>