@willcgage/module-schematic 0.52.0 → 0.54.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 +46 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +78 -10
- package/dist/index.d.ts +78 -10
- package/dist/index.js +46 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1034,11 +1034,30 @@ interface ModuleFeatures {
|
|
|
1034
1034
|
*/
|
|
1035
1035
|
/** N-scale track gauge, inches (9 mm). */
|
|
1036
1036
|
declare const RAIL_GAUGE_INCHES = 0.354;
|
|
1037
|
-
/**
|
|
1038
|
-
*
|
|
1039
|
-
*
|
|
1040
|
-
* #173) ⇒ 3.375 / 7.
|
|
1041
|
-
*
|
|
1037
|
+
/**
|
|
1038
|
+
* ⚠️ **REFUTED AS A GENERAL RULE — LAST RESORT ONLY.** Points→frog for a #1
|
|
1039
|
+
* frog, i.e. a turnout's LEAD if lead were proportional to frog number. From an
|
|
1040
|
+
* Atlas code 55 #7 measuring 3⅜″ (Steve Branton, #173) ⇒ 3.375 / 7.
|
|
1041
|
+
*
|
|
1042
|
+
* It is NOT proportional, and the error CHANGES SIGN. Measured lead ÷ N:
|
|
1043
|
+
* **#5 = 0.600, #7 = 0.482, #10 = 0.419** — it falls monotonically. This rule
|
|
1044
|
+
* reads **20% SHORT at N=5** (2.41″ vs a measured 3.00″) and **13% LONG at
|
|
1045
|
+
* N=10** (4.82″ vs 4³⁄₁₆″). There is no safe direction to be wrong in.
|
|
1046
|
+
*
|
|
1047
|
+
* Prefer {@link leadInchesForSize}, which returns a real part's measurement when
|
|
1048
|
+
* one exists and only falls back here for sizes nothing in the library covers.
|
|
1049
|
+
* ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog RISES
|
|
1050
|
+
* as N falls, that is very likely SHORT. Treat it as a placeholder.
|
|
1051
|
+
*
|
|
1052
|
+
* A constant-switch-angle model was also proposed here and is likewise REFUTED:
|
|
1053
|
+
* inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.069
|
|
1054
|
+
* (#10). It was floated when only the #7 and #10 were known, which agreed to
|
|
1055
|
+
* 3%; the #5 killed it. Kept as a warning — two agreeing parts are not a law,
|
|
1056
|
+
* and this library has now watched three separate rules die that way.
|
|
1057
|
+
*
|
|
1058
|
+
* The pattern that DOES fit both fully-measured parts is on {@link
|
|
1059
|
+
* ATLAS_CODE55_N}: the frog sits at a fixed 4.75″ and the points move.
|
|
1060
|
+
*/
|
|
1042
1061
|
declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
|
|
1043
1062
|
/** Where a dimension came from. `derived` = we computed it from another part or
|
|
1044
1063
|
* a rule of thumb; `unverified` = plausible but unconfirmed — treat with care. */
|
|
@@ -1049,6 +1068,12 @@ interface PartDimension {
|
|
|
1049
1068
|
/** Who measured it / which spec, so it can be re-checked. */
|
|
1050
1069
|
note?: string;
|
|
1051
1070
|
}
|
|
1071
|
+
/** Same provenance discipline as {@link PartDimension}, for angles. */
|
|
1072
|
+
interface PartAngle {
|
|
1073
|
+
deg: number;
|
|
1074
|
+
source: DimensionSource;
|
|
1075
|
+
note?: string;
|
|
1076
|
+
}
|
|
1052
1077
|
interface TrackPart {
|
|
1053
1078
|
/** Stable slug, e.g. "atlas-c55-n-7". */
|
|
1054
1079
|
id: string;
|
|
@@ -1066,8 +1091,20 @@ interface TrackPart {
|
|
|
1066
1091
|
};
|
|
1067
1092
|
/** Frog number N (the 1:N ratio). Definitional, so no provenance needed. */
|
|
1068
1093
|
frogNumber?: number;
|
|
1094
|
+
/** The angle the part ACTUALLY diverges at, where that's known to differ from
|
|
1095
|
+
* the theoretical `atan(1/N)`. Atlas appear to build to SECTIONAL angles
|
|
1096
|
+
* (multiples of 11.25° = 1/32 turn) rather than true frog ratios, so a "#5" is
|
|
1097
|
+
* 11.25° not 11.31°. ⚠️ Currently below our drawing resolution — 0.06° over a
|
|
1098
|
+
* 6″ turnout is 0.006″ — so nothing uses this yet. Recorded because it's a
|
|
1099
|
+
* real property of the product and will matter if we ever check whether a part
|
|
1100
|
+
* mates with sectional track. */
|
|
1101
|
+
actualAngle?: PartAngle;
|
|
1069
1102
|
/** Points → frog. The number that decides where a turnout's throat lands. */
|
|
1070
1103
|
lead?: PartDimension;
|
|
1104
|
+
/** End of the tie strip → the point tips. Where the working turnout starts
|
|
1105
|
+
* inside its moulding; the rest of that end is plain approach track. Needed to
|
|
1106
|
+
* fit a part into a space, and by any renderer drawing the real outline. */
|
|
1107
|
+
pointsOffset?: PartDimension;
|
|
1071
1108
|
/** End-to-end length of the part. */
|
|
1072
1109
|
overallLength?: PartDimension;
|
|
1073
1110
|
/** Diverging route radius (straight turnouts). */
|
|
@@ -1084,10 +1121,41 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
|
|
|
1084
1121
|
* Atlas N-scale Code 55 — the Free-moN mainstay.
|
|
1085
1122
|
*
|
|
1086
1123
|
* ⚠️ Atlas do not publish leads or overall lengths for the straight turnouts.
|
|
1087
|
-
*
|
|
1088
|
-
* #173)
|
|
1089
|
-
*
|
|
1090
|
-
*
|
|
1124
|
+
* Everything here traces to physical measurements: Steve Branton's #7 lead
|
|
1125
|
+
* (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
|
|
1126
|
+
* #10's lead and points offset. The #5's lead and the wye's are still derived.
|
|
1127
|
+
*
|
|
1128
|
+
* ⭐⭐ **THE FROG SITS AT 4.75″ FROM THE TIE END — ON BOTH MEASURED PARTS.**
|
|
1129
|
+
*
|
|
1130
|
+
* part points FROG overall lead
|
|
1131
|
+
* #5 1¾″ 4.75″ 6.00″ 3.0000″
|
|
1132
|
+
* #10 ⁹⁄₁₆″ 4.75″ 8.00″ 4.1875″
|
|
1133
|
+
*
|
|
1134
|
+
* Atlas appear to FIX where the frog casting sits in the moulding and move the
|
|
1135
|
+
* POINTS to change the frog number. That single fact explains every failed rule
|
|
1136
|
+
* below at once: lead was never a property of N — it is just
|
|
1137
|
+
* `4.75 − wherever the points landed`.
|
|
1138
|
+
*
|
|
1139
|
+
* ⚠️ TESTABLE, AND CHEAP: Steve's #7 lead of 3⅜″ was measured independently, by
|
|
1140
|
+
* someone else, on a different part. If the frog really is fixed at 4.75″, that
|
|
1141
|
+
* part's POINTS must sit at 4.75 − 3.375 = **1⅜″**. Measure a physical 2052 and
|
|
1142
|
+
* this model is confirmed or dead. Nobody has measured the #7's points offset.
|
|
1143
|
+
*
|
|
1144
|
+
* NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
|
|
1145
|
+
* all three were tested against a physical part and FAILED:
|
|
1146
|
+
* - ❌ **Lead ∝ N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.419 —
|
|
1147
|
+
* falls monotonically. {@link TURNOUT_LEAD_INCHES_PER_FROG} reads 13% LONG at
|
|
1148
|
+
* N=10 and 20% SHORT at N=5, so its error even changes sign.
|
|
1149
|
+
* - ❌ **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
|
|
1150
|
+
* 0.036 (#5), 0.067 (#7), 0.069 (#10). The #7 and #10 agreed to 3% and the #5
|
|
1151
|
+
* killed it. Two agreeing parts are not a law.
|
|
1152
|
+
* - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
|
|
1153
|
+
* frog numbers.
|
|
1154
|
+
*
|
|
1155
|
+
* The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
|
|
1156
|
+
* across per N along) and says NOTHING about how much tie strip the manufacturer
|
|
1157
|
+
* wraps around it, or where inside it the frog goes. Angle is geometry;
|
|
1158
|
+
* everything else is a tooling decision. **Measure the part. Do not model it.**
|
|
1091
1159
|
*/
|
|
1092
1160
|
declare const ATLAS_CODE55_N: TrackPart[];
|
|
1093
1161
|
/** Every built-in part, across manufacturers. */
|
|
@@ -1343,4 +1411,4 @@ declare function poseOverridesFromDoc(doc: ModuleSchematicDoc): Record<string, {
|
|
|
1343
1411
|
heading: number;
|
|
1344
1412
|
}>;
|
|
1345
1413
|
|
|
1346
|
-
export { ATLAS_CODE55_N, BUILT_IN_TRACK_PARTS, type BenchworkPoint, type BranchConnector, CODE55_RAIL_HEIGHT_INCHES, type DimensionSource, type DrawCrossing, type DrawCrossover, type DrawIndustry, type DrawSignal, type DrawTrack, type DrawTurnout, ENDPLATE_FASCIA_CLEAR_INCHES, ENDPLATE_LEAD_INCHES, type EditorBranch, type EditorControlPoint, type EditorCpSignal, type EditorCrossing, type EditorIndustry, type EditorState, type EditorTrack, type EditorTurnout, type EndplateBConfig, type EndplatePose, type EndplateTrackIssue, type EndplateWidthIssue, FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES, FREEMO_ENDPLATE_WIDTH_MIN_INCHES, FREEMO_ENDPLATE_WIDTH_RECOMMENDED_INCHES, FREEMO_TRACK_SPACING_INCHES, type GeometryType, type ImportedPart, type IndustryLabelMode, type IndustrySpot, MAIN2_TRACK_ID, MAIN_TRACK_ID, type ModuleFeatures, type ModuleFootprint, type ModuleFootprintInput, type ModuleGeometryInput, type ModuleSchematicDoc, type ModuleTrackRow, N_CAR_LENGTH_INCHES, N_SCALE_RATIO, type OutlineFace, type PartDimension, type PartEnd, type PartSegment, RAIL_GAUGE_INCHES, type ReturnLoopGeometry, type ReturnLoopShape, type SchematicBlock, type SchematicControlPoint, type SchematicCrossing, type SchematicEndplate, type SchematicEndplateTrack, type SchematicIndustry, type SchematicSection, type SchematicSignal, type SchematicTrack, type SchematicTurnout, type SectionAdjacency, type SectionFootprint, type SectionRelativePos, type SignalFacing, type SignalSide, TURNOUT_LEAD_INCHES_PER_FROG, type TrackConfig, type TrackPart, type TrackRole, type TurnoutClosure, type TurnoutKind, WHOLE_MODULE_SECTION_ID, asModuleSchematic, benchworkBand, benchworkOutline, buildCrossover, buildPassingSiding, buildTransition, carCapacity, checkEndplateWidth, deriveEndplatePoses, divergeSideForHand, docToState, emptyEditorState, endplateFaceSegments, endplateLead, endplateTrackOffsetFor, endplateTrackOffsetInches, endplateWidthInches, fromSectionRelative, geometryTurnDegrees, inchesToScaleFeet, isLoopDoc, isTransitionTurnout, leadInchesForSize, moduleCenterline, moduleFeatures, moduleFootprint, moduleLengthFromSections, moduleSections, nextId, parseXtpLibrary, poseNeedsManual, poseOverridesFromDoc, remapPos, returnLoop, sampleBenchworkOutline, samplePartSegments, samplePath, scaleFeetToInches, sectionAdjacency, sectionBand, sectionBreaksFromSections, sectionComponents, sectionFootprints, sectionNeighbours, sectionSpans, sectionSpansOrWhole, sectionedCenterline, sectionedEndPose, sliceCenterline, stateToDoc, toSectionRelative, trackMeetsEndplateIssues, trackPart, trackPath, turnoutClosure, turnoutPartForSize };
|
|
1414
|
+
export { ATLAS_CODE55_N, BUILT_IN_TRACK_PARTS, type BenchworkPoint, type BranchConnector, CODE55_RAIL_HEIGHT_INCHES, type DimensionSource, type DrawCrossing, type DrawCrossover, type DrawIndustry, type DrawSignal, type DrawTrack, type DrawTurnout, ENDPLATE_FASCIA_CLEAR_INCHES, ENDPLATE_LEAD_INCHES, type EditorBranch, type EditorControlPoint, type EditorCpSignal, type EditorCrossing, type EditorIndustry, type EditorState, type EditorTrack, type EditorTurnout, type EndplateBConfig, type EndplatePose, type EndplateTrackIssue, type EndplateWidthIssue, FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES, FREEMO_ENDPLATE_WIDTH_MIN_INCHES, FREEMO_ENDPLATE_WIDTH_RECOMMENDED_INCHES, FREEMO_TRACK_SPACING_INCHES, type GeometryType, type ImportedPart, type IndustryLabelMode, type IndustrySpot, MAIN2_TRACK_ID, MAIN_TRACK_ID, type ModuleFeatures, type ModuleFootprint, type ModuleFootprintInput, type ModuleGeometryInput, type ModuleSchematicDoc, type ModuleTrackRow, N_CAR_LENGTH_INCHES, N_SCALE_RATIO, type OutlineFace, type PartAngle, type PartDimension, type PartEnd, type PartSegment, RAIL_GAUGE_INCHES, type ReturnLoopGeometry, type ReturnLoopShape, type SchematicBlock, type SchematicControlPoint, type SchematicCrossing, type SchematicEndplate, type SchematicEndplateTrack, type SchematicIndustry, type SchematicSection, type SchematicSignal, type SchematicTrack, type SchematicTurnout, type SectionAdjacency, type SectionFootprint, type SectionRelativePos, type SignalFacing, type SignalSide, TURNOUT_LEAD_INCHES_PER_FROG, type TrackConfig, type TrackPart, type TrackRole, type TurnoutClosure, type TurnoutKind, WHOLE_MODULE_SECTION_ID, asModuleSchematic, benchworkBand, benchworkOutline, buildCrossover, buildPassingSiding, buildTransition, carCapacity, checkEndplateWidth, deriveEndplatePoses, divergeSideForHand, docToState, emptyEditorState, endplateFaceSegments, endplateLead, endplateTrackOffsetFor, endplateTrackOffsetInches, endplateWidthInches, fromSectionRelative, geometryTurnDegrees, inchesToScaleFeet, isLoopDoc, isTransitionTurnout, leadInchesForSize, moduleCenterline, moduleFeatures, moduleFootprint, moduleLengthFromSections, moduleSections, nextId, parseXtpLibrary, poseNeedsManual, poseOverridesFromDoc, remapPos, returnLoop, sampleBenchworkOutline, samplePartSegments, samplePath, scaleFeetToInches, sectionAdjacency, sectionBand, sectionBreaksFromSections, sectionComponents, sectionFootprints, sectionNeighbours, sectionSpans, sectionSpansOrWhole, sectionedCenterline, sectionedEndPose, sliceCenterline, stateToDoc, toSectionRelative, trackMeetsEndplateIssues, trackPart, trackPath, turnoutClosure, turnoutPartForSize };
|
package/dist/index.d.ts
CHANGED
|
@@ -1034,11 +1034,30 @@ interface ModuleFeatures {
|
|
|
1034
1034
|
*/
|
|
1035
1035
|
/** N-scale track gauge, inches (9 mm). */
|
|
1036
1036
|
declare const RAIL_GAUGE_INCHES = 0.354;
|
|
1037
|
-
/**
|
|
1038
|
-
*
|
|
1039
|
-
*
|
|
1040
|
-
* #173) ⇒ 3.375 / 7.
|
|
1041
|
-
*
|
|
1037
|
+
/**
|
|
1038
|
+
* ⚠️ **REFUTED AS A GENERAL RULE — LAST RESORT ONLY.** Points→frog for a #1
|
|
1039
|
+
* frog, i.e. a turnout's LEAD if lead were proportional to frog number. From an
|
|
1040
|
+
* Atlas code 55 #7 measuring 3⅜″ (Steve Branton, #173) ⇒ 3.375 / 7.
|
|
1041
|
+
*
|
|
1042
|
+
* It is NOT proportional, and the error CHANGES SIGN. Measured lead ÷ N:
|
|
1043
|
+
* **#5 = 0.600, #7 = 0.482, #10 = 0.419** — it falls monotonically. This rule
|
|
1044
|
+
* reads **20% SHORT at N=5** (2.41″ vs a measured 3.00″) and **13% LONG at
|
|
1045
|
+
* N=10** (4.82″ vs 4³⁄₁₆″). There is no safe direction to be wrong in.
|
|
1046
|
+
*
|
|
1047
|
+
* Prefer {@link leadInchesForSize}, which returns a real part's measurement when
|
|
1048
|
+
* one exists and only falls back here for sizes nothing in the library covers.
|
|
1049
|
+
* ⚠️ The remaining fallback user is the #2.5 wye at 1.21″; since per-frog RISES
|
|
1050
|
+
* as N falls, that is very likely SHORT. Treat it as a placeholder.
|
|
1051
|
+
*
|
|
1052
|
+
* A constant-switch-angle model was also proposed here and is likewise REFUTED:
|
|
1053
|
+
* inverting {@link turnoutClosure} gives α = 0.036 (#5), 0.067 (#7), 0.069
|
|
1054
|
+
* (#10). It was floated when only the #7 and #10 were known, which agreed to
|
|
1055
|
+
* 3%; the #5 killed it. Kept as a warning — two agreeing parts are not a law,
|
|
1056
|
+
* and this library has now watched three separate rules die that way.
|
|
1057
|
+
*
|
|
1058
|
+
* The pattern that DOES fit both fully-measured parts is on {@link
|
|
1059
|
+
* ATLAS_CODE55_N}: the frog sits at a fixed 4.75″ and the points move.
|
|
1060
|
+
*/
|
|
1042
1061
|
declare const TURNOUT_LEAD_INCHES_PER_FROG = 0.482;
|
|
1043
1062
|
/** Where a dimension came from. `derived` = we computed it from another part or
|
|
1044
1063
|
* a rule of thumb; `unverified` = plausible but unconfirmed — treat with care. */
|
|
@@ -1049,6 +1068,12 @@ interface PartDimension {
|
|
|
1049
1068
|
/** Who measured it / which spec, so it can be re-checked. */
|
|
1050
1069
|
note?: string;
|
|
1051
1070
|
}
|
|
1071
|
+
/** Same provenance discipline as {@link PartDimension}, for angles. */
|
|
1072
|
+
interface PartAngle {
|
|
1073
|
+
deg: number;
|
|
1074
|
+
source: DimensionSource;
|
|
1075
|
+
note?: string;
|
|
1076
|
+
}
|
|
1052
1077
|
interface TrackPart {
|
|
1053
1078
|
/** Stable slug, e.g. "atlas-c55-n-7". */
|
|
1054
1079
|
id: string;
|
|
@@ -1066,8 +1091,20 @@ interface TrackPart {
|
|
|
1066
1091
|
};
|
|
1067
1092
|
/** Frog number N (the 1:N ratio). Definitional, so no provenance needed. */
|
|
1068
1093
|
frogNumber?: number;
|
|
1094
|
+
/** The angle the part ACTUALLY diverges at, where that's known to differ from
|
|
1095
|
+
* the theoretical `atan(1/N)`. Atlas appear to build to SECTIONAL angles
|
|
1096
|
+
* (multiples of 11.25° = 1/32 turn) rather than true frog ratios, so a "#5" is
|
|
1097
|
+
* 11.25° not 11.31°. ⚠️ Currently below our drawing resolution — 0.06° over a
|
|
1098
|
+
* 6″ turnout is 0.006″ — so nothing uses this yet. Recorded because it's a
|
|
1099
|
+
* real property of the product and will matter if we ever check whether a part
|
|
1100
|
+
* mates with sectional track. */
|
|
1101
|
+
actualAngle?: PartAngle;
|
|
1069
1102
|
/** Points → frog. The number that decides where a turnout's throat lands. */
|
|
1070
1103
|
lead?: PartDimension;
|
|
1104
|
+
/** End of the tie strip → the point tips. Where the working turnout starts
|
|
1105
|
+
* inside its moulding; the rest of that end is plain approach track. Needed to
|
|
1106
|
+
* fit a part into a space, and by any renderer drawing the real outline. */
|
|
1107
|
+
pointsOffset?: PartDimension;
|
|
1071
1108
|
/** End-to-end length of the part. */
|
|
1072
1109
|
overallLength?: PartDimension;
|
|
1073
1110
|
/** Diverging route radius (straight turnouts). */
|
|
@@ -1084,10 +1121,41 @@ declare const CODE55_RAIL_HEIGHT_INCHES = 0.055;
|
|
|
1084
1121
|
* Atlas N-scale Code 55 — the Free-moN mainstay.
|
|
1085
1122
|
*
|
|
1086
1123
|
* ⚠️ Atlas do not publish leads or overall lengths for the straight turnouts.
|
|
1087
|
-
*
|
|
1088
|
-
* #173)
|
|
1089
|
-
*
|
|
1090
|
-
*
|
|
1124
|
+
* Everything here traces to physical measurements: Steve Branton's #7 lead
|
|
1125
|
+
* (3⅜″ points→frog, #173) and Will Gage's #5/#7/#10 overall lengths plus the
|
|
1126
|
+
* #10's lead and points offset. The #5's lead and the wye's are still derived.
|
|
1127
|
+
*
|
|
1128
|
+
* ⭐⭐ **THE FROG SITS AT 4.75″ FROM THE TIE END — ON BOTH MEASURED PARTS.**
|
|
1129
|
+
*
|
|
1130
|
+
* part points FROG overall lead
|
|
1131
|
+
* #5 1¾″ 4.75″ 6.00″ 3.0000″
|
|
1132
|
+
* #10 ⁹⁄₁₆″ 4.75″ 8.00″ 4.1875″
|
|
1133
|
+
*
|
|
1134
|
+
* Atlas appear to FIX where the frog casting sits in the moulding and move the
|
|
1135
|
+
* POINTS to change the frog number. That single fact explains every failed rule
|
|
1136
|
+
* below at once: lead was never a property of N — it is just
|
|
1137
|
+
* `4.75 − wherever the points landed`.
|
|
1138
|
+
*
|
|
1139
|
+
* ⚠️ TESTABLE, AND CHEAP: Steve's #7 lead of 3⅜″ was measured independently, by
|
|
1140
|
+
* someone else, on a different part. If the frog really is fixed at 4.75″, that
|
|
1141
|
+
* part's POINTS must sit at 4.75 − 3.375 = **1⅜″**. Measure a physical 2052 and
|
|
1142
|
+
* this model is confirmed or dead. Nobody has measured the #7's points offset.
|
|
1143
|
+
*
|
|
1144
|
+
* NOTHING HERE IS PROPORTIONAL TO FROG NUMBER. Three rules assumed otherwise;
|
|
1145
|
+
* all three were tested against a physical part and FAILED:
|
|
1146
|
+
* - ❌ **Lead ∝ N.** Measured lead ÷ N: #5 = 0.600, #7 = 0.482, #10 = 0.419 —
|
|
1147
|
+
* falls monotonically. {@link TURNOUT_LEAD_INCHES_PER_FROG} reads 13% LONG at
|
|
1148
|
+
* N=10 and 20% SHORT at N=5, so its error even changes sign.
|
|
1149
|
+
* - ❌ **Constant switch angle.** Inverting {@link turnoutClosure} gives α =
|
|
1150
|
+
* 0.036 (#5), 0.067 (#7), 0.069 (#10). The #7 and #10 agreed to 3% and the #5
|
|
1151
|
+
* killed it. Two agreeing parts are not a law.
|
|
1152
|
+
* - ❌ **Overall length ∝ N.** #5 = 6.00″ and #7 = 6.00″ — same moulding, two
|
|
1153
|
+
* frog numbers.
|
|
1154
|
+
*
|
|
1155
|
+
* The definition is the reason: #N fixes the DIVERGENCE RATE AT THE FROG (1
|
|
1156
|
+
* across per N along) and says NOTHING about how much tie strip the manufacturer
|
|
1157
|
+
* wraps around it, or where inside it the frog goes. Angle is geometry;
|
|
1158
|
+
* everything else is a tooling decision. **Measure the part. Do not model it.**
|
|
1091
1159
|
*/
|
|
1092
1160
|
declare const ATLAS_CODE55_N: TrackPart[];
|
|
1093
1161
|
/** Every built-in part, across manufacturers. */
|
|
@@ -1343,4 +1411,4 @@ declare function poseOverridesFromDoc(doc: ModuleSchematicDoc): Record<string, {
|
|
|
1343
1411
|
heading: number;
|
|
1344
1412
|
}>;
|
|
1345
1413
|
|
|
1346
|
-
export { ATLAS_CODE55_N, BUILT_IN_TRACK_PARTS, type BenchworkPoint, type BranchConnector, CODE55_RAIL_HEIGHT_INCHES, type DimensionSource, type DrawCrossing, type DrawCrossover, type DrawIndustry, type DrawSignal, type DrawTrack, type DrawTurnout, ENDPLATE_FASCIA_CLEAR_INCHES, ENDPLATE_LEAD_INCHES, type EditorBranch, type EditorControlPoint, type EditorCpSignal, type EditorCrossing, type EditorIndustry, type EditorState, type EditorTrack, type EditorTurnout, type EndplateBConfig, type EndplatePose, type EndplateTrackIssue, type EndplateWidthIssue, FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES, FREEMO_ENDPLATE_WIDTH_MIN_INCHES, FREEMO_ENDPLATE_WIDTH_RECOMMENDED_INCHES, FREEMO_TRACK_SPACING_INCHES, type GeometryType, type ImportedPart, type IndustryLabelMode, type IndustrySpot, MAIN2_TRACK_ID, MAIN_TRACK_ID, type ModuleFeatures, type ModuleFootprint, type ModuleFootprintInput, type ModuleGeometryInput, type ModuleSchematicDoc, type ModuleTrackRow, N_CAR_LENGTH_INCHES, N_SCALE_RATIO, type OutlineFace, type PartDimension, type PartEnd, type PartSegment, RAIL_GAUGE_INCHES, type ReturnLoopGeometry, type ReturnLoopShape, type SchematicBlock, type SchematicControlPoint, type SchematicCrossing, type SchematicEndplate, type SchematicEndplateTrack, type SchematicIndustry, type SchematicSection, type SchematicSignal, type SchematicTrack, type SchematicTurnout, type SectionAdjacency, type SectionFootprint, type SectionRelativePos, type SignalFacing, type SignalSide, TURNOUT_LEAD_INCHES_PER_FROG, type TrackConfig, type TrackPart, type TrackRole, type TurnoutClosure, type TurnoutKind, WHOLE_MODULE_SECTION_ID, asModuleSchematic, benchworkBand, benchworkOutline, buildCrossover, buildPassingSiding, buildTransition, carCapacity, checkEndplateWidth, deriveEndplatePoses, divergeSideForHand, docToState, emptyEditorState, endplateFaceSegments, endplateLead, endplateTrackOffsetFor, endplateTrackOffsetInches, endplateWidthInches, fromSectionRelative, geometryTurnDegrees, inchesToScaleFeet, isLoopDoc, isTransitionTurnout, leadInchesForSize, moduleCenterline, moduleFeatures, moduleFootprint, moduleLengthFromSections, moduleSections, nextId, parseXtpLibrary, poseNeedsManual, poseOverridesFromDoc, remapPos, returnLoop, sampleBenchworkOutline, samplePartSegments, samplePath, scaleFeetToInches, sectionAdjacency, sectionBand, sectionBreaksFromSections, sectionComponents, sectionFootprints, sectionNeighbours, sectionSpans, sectionSpansOrWhole, sectionedCenterline, sectionedEndPose, sliceCenterline, stateToDoc, toSectionRelative, trackMeetsEndplateIssues, trackPart, trackPath, turnoutClosure, turnoutPartForSize };
|
|
1414
|
+
export { ATLAS_CODE55_N, BUILT_IN_TRACK_PARTS, type BenchworkPoint, type BranchConnector, CODE55_RAIL_HEIGHT_INCHES, type DimensionSource, type DrawCrossing, type DrawCrossover, type DrawIndustry, type DrawSignal, type DrawTrack, type DrawTurnout, ENDPLATE_FASCIA_CLEAR_INCHES, ENDPLATE_LEAD_INCHES, type EditorBranch, type EditorControlPoint, type EditorCpSignal, type EditorCrossing, type EditorIndustry, type EditorState, type EditorTrack, type EditorTurnout, type EndplateBConfig, type EndplatePose, type EndplateTrackIssue, type EndplateWidthIssue, FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES, FREEMO_ENDPLATE_WIDTH_MIN_INCHES, FREEMO_ENDPLATE_WIDTH_RECOMMENDED_INCHES, FREEMO_TRACK_SPACING_INCHES, type GeometryType, type ImportedPart, type IndustryLabelMode, type IndustrySpot, MAIN2_TRACK_ID, MAIN_TRACK_ID, type ModuleFeatures, type ModuleFootprint, type ModuleFootprintInput, type ModuleGeometryInput, type ModuleSchematicDoc, type ModuleTrackRow, N_CAR_LENGTH_INCHES, N_SCALE_RATIO, type OutlineFace, type PartAngle, type PartDimension, type PartEnd, type PartSegment, RAIL_GAUGE_INCHES, type ReturnLoopGeometry, type ReturnLoopShape, type SchematicBlock, type SchematicControlPoint, type SchematicCrossing, type SchematicEndplate, type SchematicEndplateTrack, type SchematicIndustry, type SchematicSection, type SchematicSignal, type SchematicTrack, type SchematicTurnout, type SectionAdjacency, type SectionFootprint, type SectionRelativePos, type SignalFacing, type SignalSide, TURNOUT_LEAD_INCHES_PER_FROG, type TrackConfig, type TrackPart, type TrackRole, type TurnoutClosure, type TurnoutKind, WHOLE_MODULE_SECTION_ID, asModuleSchematic, benchworkBand, benchworkOutline, buildCrossover, buildPassingSiding, buildTransition, carCapacity, checkEndplateWidth, deriveEndplatePoses, divergeSideForHand, docToState, emptyEditorState, endplateFaceSegments, endplateLead, endplateTrackOffsetFor, endplateTrackOffsetInches, endplateWidthInches, fromSectionRelative, geometryTurnDegrees, inchesToScaleFeet, isLoopDoc, isTransitionTurnout, leadInchesForSize, moduleCenterline, moduleFeatures, moduleFootprint, moduleLengthFromSections, moduleSections, nextId, parseXtpLibrary, poseNeedsManual, poseOverridesFromDoc, remapPos, returnLoop, sampleBenchworkOutline, samplePartSegments, samplePath, scaleFeetToInches, sectionAdjacency, sectionBand, sectionBreaksFromSections, sectionComponents, sectionFootprints, sectionNeighbours, sectionSpans, sectionSpansOrWhole, sectionedCenterline, sectionedEndPose, sliceCenterline, stateToDoc, toSectionRelative, trackMeetsEndplateIssues, trackPart, trackPath, turnoutClosure, turnoutPartForSize };
|
package/dist/index.js
CHANGED
|
@@ -1102,9 +1102,24 @@ var ATLAS_CODE55_N = [
|
|
|
1102
1102
|
partNumbers: { left: "2050", right: "2051" },
|
|
1103
1103
|
frogNumber: 5,
|
|
1104
1104
|
lead: {
|
|
1105
|
-
inches:
|
|
1106
|
-
source: "
|
|
1107
|
-
note: "
|
|
1105
|
+
inches: 3,
|
|
1106
|
+
source: "measured",
|
|
1107
|
+
note: "Will Gage, physical Atlas 2050 (#5 LH): points at 1\xBE\u2033, frog at 4.75\u2033 \u21D2 3\u2033 exactly. REFUTED BOTH standing models \u2014 the per-frog rule predicted 2.41\u2033, the constant-switch-angle model 2.64\u2033; both read short. It also retired my earlier ~2.4\u2033 photo estimate, which was 20% under."
|
|
1108
|
+
},
|
|
1109
|
+
pointsOffset: {
|
|
1110
|
+
inches: 1.75,
|
|
1111
|
+
source: "measured",
|
|
1112
|
+
note: "Will Gage, physical Atlas 2050 (#5 LH) \u2014 end of tie strip to point tips"
|
|
1113
|
+
},
|
|
1114
|
+
overallLength: {
|
|
1115
|
+
inches: 6,
|
|
1116
|
+
source: "measured",
|
|
1117
|
+
note: "Will Gage, physical Atlas 2050 (#5 LH), end tie to end tie"
|
|
1118
|
+
},
|
|
1119
|
+
actualAngle: {
|
|
1120
|
+
deg: 11.25,
|
|
1121
|
+
source: "unverified",
|
|
1122
|
+
note: "CORROBORATED: XTrkCAD N-atlasn55.xtp gives 11.250152\xB0, and AnyRail-forum trial-and-error (glakedylan, 2012) gives 11.25\xB0. Theory atan(1/5) = 11.310\xB0. 11.25\xB0 is exactly 1/32 turn \u2014 Atlas appear to build to sectional angles."
|
|
1108
1123
|
}
|
|
1109
1124
|
},
|
|
1110
1125
|
{
|
|
@@ -1120,6 +1135,16 @@ var ATLAS_CODE55_N = [
|
|
|
1120
1135
|
inches: 3.375,
|
|
1121
1136
|
source: "measured",
|
|
1122
1137
|
note: "Steve Branton, physical Atlas code 55 #7, 3\u215C\u2033 points\u2192frog (#173)"
|
|
1138
|
+
},
|
|
1139
|
+
overallLength: {
|
|
1140
|
+
inches: 6,
|
|
1141
|
+
source: "measured",
|
|
1142
|
+
note: "Will Gage, physical Atlas 2052 (#7), end tie to end tie \u2014 the SAME 6\u2033 as the #5, which is what proves length is not a function of frog number"
|
|
1143
|
+
},
|
|
1144
|
+
actualAngle: {
|
|
1145
|
+
deg: 8.13,
|
|
1146
|
+
source: "unverified",
|
|
1147
|
+
note: "DISPUTED: XTrkCAD .xtp says 8.1818\xB0, AnyRail forum says 8.125\xB0, theory atan(1/7) = 8.130\xB0. The sources disagree, so theory is used here."
|
|
1123
1148
|
}
|
|
1124
1149
|
},
|
|
1125
1150
|
{
|
|
@@ -1132,9 +1157,24 @@ var ATLAS_CODE55_N = [
|
|
|
1132
1157
|
partNumbers: { left: "2054", right: "2055" },
|
|
1133
1158
|
frogNumber: 10,
|
|
1134
1159
|
lead: {
|
|
1135
|
-
inches:
|
|
1136
|
-
source: "
|
|
1137
|
-
note: "
|
|
1160
|
+
inches: 4.1875,
|
|
1161
|
+
source: "measured",
|
|
1162
|
+
note: "Will Gage, physical Atlas 2054 (#10): points at 9/16\u2033 from the end, frog at 4.75\u2033 \u21D2 4\xB3\u2044\u2081\u2086\u2033. THIS IS THE MEASUREMENT THAT REFUTED the lead-per-frog rule \u2014 it predicted 4.82\u2033, 13% over."
|
|
1163
|
+
},
|
|
1164
|
+
pointsOffset: {
|
|
1165
|
+
inches: 0.5625,
|
|
1166
|
+
source: "measured",
|
|
1167
|
+
note: "Will Gage, physical Atlas 2054 (#10) \u2014 end of tie strip to point tips"
|
|
1168
|
+
},
|
|
1169
|
+
overallLength: {
|
|
1170
|
+
inches: 8,
|
|
1171
|
+
source: "measured",
|
|
1172
|
+
note: "Will Gage, physical Atlas 2054 (#10), end tie to end tie"
|
|
1173
|
+
},
|
|
1174
|
+
actualAngle: {
|
|
1175
|
+
deg: 5.74,
|
|
1176
|
+
source: "unverified",
|
|
1177
|
+
note: "CORROBORATED: XTrkCAD .xtp gives 5.739\xB0, AnyRail forum 5.75\xB0 \u2014 they agree with each other and not with theory atan(1/10) = 5.711\xB0."
|
|
1138
1178
|
}
|
|
1139
1179
|
},
|
|
1140
1180
|
{
|