@faicad/faijs-gears 0.0.0-stage → 0.29.3

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.
Files changed (67) hide show
  1. package/LICENSE +202 -0
  2. package/dist/bevel_gear.d.ts +113 -0
  3. package/dist/bevel_gear.d.ts.map +1 -0
  4. package/dist/bevel_gear.js +327 -0
  5. package/dist/bevel_gear.js.map +1 -0
  6. package/dist/crossed_helical_gear.d.ts +24 -0
  7. package/dist/crossed_helical_gear.d.ts.map +1 -0
  8. package/dist/crossed_helical_gear.js +24 -0
  9. package/dist/crossed_helical_gear.js.map +1 -0
  10. package/dist/crossed_pair.d.ts +177 -0
  11. package/dist/crossed_pair.d.ts.map +1 -0
  12. package/dist/crossed_pair.js +237 -0
  13. package/dist/crossed_pair.js.map +1 -0
  14. package/dist/features.d.ts +184 -0
  15. package/dist/features.d.ts.map +1 -0
  16. package/dist/features.js +408 -0
  17. package/dist/features.js.map +1 -0
  18. package/dist/index.d.ts +178 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +223 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/kernel/gears.d.ts +231 -0
  23. package/dist/kernel/gears.d.ts.map +1 -0
  24. package/dist/kernel/gears.js +274 -0
  25. package/dist/kernel/gears.js.map +1 -0
  26. package/dist/kernel/index.d.ts +10 -0
  27. package/dist/kernel/index.d.ts.map +1 -0
  28. package/dist/kernel/index.js +9 -0
  29. package/dist/kernel/index.js.map +1 -0
  30. package/dist/math.d.ts +200 -0
  31. package/dist/math.d.ts.map +1 -0
  32. package/dist/math.js +274 -0
  33. package/dist/math.js.map +1 -0
  34. package/dist/pairs.d.ts +161 -0
  35. package/dist/pairs.d.ts.map +1 -0
  36. package/dist/pairs.js +183 -0
  37. package/dist/pairs.js.map +1 -0
  38. package/dist/planetary.d.ts +96 -0
  39. package/dist/planetary.d.ts.map +1 -0
  40. package/dist/planetary.js +139 -0
  41. package/dist/planetary.js.map +1 -0
  42. package/dist/profile.d.ts +439 -0
  43. package/dist/profile.d.ts.map +1 -0
  44. package/dist/profile.js +597 -0
  45. package/dist/profile.js.map +1 -0
  46. package/dist/rack_gear.d.ts +125 -0
  47. package/dist/rack_gear.d.ts.map +1 -0
  48. package/dist/rack_gear.js +344 -0
  49. package/dist/rack_gear.js.map +1 -0
  50. package/dist/ring_gear.d.ts +54 -0
  51. package/dist/ring_gear.d.ts.map +1 -0
  52. package/dist/ring_gear.js +133 -0
  53. package/dist/ring_gear.js.map +1 -0
  54. package/dist/spline-face.d.ts +99 -0
  55. package/dist/spline-face.d.ts.map +1 -0
  56. package/dist/spline-face.js +94 -0
  57. package/dist/spline-face.js.map +1 -0
  58. package/dist/spur_gear.d.ts +112 -0
  59. package/dist/spur_gear.d.ts.map +1 -0
  60. package/dist/spur_gear.js +206 -0
  61. package/dist/spur_gear.js.map +1 -0
  62. package/dist/worm_gear.d.ts +78 -0
  63. package/dist/worm_gear.d.ts.map +1 -0
  64. package/dist/worm_gear.js +256 -0
  65. package/dist/worm_gear.js.map +1 -0
  66. package/package.json +49 -4
  67. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bevel_gear.js","sourceRoot":"","sources":["../src/bevel_gear.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * crossed_helical_gear — CrossedHelicalGear(交错轴斜齿轮)实体构造
3
+ *
4
+ * 对应 `crossed_helical_gear.py::CrossedHelicalGear`:它继承 `SpurGear`,
5
+ * **实体构造(`_build_gear_faces`)逐字继承**——端面是实心圆盘(`makeFromWires(outer)`
6
+ * 单 wire 成面),没有 RingGear 的 rim / 环形盖面。唯一差异在**齿廓公式**:
7
+ * 端面模数 `mt = m/cos(helix)`、端面压力角 `at0`,见 `crossedHelicalGearGeometry`。
8
+ *
9
+ * 因此这里只需「用自己的公式算 geom,再交给共用的 `buildGearSolid`」。
10
+ */
11
+ import type { BrepHandle } from '@faicad/faijs';
12
+ import type { GearKernel } from './kernel/index.js';
13
+ import { type CrossedHelicalGearParams } from './profile.js';
14
+ import { type BuildSpurGearOptions } from './spur_gear.js';
15
+ /**
16
+ * CrossedHelicalGear 裸实体(无 bore / hub / recess / chamfer)。
17
+ *
18
+ * @param kernel 原始 OCCT 内核
19
+ * @param params 交错轴斜齿轮参数(模数/齿数/宽度/螺旋角等)
20
+ * @param build 构造选项(策略/容差覆盖)
21
+ * @returns 朝向归一化后的 solid
22
+ */
23
+ export declare function buildCrossedHelicalSolid(kernel: GearKernel, params: CrossedHelicalGearParams, build?: BuildSpurGearOptions): BrepHandle;
24
+ //# sourceMappingURL=crossed_helical_gear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossed_helical_gear.d.ts","sourceRoot":"","sources":["../src/crossed_helical_gear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EACuB,KAAK,wBAAwB,EAC1D,MAAM,WAAW,CAAA;AAClB,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,wBAAwB,EAChC,KAAK,GAAE,oBAAyB,GAC/B,UAAU,CAEZ"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * crossed_helical_gear — CrossedHelicalGear(交错轴斜齿轮)实体构造
3
+ *
4
+ * 对应 `crossed_helical_gear.py::CrossedHelicalGear`:它继承 `SpurGear`,
5
+ * **实体构造(`_build_gear_faces`)逐字继承**——端面是实心圆盘(`makeFromWires(outer)`
6
+ * 单 wire 成面),没有 RingGear 的 rim / 环形盖面。唯一差异在**齿廓公式**:
7
+ * 端面模数 `mt = m/cos(helix)`、端面压力角 `at0`,见 `crossedHelicalGearGeometry`。
8
+ *
9
+ * 因此这里只需「用自己的公式算 geom,再交给共用的 `buildGearSolid`」。
10
+ */
11
+ import { crossedHelicalGearGeometry, } from './profile.js';
12
+ import { buildGearSolid } from './spur_gear.js';
13
+ /**
14
+ * CrossedHelicalGear 裸实体(无 bore / hub / recess / chamfer)。
15
+ *
16
+ * @param kernel 原始 OCCT 内核
17
+ * @param params 交错轴斜齿轮参数(模数/齿数/宽度/螺旋角等)
18
+ * @param build 构造选项(策略/容差覆盖)
19
+ * @returns 朝向归一化后的 solid
20
+ */
21
+ export function buildCrossedHelicalSolid(kernel, params, build = {}) {
22
+ return buildGearSolid(kernel, crossedHelicalGearGeometry(params), build);
23
+ }
24
+ //# sourceMappingURL=crossed_helical_gear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossed_helical_gear.js","sourceRoot":"","sources":["../src/crossed_helical_gear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACL,0BAA0B,GAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAA;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAkB,EAClB,MAAgC,EAChC,QAA8B,EAAE;IAEhC,OAAO,cAAc,CAAC,MAAM,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;AAC1E,CAAC"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * crossed_pair — 交错轴齿轮对(CrossedGearPair / HyperbolicGearPair)
3
+ *
4
+ * 对应 `crossed_helical_gear.py`:两个单体齿轮按轴交角装配成一个 Compound。
5
+ * 两件都各自用现成的实体构造(`buildCrossedHelicalSolid` / `buildHyperbolicGearSolid`),
6
+ * 差异只在**装配定位链**与**螺旋角分配**:
7
+ *
8
+ * ## 螺旋角分配(CrossedGearPair)
9
+ *
10
+ * `gear1_helix_angle is None` 时两齿轮各取 `shaft_angle/2`;否则
11
+ * `g1 = gear1_helix_angle`、`g2 = shaft_angle − gear1_helix_angle`。
12
+ *
13
+ * ## gear2 定位链(两种对类完全一致,仅 X 向偏移不同)
14
+ *
15
+ * Python(右到左复合 `loc = A; loc *= B; loc *= C; loc *= D` ⇒ 施加顺序 D→C→B→A):
16
+ *
17
+ * ```python
18
+ * loc = cq.Location(Vector(r0_1 + r0_2, 0, w1/2)) # A 平移
19
+ * loc *= cq.Location(Vector(0,0,0), X, shaft_angle) # B 绕原点 X 转
20
+ * loc *= cq.Location(Vector(0,0,-w2/2)) # C 平移
21
+ * loc *= cq.Location(Vector(0,0,0), Z, align_angle) # D 绕原点 Z 转
22
+ * ```
23
+ *
24
+ * `align_angle = (0 if gear2.z%2 else 180/gear2.z) + degrees(gear2.twist + gear1.twist*ratio)/2`,
25
+ * `ratio = gear1.z / gear2.z`。
26
+ *
27
+ * ## X 向偏移差异
28
+ * - CrossedGearPair:用两齿轮分度半径之和 `r0_1 + r0_2`;
29
+ * - HyperbolicGearPair:用两齿轮**喉部半径**之和 `throat_r1 + throat_r2`。
30
+ */
31
+ import type { BrepHandle } from '@faicad/faijs';
32
+ import type { GearKernel } from './kernel/index.js';
33
+ import { crossedHelicalGearGeometry, type HyperbolicGearGeometry } from './profile.js';
34
+ import { type BuildSpurGearOptions } from './spur_gear.js';
35
+ /** 装配定位链的输入量(拆出来便于单测直接验证定位本身)。 */
36
+ export interface SecondGearPlacement {
37
+ /** gear2 绕 Z 的对齿/对齐角(弧度)。 */
38
+ alignAngleRad: number;
39
+ /** 轴交角(弧度)。 */
40
+ shaftAngleRad: number;
41
+ /** X 向平移量(Crossed 用 r0 和、Hyperbolic 用 throat_r 和)。 */
42
+ offsetX: number;
43
+ /** gear1 宽度(Z 向平移分量)。 */
44
+ gear1Width: number;
45
+ /** gear2 宽度(Z 向平移分量)。 */
46
+ gear2Width: number;
47
+ }
48
+ /**
49
+ * 把第二齿轮摆到与第一齿轮啮合的位姿(复刻 Python 的四步 `loc *=`)。
50
+ *
51
+ * 施加顺序 **D → C → B → A**:先绕原点 Z 转 `alignAngle`,再沿 Z 平移 `-w2/2`,
52
+ * 再绕原点 X 转 `shaftAngle`,最后沿 X 平移 `offsetX`、沿 Z 平移 `w1/2`。
53
+ *
54
+ * @param kernel 原始 OCCT 内核
55
+ * @param g2 第二齿轮 solid
56
+ * @param place 定位链输入量
57
+ * @returns 定位后的第二齿轮 solid
58
+ */
59
+ export declare function placeSecondGear(kernel: GearKernel, g2: BrepHandle, place: SecondGearPlacement): BrepHandle;
60
+ /**
61
+ * 复刻 Python 的 `align_angle` 公式。
62
+ *
63
+ * `align_angle = (0 if gear2.z%2 else 180/gear2.z) + degrees(gear2.twist + gear1.twist*ratio)/2`,
64
+ * `ratio = gear1.z / gear2.z`。两个 twist 都用**弧度**(来自几何量)。
65
+ *
66
+ * @param gear1Z 第一齿轮齿数
67
+ * @param gear1TwistRad 第一齿轮扭转角(弧度)
68
+ * @param gear2Z 第二齿轮齿数
69
+ * @param gear2TwistRad 第二齿轮扭转角(弧度)
70
+ * @returns 对齐角(弧度)
71
+ */
72
+ export declare function crossedPairAlignAngle(gear1Z: number, gear1TwistRad: number, gear2Z: number, gear2TwistRad: number): number;
73
+ /** 交错轴斜齿轮对参数(逐字沿用 `CrossedGearPair.__init__`)。 */
74
+ export interface CrossedGearPairParams {
75
+ module: number;
76
+ gear1_teeth_number: number;
77
+ gear2_teeth_number: number;
78
+ gear1_width: number;
79
+ gear2_width: number;
80
+ pressure_angle?: number;
81
+ shaft_angle?: number;
82
+ /** 第一齿轮螺旋角(度);`null`/缺省 = 两齿轮各取 `shaft_angle/2`。 */
83
+ gear1_helix_angle?: number | null;
84
+ clearance?: number;
85
+ backlash?: number;
86
+ }
87
+ /** 齿轮对构造选项(扩展单体特征选项 + 装配开关)。 */
88
+ export interface BuildCrossedGearPairOptions extends BuildSpurGearOptions {
89
+ /** 是否构建第一齿轮(默认 true)。 */
90
+ buildGear1?: boolean;
91
+ /** 是否构建第二齿轮(默认 true)。 */
92
+ buildGear2?: boolean;
93
+ /** 是否对 gear2 施加装配定位(默认 true)。 */
94
+ transformGear2?: boolean;
95
+ }
96
+ /** 交错轴斜齿轮对的构建结果。 */
97
+ export interface CrossedGearPairBuild {
98
+ /** 第一齿轮 solid(未定位)。 */
99
+ gear1?: BrepHandle;
100
+ /** 第二齿轮 solid(已定位)。 */
101
+ gear2?: BrepHandle;
102
+ gear1Geometry: ReturnType<typeof crossedHelicalGearGeometry>;
103
+ gear2Geometry: ReturnType<typeof crossedHelicalGearGeometry>;
104
+ /** 轴交角(弧度)。 */
105
+ shaftAngleRad: number;
106
+ }
107
+ /**
108
+ * 构建一对交错轴斜齿轮(`CrossedGearPair`)。
109
+ *
110
+ * 两件都走 `buildCrossedHelicalSolid`(用各自的 helix 角),差异只在参数:gear2 的
111
+ * helix 由 `shaft_angle − gear1_helix` 决定;gear2 默认按轴交角定位到与第一齿轮啮合。
112
+ *
113
+ * @param kernel 原始 OCCT 内核
114
+ * @param params 齿轮对参数
115
+ * @param options 构造选项
116
+ * @returns 两件 solid(gear2 默认已定位)与两件几何量
117
+ */
118
+ export declare function buildCrossedGearPair(kernel: GearKernel, params: CrossedGearPairParams, options?: BuildCrossedGearPairOptions): CrossedGearPairBuild;
119
+ /**
120
+ * 一对交错轴斜齿轮的导出条目(gear1 → gear2)。
121
+ *
122
+ * @param build 交叉轴齿轮对构建结果(gear2 可能为空——只有 `shafts_connected` 时存在)
123
+ * @returns 具名实体数组(名字进 STEP 产品名,供逐件等价比对)
124
+ */
125
+ export declare function crossedPairExportParts(build: CrossedGearPairBuild): Array<{
126
+ name: string;
127
+ solid: BrepHandle;
128
+ }>;
129
+ /** 双曲面齿轮对参数(逐字沿用 `HyperbolicGearPair.__init__`)。 */
130
+ export interface HyperbolicGearPairParams {
131
+ module: number;
132
+ gear1_teeth_number: number;
133
+ /** 齿宽(两齿轮共用,沿 X)。 */
134
+ width: number;
135
+ /** 轴交角(度)。 */
136
+ shaft_angle: number;
137
+ /** 第二齿轮齿数(缺省 = 第一齿轮齿数)。 */
138
+ gear2_teeth_number?: number;
139
+ pressure_angle?: number;
140
+ clearance?: number;
141
+ backlash?: number;
142
+ }
143
+ /** 双曲面齿轮对的构建结果。 */
144
+ export interface HyperbolicGearPairBuild {
145
+ gear1?: BrepHandle;
146
+ gear2?: BrepHandle;
147
+ gear1Geometry: HyperbolicGearGeometry;
148
+ gear2Geometry: HyperbolicGearGeometry;
149
+ /** 轴交角(弧度)。 */
150
+ shaftAngleRad: number;
151
+ }
152
+ /**
153
+ * 构建一对双曲面齿轮(`HyperbolicGearPair`)。
154
+ *
155
+ * 两齿轮的扭转角由轴交角 + 喉部几何反算
156
+ * (`g_twist = 2·asin((w/2)·tan(shaft/2) / r0)`),再各自走 `buildHyperbolicGearSolid`;
157
+ * gear2 用 **throat_r 和** 作 X 向偏移(与 CrossedGearPair 的 r0 和不同)。
158
+ *
159
+ * @throws 扭转角无法计算(NaN,齿数/轴交角/齿宽组合不合法)时抛 Error
160
+ *
161
+ * @param kernel 原始 OCCT 内核
162
+ * @param params 齿轮对参数
163
+ * @param options 构造选项
164
+ * @returns 两件 solid(gear2 默认已定位)与两件几何量
165
+ */
166
+ export declare function buildHyperbolicGearPair(kernel: GearKernel, params: HyperbolicGearPairParams, options?: BuildCrossedGearPairOptions): HyperbolicGearPairBuild;
167
+ /**
168
+ * 一对双曲面齿轮的导出条目(gear1 → gear2)。
169
+ *
170
+ * @param build 双曲面齿轮对构建结果(gear2 可能为空——只有 `shafts_connected` 时存在)
171
+ * @returns 具名实体数组(名字进 STEP 产品名,供逐件等价比对)
172
+ */
173
+ export declare function hyperbolicPairExportParts(build: HyperbolicGearPairBuild): Array<{
174
+ name: string;
175
+ solid: BrepHandle;
176
+ }>;
177
+ //# sourceMappingURL=crossed_pair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossed_pair.d.ts","sourceRoot":"","sources":["../src/crossed_pair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * crossed_pair — 交错轴齿轮对(CrossedGearPair / HyperbolicGearPair)
3
+ *
4
+ * 对应 `crossed_helical_gear.py`:两个单体齿轮按轴交角装配成一个 Compound。
5
+ * 两件都各自用现成的实体构造(`buildCrossedHelicalSolid` / `buildHyperbolicGearSolid`),
6
+ * 差异只在**装配定位链**与**螺旋角分配**:
7
+ *
8
+ * ## 螺旋角分配(CrossedGearPair)
9
+ *
10
+ * `gear1_helix_angle is None` 时两齿轮各取 `shaft_angle/2`;否则
11
+ * `g1 = gear1_helix_angle`、`g2 = shaft_angle − gear1_helix_angle`。
12
+ *
13
+ * ## gear2 定位链(两种对类完全一致,仅 X 向偏移不同)
14
+ *
15
+ * Python(右到左复合 `loc = A; loc *= B; loc *= C; loc *= D` ⇒ 施加顺序 D→C→B→A):
16
+ *
17
+ * ```python
18
+ * loc = cq.Location(Vector(r0_1 + r0_2, 0, w1/2)) # A 平移
19
+ * loc *= cq.Location(Vector(0,0,0), X, shaft_angle) # B 绕原点 X 转
20
+ * loc *= cq.Location(Vector(0,0,-w2/2)) # C 平移
21
+ * loc *= cq.Location(Vector(0,0,0), Z, align_angle) # D 绕原点 Z 转
22
+ * ```
23
+ *
24
+ * `align_angle = (0 if gear2.z%2 else 180/gear2.z) + degrees(gear2.twist + gear1.twist*ratio)/2`,
25
+ * `ratio = gear1.z / gear2.z`。
26
+ *
27
+ * ## X 向偏移差异
28
+ * - CrossedGearPair:用两齿轮分度半径之和 `r0_1 + r0_2`;
29
+ * - HyperbolicGearPair:用两齿轮**喉部半径**之和 `throat_r1 + throat_r2`。
30
+ */
31
+ import { crossedHelicalGearGeometry, hyperbolicGearGeometry, } from './profile.js';
32
+ import { buildCrossedHelicalSolid } from './crossed_helical_gear.js';
33
+ import { buildHyperbolicGearSolid } from './spur_gear.js';
34
+ const Z_AXIS = { point: { x: 0, y: 0, z: 0 }, direction: { x: 0, y: 0, z: 1 } };
35
+ const X_AXIS = { point: { x: 0, y: 0, z: 0 }, direction: { x: 1, y: 0, z: 0 } };
36
+ /**
37
+ * 把第二齿轮摆到与第一齿轮啮合的位姿(复刻 Python 的四步 `loc *=`)。
38
+ *
39
+ * 施加顺序 **D → C → B → A**:先绕原点 Z 转 `alignAngle`,再沿 Z 平移 `-w2/2`,
40
+ * 再绕原点 X 转 `shaftAngle`,最后沿 X 平移 `offsetX`、沿 Z 平移 `w1/2`。
41
+ *
42
+ * @param kernel 原始 OCCT 内核
43
+ * @param g2 第二齿轮 solid
44
+ * @param place 定位链输入量
45
+ * @returns 定位后的第二齿轮 solid
46
+ */
47
+ export function placeSecondGear(kernel, g2, place) {
48
+ let s = g2;
49
+ s = kernel.rotate(s, Z_AXIS, place.alignAngleRad); // D
50
+ s = kernel.translate(s, 0, 0, -place.gear2Width / 2); // C
51
+ s = kernel.rotate(s, X_AXIS, place.shaftAngleRad); // B
52
+ return kernel.translate(s, place.offsetX, 0, place.gear1Width / 2); // A
53
+ }
54
+ /**
55
+ * 复刻 Python 的 `align_angle` 公式。
56
+ *
57
+ * `align_angle = (0 if gear2.z%2 else 180/gear2.z) + degrees(gear2.twist + gear1.twist*ratio)/2`,
58
+ * `ratio = gear1.z / gear2.z`。两个 twist 都用**弧度**(来自几何量)。
59
+ *
60
+ * @param gear1Z 第一齿轮齿数
61
+ * @param gear1TwistRad 第一齿轮扭转角(弧度)
62
+ * @param gear2Z 第二齿轮齿数
63
+ * @param gear2TwistRad 第二齿轮扭转角(弧度)
64
+ * @returns 对齐角(弧度)
65
+ */
66
+ export function crossedPairAlignAngle(gear1Z, gear1TwistRad, gear2Z, gear2TwistRad) {
67
+ const ratio = gear1Z / gear2Z;
68
+ // ⚠️ 分支方向与 cq 逐字一致:`align_angle = 0.0 if gear2.z % 2 else 180/gear2.z`。
69
+ // 即 **gear2.z 为偶**时取 `180/gear2.z`(base 非零),**为奇**时取 0。
70
+ // 2026-09-13 修正:此前把奇偶分支写反(偶→0、奇→180/z),导致 gear2 绕 Z 对齐角
71
+ // 差半齿(如 z=20 时差 9°),gear2 被平移+旋转到错误位姿,compare-all 报
72
+ // bool diff ≈ 整件体积(cgp-basic / hgp-basic 因此 DIFFERENT)。
73
+ const alignDeg = (gear2Z % 2 === 0 ? 180 / gear2Z : 0)
74
+ + (((gear2TwistRad * 180.0) / Math.PI) + ((gear1TwistRad * 180.0) / Math.PI) * ratio) / 2.0;
75
+ return (alignDeg * Math.PI) / 180.0;
76
+ }
77
+ /**
78
+ * 构建一对交错轴斜齿轮(`CrossedGearPair`)。
79
+ *
80
+ * 两件都走 `buildCrossedHelicalSolid`(用各自的 helix 角),差异只在参数:gear2 的
81
+ * helix 由 `shaft_angle − gear1_helix` 决定;gear2 默认按轴交角定位到与第一齿轮啮合。
82
+ *
83
+ * @param kernel 原始 OCCT 内核
84
+ * @param params 齿轮对参数
85
+ * @param options 构造选项
86
+ * @returns 两件 solid(gear2 默认已定位)与两件几何量
87
+ */
88
+ export function buildCrossedGearPair(kernel, params, options = {}) {
89
+ const shaftAngleDeg = params.shaft_angle ?? 90.0;
90
+ let g1Helix;
91
+ let g2Helix;
92
+ if (params.gear1_helix_angle == null) {
93
+ g1Helix = shaftAngleDeg / 2.0;
94
+ g2Helix = shaftAngleDeg / 2.0;
95
+ }
96
+ else {
97
+ g1Helix = params.gear1_helix_angle;
98
+ g2Helix = shaftAngleDeg - params.gear1_helix_angle;
99
+ }
100
+ const gear1Params = {
101
+ module: params.module,
102
+ teeth_number: params.gear1_teeth_number,
103
+ width: params.gear1_width,
104
+ pressure_angle: params.pressure_angle,
105
+ helix_angle: g1Helix,
106
+ clearance: params.clearance,
107
+ backlash: params.backlash,
108
+ };
109
+ const gear2Params = {
110
+ module: params.module,
111
+ teeth_number: params.gear2_teeth_number,
112
+ width: params.gear2_width,
113
+ pressure_angle: params.pressure_angle,
114
+ helix_angle: g2Helix,
115
+ clearance: params.clearance,
116
+ backlash: params.backlash,
117
+ };
118
+ const geom1 = crossedHelicalGearGeometry(gear1Params);
119
+ const geom2 = crossedHelicalGearGeometry(gear2Params);
120
+ const shaftAngleRad = (shaftAngleDeg * Math.PI) / 180.0;
121
+ const alignAngleRad = crossedPairAlignAngle(geom1.z, geom1.twistAngle, geom2.z, geom2.twistAngle);
122
+ const out = { gear1Geometry: geom1, gear2Geometry: geom2, shaftAngleRad };
123
+ if (options.buildGear1 !== false) {
124
+ out.gear1 = buildCrossedHelicalSolid(kernel, gear1Params, options);
125
+ }
126
+ if (options.buildGear2 !== false) {
127
+ let g2 = buildCrossedHelicalSolid(kernel, gear2Params, options);
128
+ if (options.transformGear2 !== false) {
129
+ g2 = placeSecondGear(kernel, g2, {
130
+ alignAngleRad,
131
+ shaftAngleRad,
132
+ offsetX: geom1.r0 + geom2.r0,
133
+ gear1Width: params.gear1_width,
134
+ gear2Width: params.gear2_width,
135
+ });
136
+ }
137
+ out.gear2 = g2;
138
+ }
139
+ return out;
140
+ }
141
+ /**
142
+ * 一对交错轴斜齿轮的导出条目(gear1 → gear2)。
143
+ *
144
+ * @param build 交叉轴齿轮对构建结果(gear2 可能为空——只有 `shafts_connected` 时存在)
145
+ * @returns 具名实体数组(名字进 STEP 产品名,供逐件等价比对)
146
+ */
147
+ export function crossedPairExportParts(build) {
148
+ const parts = [];
149
+ if (build.gear1)
150
+ parts.push({ name: 'gear1', solid: build.gear1 });
151
+ if (build.gear2)
152
+ parts.push({ name: 'gear2', solid: build.gear2 });
153
+ return parts;
154
+ }
155
+ /**
156
+ * 构建一对双曲面齿轮(`HyperbolicGearPair`)。
157
+ *
158
+ * 两齿轮的扭转角由轴交角 + 喉部几何反算
159
+ * (`g_twist = 2·asin((w/2)·tan(shaft/2) / r0)`),再各自走 `buildHyperbolicGearSolid`;
160
+ * gear2 用 **throat_r 和** 作 X 向偏移(与 CrossedGearPair 的 r0 和不同)。
161
+ *
162
+ * @throws 扭转角无法计算(NaN,齿数/轴交角/齿宽组合不合法)时抛 Error
163
+ *
164
+ * @param kernel 原始 OCCT 内核
165
+ * @param params 齿轮对参数
166
+ * @param options 构造选项
167
+ * @returns 两件 solid(gear2 默认已定位)与两件几何量
168
+ */
169
+ export function buildHyperbolicGearPair(kernel, params, options = {}) {
170
+ const shaftAngleDeg = params.shaft_angle;
171
+ const g2Teeth = params.gear2_teeth_number ?? params.gear1_teeth_number;
172
+ const g1R0 = (params.module * params.gear1_teeth_number) / 2.0;
173
+ const g2R0 = (params.module * g2Teeth) / 2.0;
174
+ const alpha = (shaftAngleDeg / 2.0) * (Math.PI / 180.0);
175
+ const hh = (params.width / 2.0) * Math.tan(alpha);
176
+ const g1Twist = 2.0 * Math.asin(hh / g1R0);
177
+ const g2Twist = 2.0 * Math.asin(hh / g2R0);
178
+ if (Number.isNaN(g1Twist) || Number.isNaN(g2Twist)) {
179
+ throw new Error('HyperbolicGearPair: impossible to calculate the twist angle for the '
180
+ + 'given shaft angle / teeth number / gear width');
181
+ }
182
+ const gear1Params = {
183
+ module: params.module,
184
+ teeth_number: params.gear1_teeth_number,
185
+ width: params.width,
186
+ twist_angle: (g1Twist * 180.0) / Math.PI,
187
+ pressure_angle: params.pressure_angle,
188
+ clearance: params.clearance,
189
+ backlash: params.backlash,
190
+ };
191
+ const gear2Params = {
192
+ module: params.module,
193
+ teeth_number: g2Teeth,
194
+ width: params.width,
195
+ twist_angle: (g2Twist * 180.0) / Math.PI,
196
+ pressure_angle: params.pressure_angle,
197
+ clearance: params.clearance,
198
+ backlash: params.backlash,
199
+ };
200
+ const geom1 = hyperbolicGearGeometry(gear1Params);
201
+ const geom2 = hyperbolicGearGeometry(gear2Params);
202
+ const shaftAngleRad = (shaftAngleDeg * Math.PI) / 180.0;
203
+ const alignAngleRad = crossedPairAlignAngle(geom1.z, geom1.twistAngle, geom2.z, geom2.twistAngle);
204
+ const out = { gear1Geometry: geom1, gear2Geometry: geom2, shaftAngleRad };
205
+ if (options.buildGear1 !== false) {
206
+ out.gear1 = buildHyperbolicGearSolid(kernel, gear1Params, options);
207
+ }
208
+ if (options.buildGear2 !== false) {
209
+ let g2 = buildHyperbolicGearSolid(kernel, gear2Params, options);
210
+ if (options.transformGear2 !== false) {
211
+ g2 = placeSecondGear(kernel, g2, {
212
+ alignAngleRad,
213
+ shaftAngleRad,
214
+ offsetX: geom1.throatR + geom2.throatR,
215
+ gear1Width: params.width,
216
+ gear2Width: params.width,
217
+ });
218
+ }
219
+ out.gear2 = g2;
220
+ }
221
+ return out;
222
+ }
223
+ /**
224
+ * 一对双曲面齿轮的导出条目(gear1 → gear2)。
225
+ *
226
+ * @param build 双曲面齿轮对构建结果(gear2 可能为空——只有 `shafts_connected` 时存在)
227
+ * @returns 具名实体数组(名字进 STEP 产品名,供逐件等价比对)
228
+ */
229
+ export function hyperbolicPairExportParts(build) {
230
+ const parts = [];
231
+ if (build.gear1)
232
+ parts.push({ name: 'gear1', solid: build.gear1 });
233
+ if (build.gear2)
234
+ parts.push({ name: 'gear2', solid: build.gear2 });
235
+ return parts;
236
+ }
237
+ //# sourceMappingURL=crossed_pair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossed_pair.js","sourceRoot":"","sources":["../src/crossed_pair.ts"],"names":[],"mappings":"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"}