@willcgage/module-schematic 0.80.0 → 0.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1576,10 +1576,52 @@ var FAST_TRACKS_N_ME55 = [
1576
1576
  substitutionRadius: { inches: subR, source: manufacturer, note: spec }
1577
1577
  };
1578
1578
  });
1579
+ var FAST_TRACKS_N_ME55_CROSSOVERS = [
1580
+ // [N, angle°, secondFrog°, defaultLength, minLength, trackSpacing]
1581
+ [6, 9.46, 19, 10.07, 9.31, 1.09],
1582
+ [8, 7.13, 14.3, 13.61, 13.07, 1.09]
1583
+ ].map(([n, deg, second, dflt, min, spacing]) => {
1584
+ const spec = "handlaidtrack.com Detailed Specifications, read 2026-07-26";
1585
+ const manufacturer = "manufacturer";
1586
+ return {
1587
+ id: `fast-tracks-n-me55-c-${n}`,
1588
+ manufacturer: "Fast Tracks",
1589
+ line: "Code 55",
1590
+ scale: "N",
1591
+ name: `#${n} Double Crossover`,
1592
+ kind: "crossover",
1593
+ partNumbers: { single: `AF-N-C-${n}-ME55` },
1594
+ frogNumber: n,
1595
+ buildable: true,
1596
+ piecesPerAssembly: 2,
1597
+ actualAngle: { deg, source: manufacturer, note: `${spec}. atan(1/${n}) exactly.` },
1598
+ secondaryFrogAngle: {
1599
+ deg: second,
1600
+ source: manufacturer,
1601
+ note: `${spec}. The diamond of a scissors crossover \u2014 2 \xD7 ${deg}\xB0 within the published rounding.`
1602
+ },
1603
+ overallLength: {
1604
+ inches: dflt,
1605
+ source: manufacturer,
1606
+ note: `${spec}. \u26A0\uFE0F ONE HALF, NOT THE FINISHED CROSSOVER \u2014 the fixture builds a symmetrical half, which you build twice and butt together after turning the second 180\xB0. Fast Tracks gloss it as "the length of the turnout on the QuickSticks", i.e. the piece in the jig. The DEFAULT for that piece; it is a fixture, so the builder chooses.`
1607
+ },
1608
+ minimumLength: {
1609
+ inches: min,
1610
+ source: manufacturer,
1611
+ note: `${spec}. The shortest ONE HALF can be built \u2014 see the overall length's note.`
1612
+ },
1613
+ trackSpacing: {
1614
+ inches: spacing,
1615
+ source: manufacturer,
1616
+ note: `${spec}. \u26A0\uFE0F Free-moN \xA72.0 requires ${FREEMO_TRACK_SPACING_INCHES}\u2033 \u2014 this fixture is built to ${spacing}\u2033, ${(FREEMO_TRACK_SPACING_INCHES - spacing).toFixed(3)}\u2033 tighter, and cannot be built to another spacing.`
1617
+ }
1618
+ };
1619
+ });
1579
1620
  var DEFAULT_FLEX_PART_ID = "atlas-c55-n-flex";
1580
1621
  var BUILT_IN_TRACK_PARTS = [
1581
1622
  ...ATLAS_CODE55_N,
1582
1623
  ...FAST_TRACKS_N_ME55,
1624
+ ...FAST_TRACKS_N_ME55_CROSSOVERS,
1583
1625
  ...FLEX_TRACK_PARTS
1584
1626
  ];
1585
1627
  function flexParts(library = BUILT_IN_TRACK_PARTS) {
@@ -1907,7 +1949,17 @@ function storedPartToTrackPart(row) {
1907
1949
  if (minimum) part.minimumLength = minimum;
1908
1950
  const substitution = dim(row.substitutionRadiusInches, row.substitutionRadiusSource);
1909
1951
  if (substitution) part.substitutionRadius = substitution;
1952
+ const spacing = dim(row.trackSpacingInches, row.trackSpacingSource);
1953
+ if (spacing) part.trackSpacing = spacing;
1954
+ if (typeof row.secondaryFrogAngleDeg === "number")
1955
+ part.secondaryFrogAngle = {
1956
+ deg: row.secondaryFrogAngleDeg,
1957
+ source: asSource(row.secondaryFrogAngleSource),
1958
+ ...note ? { note } : {}
1959
+ };
1910
1960
  if (row.buildable) part.buildable = true;
1961
+ if (typeof row.piecesPerAssembly === "number" && row.piecesPerAssembly > 1)
1962
+ part.piecesPerAssembly = row.piecesPerAssembly;
1911
1963
  if (lead) part.lead = lead;
1912
1964
  const outer = dim(row.outerRadiusInches, row.radiusSource);
1913
1965
  const inner = dim(row.innerRadiusInches, row.radiusSource);
@@ -2610,6 +2662,7 @@ exports.DEFAULT_FLEX_PART_ID = DEFAULT_FLEX_PART_ID;
2610
2662
  exports.ENDPLATE_FASCIA_CLEAR_INCHES = ENDPLATE_FASCIA_CLEAR_INCHES;
2611
2663
  exports.ENDPLATE_LEAD_INCHES = ENDPLATE_LEAD_INCHES;
2612
2664
  exports.FAST_TRACKS_N_ME55 = FAST_TRACKS_N_ME55;
2665
+ exports.FAST_TRACKS_N_ME55_CROSSOVERS = FAST_TRACKS_N_ME55_CROSSOVERS;
2613
2666
  exports.FLEX_TRACK_PARTS = FLEX_TRACK_PARTS;
2614
2667
  exports.FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES = FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES;
2615
2668
  exports.FREEMO_ENDPLATE_WIDTH_MIN_INCHES = FREEMO_ENDPLATE_WIDTH_MIN_INCHES;