altium-toolkit 1.1.32 → 1.1.35
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/docs/model-format.md +2 -3
- package/package.json +1 -1
- package/src/core/altium/AltiumGeneratedLibraryRecordBuilder.mjs +551 -0
- package/src/core/altium/AltiumLibraryRecordBuilder.mjs +286 -2
- package/src/core/altium/AltiumPcbLibExporter.mjs +9 -2
- package/src/core/altium/AltiumSchLibExporter.mjs +1 -1
- package/src/core/altium/PcbComponentBodyPlacementNormalizer.mjs +120 -15
- package/src/core/altium/PcbEmbeddedModelExtractor.mjs +52 -4
- package/src/core/altium/PcbShapeBasedBodyGeometryParser.mjs +85 -11
- package/src/core/altium/SourceComponentBundleNormalizer.mjs +31 -0
- package/src/core/circuit-json/CircuitJsonModelSchema.mjs +1 -1
- package/src/ui/AltiumScene3dAuthoredBodyAnchorAdapter.mjs +30 -2
- package/src/ui/AltiumScene3dExternalPlacementAdapter.mjs +27 -2
- package/src/ui/AltiumScene3dPlacementRotationPolicy.mjs +44 -0
- package/src/ui/AltiumScene3dRepeatedModelOwnerRepair.mjs +171 -6
- package/src/ui/AltiumScene3dShapeStackOwnerAdapter.mjs +782 -0
- package/src/ui/AltiumScene3dTwoRowFootprintDetector.mjs +90 -0
- package/src/ui/PcbScene3dBuilder.mjs +595 -28
- package/src/ui/PcbScene3dCopperRegionDetailBuilder.mjs +280 -0
- package/src/ui/PcbScene3dModelRegistry.mjs +16 -0
- package/src/ui/PcbScene3dPackageDimensionResolver.mjs +107 -0
- package/src/ui/PcbScene3dPackages.mjs +15 -3
- package/src/ui/PcbScene3dPadYawResolver.mjs +200 -0
- package/src/ui/PcbScene3dPlacementSideResolver.mjs +56 -0
- package/src/ui/PcbScene3dStaticBodyPlacementBuilder.mjs +638 -16
- package/src/ui/PcbScene3dStaticBodyRecovery.mjs +891 -0
- package/src/ui/PcbScene3dStaticBodySelectionKeyBuilder.mjs +358 -0
- package/src/ui/PcbScene3dStaticBodySymmetryRecovery.mjs +876 -0
|
@@ -64,6 +64,62 @@ export class PcbScene3dPlacementSideResolver {
|
|
|
64
64
|
return standoffSide || 'top'
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Resolves which board side one authored static shape body should mount on.
|
|
69
|
+
* Shape bodies carry explicit mechanical-layer intent, so that side wins
|
|
70
|
+
* over loose nearby-package identity unless the body was directly matched.
|
|
71
|
+
* @param {{ layer?: string, positionMil?: { x?: number, y?: number }, standoffHeightMil?: number | null, overallHeightMil?: number | null }} componentBody
|
|
72
|
+
* @param {{ layer?: string } | null} matchedComponent
|
|
73
|
+
* @param {{ layer?: string, pattern?: string, source?: string, modelPath?: string, x?: number, y?: number }[]} components
|
|
74
|
+
* @param {{ minX?: number, minY?: number, widthMil?: number, heightMil?: number } | null} board
|
|
75
|
+
* @returns {'top' | 'bottom'}
|
|
76
|
+
*/
|
|
77
|
+
static resolveStaticBodyPlacementSide(
|
|
78
|
+
componentBody,
|
|
79
|
+
matchedComponent,
|
|
80
|
+
components = [],
|
|
81
|
+
board = null
|
|
82
|
+
) {
|
|
83
|
+
const matchedSide =
|
|
84
|
+
PcbScene3dPlacementSideResolver.#resolveComponentLayerSide(
|
|
85
|
+
matchedComponent?.layer
|
|
86
|
+
)
|
|
87
|
+
if (matchedSide) {
|
|
88
|
+
return matchedSide
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const standoffSide =
|
|
92
|
+
PcbScene3dPlacementSideResolver.#resolveStandoffSide(componentBody)
|
|
93
|
+
if (
|
|
94
|
+
standoffSide &&
|
|
95
|
+
PcbScene3dPlacementSideResolver.#isBodyAnchorInsideBoard(
|
|
96
|
+
componentBody,
|
|
97
|
+
board
|
|
98
|
+
)
|
|
99
|
+
) {
|
|
100
|
+
return standoffSide
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const mechanicalSide =
|
|
104
|
+
PcbScene3dPlacementSideResolver.#resolveMechanicalLayerSide(
|
|
105
|
+
componentBody?.layer
|
|
106
|
+
)
|
|
107
|
+
if (mechanicalSide) {
|
|
108
|
+
return mechanicalSide
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const nearbySide =
|
|
112
|
+
PcbScene3dPlacementSideResolver.#resolveNearbyComponentSide(
|
|
113
|
+
componentBody,
|
|
114
|
+
components
|
|
115
|
+
)
|
|
116
|
+
if (nearbySide) {
|
|
117
|
+
return nearbySide
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return standoffSide || 'top'
|
|
121
|
+
}
|
|
122
|
+
|
|
67
123
|
/**
|
|
68
124
|
* Resolves the grouping key for repeated component-body matching.
|
|
69
125
|
* @param {{ modelId?: string, name?: string, identifier?: string }} componentBody
|