forgecad 0.9.4 → 0.9.5
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/assets/{AdminPage-jwoEgwE_.js → AdminPage-uTtcSXtn.js} +1 -1
- package/dist/assets/{BlogPage-Ck7g3ue2.js → BlogPage-DYJMjWx3.js} +1 -1
- package/dist/assets/{DocsPage-9WaRC14b.js → DocsPage-C58f0K5v.js} +1 -6
- package/dist/assets/{EditorApp-Dja2jMmW.js → EditorApp-DNH1TEz1.js} +282 -62
- package/dist/assets/{EmbedViewer-37_PfMwv.js → EmbedViewer-CMXWA2LX.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-CO8WL0CY.js → LandingPageProofDriven-CAu2OZFn.js} +1 -1
- package/dist/assets/{PricingPage-DADKGuOa.js → PricingPage-BIgW7m3X.js} +1 -1
- package/dist/assets/{SettingsPage-DKKI4W49.js → SettingsPage-N1l1tMXO.js} +1 -1
- package/dist/assets/{app-CwI02pTA.js → app-CFy7g5WP.js} +74 -12
- package/dist/assets/cli/{render-Kw5hLEcL.js → render-BrVVdj_T.js} +453 -41
- package/dist/assets/{evalWorker-D6ub3kfS.js → evalWorker-c_SB9gg3.js} +2057 -446
- package/dist/assets/{manifold-lru0jwVw.js → manifold-CRoBhJKH.js} +2 -2
- package/dist/assets/{manifold-CwDdMKyc.js → manifold-Cjk7WhRs.js} +1 -1
- package/dist/assets/{manifold-DTvmxSDf.js → manifold-Dp6pvFr6.js} +1 -1
- package/dist/assets/{renderSceneState-tvtNKNRi.js → renderSceneState-3DfsSASX.js} +1 -1
- package/dist/assets/{reportWorker-DeqktDGt.js → reportWorker-BLkuIoS8.js} +2052 -443
- package/dist/assets/{sectionPlaneMath-C8N0w8o3.js → sectionPlaneMath-CykEnkvQ.js} +2258 -518
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/usage.md +0 -1
- package/dist/docs-raw/API/core/concepts.md +11 -1
- package/dist/docs-raw/CLI.md +64 -13
- package/dist/docs-raw/generated/assembly.md +8 -3
- package/dist/docs-raw/generated/concepts.md +44 -41
- package/dist/docs-raw/generated/core.md +97 -47
- package/dist/docs-raw/generated/curves.md +6 -580
- package/dist/docs-raw/generated/lib.md +40 -3
- package/dist/docs-raw/generated/output.md +6 -1
- package/dist/docs-raw/generated/sdf.md +50 -4
- package/dist/docs-raw/generated/viewport.md +1 -9
- package/dist/docs-raw/guides/inspection-bundles.md +31 -6
- package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -0
- package/dist/docs-raw/skills/forgecad-image-replicator.md +3 -1
- package/dist/docs-raw/skills/forgecad-make-a-model.md +48 -4
- package/dist/docs-raw/skills/forgecad-render-inspect.md +3 -1
- package/dist/docs-raw/skills/forgecad-visual-spec.md +2 -0
- package/dist/docs-raw/skills/forgecad.md +2 -1
- package/dist/docs-raw/skills/index.md +0 -1
- package/dist/index.html +1 -1
- package/dist/sitemap.xml +6 -6
- package/dist-cli/blender/render.py +43 -8
- package/dist-cli/forgecad.js +4941 -1758
- package/dist-cli/forgecad.js.map +1 -1
- package/dist-skill/CONTEXT.md +255 -656
- package/dist-skill/SKILL-dev.md +2 -1
- package/dist-skill/SKILL.md +2 -1
- package/dist-skill/docs/API/core/concepts.md +11 -1
- package/dist-skill/docs/CLI.md +64 -13
- package/dist-skill/docs/generated/assembly.md +8 -3
- package/dist-skill/docs/generated/core.md +97 -47
- package/dist-skill/docs/generated/curves.md +6 -580
- package/dist-skill/docs/generated/lib.md +40 -3
- package/dist-skill/docs/generated/output.md +6 -1
- package/dist-skill/docs/generated/sdf.md +50 -4
- package/dist-skill/docs/generated/viewport.md +1 -9
- package/dist-skill/docs/guides/inspection-bundles.md +31 -6
- package/dist-skill/docs-dev/API/core/concepts.md +11 -1
- package/dist-skill/docs-dev/CLI.md +64 -13
- package/dist-skill/docs-dev/generated/assembly.md +8 -3
- package/dist-skill/docs-dev/generated/core.md +97 -47
- package/dist-skill/docs-dev/generated/curves.md +6 -580
- package/dist-skill/docs-dev/generated/lib.md +40 -3
- package/dist-skill/docs-dev/generated/output.md +6 -1
- package/dist-skill/docs-dev/generated/sdf.md +50 -4
- package/dist-skill/docs-dev/generated/viewport.md +1 -9
- package/dist-skill/docs-dev/guides/inspection-bundles.md +31 -6
- package/dist-skill/library/README.md +0 -1
- package/dist-skill/library/forgecad-blockout-model/SKILL.md +1 -0
- package/dist-skill/library/forgecad-image-replicator/SKILL.md +3 -1
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +48 -4
- package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
- package/dist-skill/library/forgecad-visual-spec/SKILL.md +2 -0
- package/examples/api/drive-wheel-regions.forge.js +43 -0
- package/examples/api/sdf-circular-array-knurling.forge.js +19 -0
- package/examples/api/sdf-pattern2d-ceramic-ripple-set.forge.js +83 -0
- package/examples/api/sdf-pattern2d-grip-tread.forge.js +72 -0
- package/examples/api/sdf-pattern2d-orbital-jewelry.forge.js +62 -0
- package/examples/api/sdf-surface-basket-weave.forge.js +67 -0
- package/examples/api/sector-gear-body.forge.js +34 -0
- package/package.json +1 -1
- package/dist/docs-raw/skills/forgecad-api-dogfood.md +0 -130
- package/dist-skill/library/forgecad-api-dogfood/SKILL.md +0 -125
|
@@ -10,7 +10,7 @@ Smooth curves, lofted surfaces, swept solids, splines, and high-level product sk
|
|
|
10
10
|
## Contents
|
|
11
11
|
|
|
12
12
|
- [Curves & Surfacing](#curves-surfacing) — `hermiteTransitionG2`, `nurbs3d`, `spline2d`, `spline3d`, `loft`, `loftAlongSpine`, `sweep`, `variableSweep`, `nurbsSurface`, `surfacePatch`, `transitionCurve`, `transitionSurface`, `connectEdges`
|
|
13
|
-
- [Surface Members](#surface-members) — `surfaceBand`, `
|
|
13
|
+
- [Surface Members](#surface-members) — `surfaceBand`, `SurfaceBody`
|
|
14
14
|
- [Curve3D](#curve3d)
|
|
15
15
|
- [NurbsCurve3D](#nurbscurve3d)
|
|
16
16
|
- [NurbsSurface](#nurbssurface)
|
|
@@ -27,7 +27,6 @@ Smooth curves, lofted surfaces, swept solids, splines, and high-level product sk
|
|
|
27
27
|
- [ProductSpoutBuilder](#productspoutbuilder)
|
|
28
28
|
- [ProductHandleBuilder](#producthandlebuilder)
|
|
29
29
|
- [ProductHandleFeature](#producthandlefeature)
|
|
30
|
-
- [ProductRibbonBuilder](#productribbonbuilder)
|
|
31
30
|
- [CylinderCarrier](#cylindercarrier)
|
|
32
31
|
- [PlaneCarrier](#planecarrier)
|
|
33
32
|
- [ProductSkinCarrier](#productskincarrier)
|
|
@@ -375,11 +374,8 @@ connectEdges(edgeA: EdgeSegment, edgeB: EdgeSegment, options?: ConnectEdgesOptio
|
|
|
375
374
|
| `normalA` | `Vec3` | Normal of first adjacent face. |
|
|
376
375
|
| `normalB` | `Vec3` | Normal of second adjacent face (same as normalA for boundary edges). |
|
|
377
376
|
| `boundary` | `boolean` | true if this is a boundary (unmatched) edge — unusual for closed solids. |
|
|
378
|
-
| `nativeTopology?` | `EdgeNativeTopologyRef` | Native kernel topology identity when the active backend can provide one. |
|
|
379
377
|
| `start`, `end`, `midpoint`, `length` | | — |
|
|
380
378
|
|
|
381
|
-
`EdgeNativeTopologyRef`: `{ backend: "truck", edge: number }`
|
|
382
|
-
|
|
383
379
|
|
|
384
380
|
**`ConnectEdgesOptions`** extends TransitionSurfaceOptions
|
|
385
381
|
|
|
@@ -402,63 +398,6 @@ connectEdges(edgeA: EdgeSegment, edgeB: EdgeSegment, options?: ConnectEdgesOptio
|
|
|
402
398
|
surfaceBand<C extends SurfaceCoordinate>(path: SurfacePath<C> | SurfacePathBuilder<C>, width: WidthProfile, cap?: SurfaceBandCap): SurfaceBand<C>
|
|
403
399
|
```
|
|
404
400
|
|
|
405
|
-
#### `compileSurfaceMember()`
|
|
406
|
-
|
|
407
|
-
```ts
|
|
408
|
-
compileSurfaceMember<C extends SurfaceCoordinate>(input: Omit<SurfaceMemberSpec<C>, "section"> & { section: MemberSection | MemberSectionInput; }): CompiledSurfaceMember
|
|
409
|
-
```
|
|
410
|
-
|
|
411
|
-
**`SurfaceMemberSpec`**: `name: string`, `kind: SurfaceMemberKind`, `path?: SurfacePath<C> | SurfacePathBuilder<C>`, `anchor?: SurfaceAnchor<C>`, `size?: { width: number; height: number; }`, `section: MemberSection`, `features: MemberFeature[]`, `capStyle?: SurfaceBandCap`, `explicitAnchors?: SurfaceMemberExplicitAnchor<C>[]`
|
|
412
|
-
|
|
413
|
-
`SurfaceAnchor`: `{ carrier: CarrierSurface<C>, coordinate: C }`
|
|
414
|
-
|
|
415
|
-
`CarrierSurface`: `{ name: string, kind: SurfaceCarrierKind }`
|
|
416
|
-
|
|
417
|
-
**`MemberSection`**: `width?: number`, `thickness: number`, `edgeRadius: number`, `direction: MemberOutwardDirection`, `material?: ProductMaterial`, `stations: MemberSectionStation[]`
|
|
418
|
-
|
|
419
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
420
|
-
|
|
421
|
-
**`ShapeMaterialProps`**
|
|
422
|
-
|
|
423
|
-
| Option | Type | Description |
|
|
424
|
-
|--------|------|-------------|
|
|
425
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
426
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
427
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
428
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
429
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
430
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
431
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
432
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
433
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
434
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
435
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
436
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
437
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
438
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
439
|
-
|
|
440
|
-
`MemberSectionStation`: `{ t: number, width?: number, thickness?: number }`
|
|
441
|
-
|
|
442
|
-
**`MemberFeature`**: `type: MemberFeatureType`, `name?: string`, `length?: number`, `width?: number`, `diameter?: number`, `counterboreDiameter?: number`, `clearanceDiameter?: number`, `height?: number`, `depth?: number`, `count?: number`, `along?: number`, `across?: number`, `verticalTravel?: number`
|
|
443
|
-
|
|
444
|
-
`SurfaceMemberExplicitAnchor`: `{ name: string, coordinate: C, carrierName?: string }`
|
|
445
|
-
|
|
446
|
-
**`MemberSectionInput`**: `width?: number`, `thickness: number`, `edgeRadius?: number`, `direction?: MemberOutwardDirection`, `material?: ProductMaterial`, `stations?: MemberSectionStation[]`
|
|
447
|
-
|
|
448
|
-
**`CompiledSurfaceMember`**: `name: string`, `shape: Shape`, `mesh: MemberMesh`, `diagnostics: SurfaceDiagnostic[]`, `anchors: { start?: CompiledSurfaceMemberAnchor; end?: CompiledSurfaceMemberAnchor; center: CompiledSurfaceMemberAnchor; landings?: CompiledSurfaceMemberAnchor[]; boundaries?: CompiledSurfaceMemberAnchor[]; features?: CompiledSurfaceMemberAnchor[]; explicit?: CompiledSurfaceMemberAnchor[]; }`
|
|
449
|
-
|
|
450
|
-
`MemberMesh`: `{ vertices: Vec3[], triangles: Array<[ number, number, number ]> }`
|
|
451
|
-
|
|
452
|
-
**`SurfaceDiagnostic`**
|
|
453
|
-
- `code?: SurfaceDiagnosticCode` — Stable machine-readable repair hook. Messages may change; codes should not.
|
|
454
|
-
- Also: `category: "carrier" | "path" | "region" | "member" | "feature" | "join" | "compiler", level: "info" | "warning" | "error", message: string, subject?: string`
|
|
455
|
-
|
|
456
|
-
**`SurfaceMemberAnchorIR`**: `role: SurfaceMemberAnchorRole`, `kind: "member-end" | "member-center" | "member-landing" | "member-boundary" | "plate-edge" | "plate-center" | "plate-landing" | "feature-center" | "surface-coordinate"`, `name?: string`, `point: Vec3`, `normal?: Vec3`
|
|
457
|
-
|
|
458
|
-
`CompiledSurfaceMemberAnchor`: `{ frame?: SurfaceFrame }`
|
|
459
|
-
|
|
460
|
-
**`SurfaceFrame`**: `point: Vec3`, `normal: Vec3`, `tangentAlong: Vec3`, `tangentAcross: Vec3`, `matrix: Mat4`, `carrier: string`, `representation: SurfaceCarrierKind | string`, `coordinate: SurfaceCoordinate`
|
|
461
|
-
|
|
462
401
|
#### `SurfaceBody()` — Start a surface-member body builder for straps, inlays, guards, braces, cuffs, and similar physical members that live on a carrier surface.
|
|
463
402
|
|
|
464
403
|
```js
|
|
@@ -1034,18 +973,6 @@ with(...children: GroupInput[]): ShapeGroup
|
|
|
1034
973
|
integrate(...details: Shape[]): Shape
|
|
1035
974
|
```
|
|
1036
975
|
|
|
1037
|
-
#### `diagnostics()` — Return lowering representation, station names, rail names, and warnings.
|
|
1038
|
-
|
|
1039
|
-
```ts
|
|
1040
|
-
diagnostics(): ProductSkinDiagnostics
|
|
1041
|
-
```
|
|
1042
|
-
|
|
1043
|
-
**`ProductSkinDiagnostics`**: `representation: ProductSkinRepresentation`, `lowering: string[]`, `warnings: string[]`, `stationNames: string[]`, `railNames: string[]`
|
|
1044
|
-
|
|
1045
|
-
**`ProductSkinRepresentation`** — Reported lowering mode for ProductSkin and conformal feature diagnostics.
|
|
1046
|
-
|
|
1047
|
-
`"exact" | "sampled" | "mixed" | "fallback"`
|
|
1048
|
-
|
|
1049
976
|
#### `uv()` — Create a side/u/v surface-ref query on this skin.
|
|
1050
977
|
|
|
1051
978
|
```ts
|
|
@@ -1101,7 +1028,7 @@ stationAt(vOrAxis: number): { ... }
|
|
|
1101
1028
|
frame(query: ProductSkinRefQuery): ProductSurfaceFrame
|
|
1102
1029
|
```
|
|
1103
1030
|
|
|
1104
|
-
|
|
1031
|
+
`ProductSurfaceFrame`: `{ point: Vec3, normal: Vec3, tangentU: Vec3, tangentV: Vec3, matrix: Mat4, skin: string }`
|
|
1105
1032
|
|
|
1106
1033
|
### `ProductSurfaceRef`
|
|
1107
1034
|
|
|
@@ -1119,25 +1046,6 @@ frame(query: ProductSkinRefQuery): ProductSurfaceFrame
|
|
|
1119
1046
|
frame(overrides?: Partial<ProductSkinRefQuery>): ProductSurfaceFrame
|
|
1120
1047
|
```
|
|
1121
1048
|
|
|
1122
|
-
**`ProductSkinRefQuery`**
|
|
1123
|
-
|
|
1124
|
-
| Option | Type | Description |
|
|
1125
|
-
|--------|------|-------------|
|
|
1126
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1127
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1128
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1129
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1130
|
-
|
|
1131
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1132
|
-
|
|
1133
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1134
|
-
|
|
1135
|
-
**`ProductSurfaceFrame`**: `point: Vec3`, `normal: Vec3`, `tangentU: Vec3`, `tangentV: Vec3`, `matrix: Mat4`, `skin: string`, `representation: ProductSkinRepresentation`
|
|
1136
|
-
|
|
1137
|
-
**`ProductSkinRepresentation`** — Reported lowering mode for ProductSkin and conformal feature diagnostics.
|
|
1138
|
-
|
|
1139
|
-
`"exact" | "sampled" | "mixed" | "fallback"`
|
|
1140
|
-
|
|
1141
1049
|
#### `with()` — Return a copy of this ref with side/u/v/offset overrides.
|
|
1142
1050
|
|
|
1143
1051
|
```ts
|
|
@@ -1182,31 +1090,12 @@ ref(u?: number, v?: number, offset?: number): ProductSurfaceRef
|
|
|
1182
1090
|
uv(u?: number, v?: number, offset?: number): ProductSkinRefQuery
|
|
1183
1091
|
```
|
|
1184
1092
|
|
|
1185
|
-
**`ProductSkinRefQuery`**
|
|
1186
|
-
|
|
1187
|
-
| Option | Type | Description |
|
|
1188
|
-
|--------|------|-------------|
|
|
1189
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1190
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1191
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1192
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1193
|
-
|
|
1194
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1195
|
-
|
|
1196
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1197
|
-
|
|
1198
1093
|
#### `frame()` — Resolve a point/frame on this surface using the builder's side.
|
|
1199
1094
|
|
|
1200
1095
|
```ts
|
|
1201
1096
|
frame(query?: Partial<ProductSkinRefQuery>): ProductSurfaceFrame
|
|
1202
1097
|
```
|
|
1203
1098
|
|
|
1204
|
-
**`ProductSurfaceFrame`**: `point: Vec3`, `normal: Vec3`, `tangentU: Vec3`, `tangentV: Vec3`, `matrix: Mat4`, `skin: string`, `representation: ProductSkinRepresentation`
|
|
1205
|
-
|
|
1206
|
-
**`ProductSkinRepresentation`** — Reported lowering mode for ProductSkin and conformal feature diagnostics.
|
|
1207
|
-
|
|
1208
|
-
`"exact" | "sampled" | "mixed" | "fallback"`
|
|
1209
|
-
|
|
1210
1099
|
#### `ribbon()` — Start a conformal ribbon on this skin side.
|
|
1211
1100
|
|
|
1212
1101
|
Path points use side-local `u`/`v` coordinates; this builder supplies the side. The returned ProductRibbonBuilder is already bound to the source skin and can be further configured before build(). Use `widthSamples` >= 3 when the ribbon must visibly wrap over curved product sections instead of behaving like a flat strip.
|
|
@@ -1284,11 +1173,7 @@ stations(stations: Array<ProductStationBuilder | ProductStationSpec>): this
|
|
|
1284
1173
|
|
|
1285
1174
|
`ProductStationProfile`: `{ sketch: Sketch, width: number, depth: number, kind: ProductProfileKind, radius?: number, exponent?: number }`
|
|
1286
1175
|
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
`"oval" | "roundedRect" | "circle" | "superEllipse" | "custom"`
|
|
1290
|
-
|
|
1291
|
-
#### `rails()` — Attach guide rails as ProductSkin IR metadata and diagnostics.
|
|
1176
|
+
#### `rails()` — Attach named guide rails for product-skin construction and downstream surface references.
|
|
1292
1177
|
|
|
1293
1178
|
```ts
|
|
1294
1179
|
rails(rails: Record<string, ProductRailSpec>): this
|
|
@@ -1306,19 +1191,6 @@ rails(rails: Record<string, ProductRailSpec>): this
|
|
|
1306
1191
|
ref(name: string, query: ProductSkinRefQuery): this
|
|
1307
1192
|
```
|
|
1308
1193
|
|
|
1309
|
-
**`ProductSkinRefQuery`**
|
|
1310
|
-
|
|
1311
|
-
| Option | Type | Description |
|
|
1312
|
-
|--------|------|-------------|
|
|
1313
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1314
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1315
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1316
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1317
|
-
|
|
1318
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1319
|
-
|
|
1320
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1321
|
-
|
|
1322
1194
|
#### `refs()` — Publish multiple named semantic surface refs on the skin.
|
|
1323
1195
|
|
|
1324
1196
|
```ts
|
|
@@ -1337,27 +1209,6 @@ uv(side: ProductSkinSide, u?: number, v?: number): ProductSkinRefQuery
|
|
|
1337
1209
|
material(material: ProductMaterial): this
|
|
1338
1210
|
```
|
|
1339
1211
|
|
|
1340
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1341
|
-
|
|
1342
|
-
**`ShapeMaterialProps`**
|
|
1343
|
-
|
|
1344
|
-
| Option | Type | Description |
|
|
1345
|
-
|--------|------|-------------|
|
|
1346
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
1347
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
1348
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
1349
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
1350
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
1351
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
1352
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
1353
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
1354
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
1355
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
1356
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
1357
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
1358
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
1359
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
1360
|
-
|
|
1361
1212
|
#### `color()` — Apply a simple color override to the lowered skin.
|
|
1362
1213
|
|
|
1363
1214
|
```ts
|
|
@@ -1370,7 +1221,7 @@ color(color: string): this
|
|
|
1370
1221
|
edgeLength(value: number): this
|
|
1371
1222
|
```
|
|
1372
1223
|
|
|
1373
|
-
#### `wall()` —
|
|
1224
|
+
#### `wall()` — Record intended wall thickness for product design metadata. Use explicit shelling when the model needs real inner-wall geometry.
|
|
1374
1225
|
|
|
1375
1226
|
```ts
|
|
1376
1227
|
wall(thickness: number): this
|
|
@@ -1448,7 +1299,7 @@ circle(diameter: number, options?: { segments?: number; }): this
|
|
|
1448
1299
|
custom(sketch: Sketch, width: number, depth: number): this
|
|
1449
1300
|
```
|
|
1450
1301
|
|
|
1451
|
-
#### `crown()` —
|
|
1302
|
+
#### `crown()` — Set the station crown amount for soft product-section intent.
|
|
1452
1303
|
|
|
1453
1304
|
```ts
|
|
1454
1305
|
crown(amount: number): this
|
|
@@ -1460,14 +1311,6 @@ crown(amount: number): this
|
|
|
1460
1311
|
toSpec(): ProductStationSpec
|
|
1461
1312
|
```
|
|
1462
1313
|
|
|
1463
|
-
`ProductStationSpec`: `{ name: string, center: Vec3, profile: ProductStationProfile, crown?: number }`
|
|
1464
|
-
|
|
1465
|
-
`ProductStationProfile`: `{ sketch: Sketch, width: number, depth: number, kind: ProductProfileKind, radius?: number, exponent?: number }`
|
|
1466
|
-
|
|
1467
|
-
**`ProductProfileKind`**
|
|
1468
|
-
|
|
1469
|
-
`"oval" | "roundedRect" | "circle" | "superEllipse" | "custom"`
|
|
1470
|
-
|
|
1471
1314
|
### `ProductPanelBuilder`
|
|
1472
1315
|
|
|
1473
1316
|
**Properties:**
|
|
@@ -1508,27 +1351,6 @@ thickness(thickness: number): this
|
|
|
1508
1351
|
material(material: ProductMaterial): this
|
|
1509
1352
|
```
|
|
1510
1353
|
|
|
1511
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1512
|
-
|
|
1513
|
-
**`ShapeMaterialProps`**
|
|
1514
|
-
|
|
1515
|
-
| Option | Type | Description |
|
|
1516
|
-
|--------|------|-------------|
|
|
1517
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
1518
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
1519
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
1520
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
1521
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
1522
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
1523
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
1524
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
1525
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
1526
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
1527
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
1528
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
1529
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
1530
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
1531
|
-
|
|
1532
1354
|
#### `color()` — Apply a simple color override to the panel.
|
|
1533
1355
|
|
|
1534
1356
|
```ts
|
|
@@ -1551,23 +1373,9 @@ attachTo(ref: ProductRefInput, options?: ProductPanelAttachOptions): Shape
|
|
|
1551
1373
|
|
|
1552
1374
|
`ProductSurfaceRef`
|
|
1553
1375
|
|
|
1554
|
-
`ProductAttachOptions`: `{ offset?: number, inset?: number }`
|
|
1555
1376
|
|
|
1556
1377
|
`ProductPanelAttachOptions`: `{ at?: Partial<ProductSkinRefQuery>, thickness?: number, material?: ProductMaterial, color?: string }`
|
|
1557
1378
|
|
|
1558
|
-
**`ProductSkinRefQuery`**
|
|
1559
|
-
|
|
1560
|
-
| Option | Type | Description |
|
|
1561
|
-
|--------|------|-------------|
|
|
1562
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1563
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1564
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1565
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1566
|
-
|
|
1567
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1568
|
-
|
|
1569
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1570
|
-
|
|
1571
1379
|
### `ProductRibbonBuilder`
|
|
1572
1380
|
|
|
1573
1381
|
Builder for thin trim, label, grip, and split-line features that bend with a ProductSkin surface.
|
|
@@ -1592,53 +1400,6 @@ on(skin: ProductSkin, points: ProductRibbonPathPoint[], options?: ProductRibbonB
|
|
|
1592
1400
|
|
|
1593
1401
|
`ProductSkinRefQuery | ProductSurfaceRef`
|
|
1594
1402
|
|
|
1595
|
-
**`ProductSkinRefQuery`**
|
|
1596
|
-
|
|
1597
|
-
| Option | Type | Description |
|
|
1598
|
-
|--------|------|-------------|
|
|
1599
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1600
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1601
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1602
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1603
|
-
|
|
1604
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1605
|
-
|
|
1606
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1607
|
-
|
|
1608
|
-
**`ProductRibbonBuildOptions`** — Options shared by Product.ribbon() builders and Product.surface(...).ribbon(...).
|
|
1609
|
-
|
|
1610
|
-
| Option | Type | Description |
|
|
1611
|
-
|--------|------|-------------|
|
|
1612
|
-
| `width?` | `number` | Width across the surface in millimeters. |
|
|
1613
|
-
| `thickness?` | `number` | Solid thickness outward from the source surface in millimeters. |
|
|
1614
|
-
| `offset?` | `number` | Positive clearance between the source surface and the ribbon's inner face. |
|
|
1615
|
-
| `samples?` | `number` | Samples along the ribbon path. Higher values bend more smoothly. |
|
|
1616
|
-
| `widthSamples?` | `number` | Samples across the ribbon width. Use 3+ to visibly wrap over curved cross-sections. |
|
|
1617
|
-
| `resolution?` | `number` | Tessellation resolution passed to the lowered NURBS surface. |
|
|
1618
|
-
| `material?` | `ProductMaterial` | Apply a product material preset to the ribbon. |
|
|
1619
|
-
| `color?` | `string` | Apply a simple color override. |
|
|
1620
|
-
|
|
1621
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1622
|
-
|
|
1623
|
-
**`ShapeMaterialProps`**
|
|
1624
|
-
|
|
1625
|
-
| Option | Type | Description |
|
|
1626
|
-
|--------|------|-------------|
|
|
1627
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
1628
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
1629
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
1630
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
1631
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
1632
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
1633
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
1634
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
1635
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
1636
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
1637
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
1638
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
1639
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
1640
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
1641
|
-
|
|
1642
1403
|
#### `fromRefs()` — Follow explicit surface refs.
|
|
1643
1404
|
|
|
1644
1405
|
Useful for named refs or paths assembled elsewhere. The builder resolves each ref frame and interpolates between those frames; use on(skin, points) when you need full skin-side sampling between sparse control points.
|
|
@@ -1701,48 +1462,6 @@ color(color: string): this
|
|
|
1701
1462
|
build(options?: ProductRibbonBuildOptions): Shape
|
|
1702
1463
|
```
|
|
1703
1464
|
|
|
1704
|
-
#### `buildWithDiagnostics()` — Build a conformal ribbon and return surface-feature diagnostics.
|
|
1705
|
-
|
|
1706
|
-
Use this while validating API usage or model fidelity; diagnostics report sampling counts, side-span clamping, lowering mode, and warnings that should be visible in reviews.
|
|
1707
|
-
|
|
1708
|
-
```ts
|
|
1709
|
-
buildWithDiagnostics(options?: ProductRibbonBuildOptions): ProductRibbonResult
|
|
1710
|
-
```
|
|
1711
|
-
|
|
1712
|
-
**`ProductRibbonResult`** — Shape plus diagnostics returned by ProductRibbonBuilder.buildWithDiagnostics().
|
|
1713
|
-
- `shape: Shape` — Lowered conformal ribbon shape.
|
|
1714
|
-
- `diagnostics: ProductRibbonDiagnostics` — Sampling and lowering diagnostics for the returned shape.
|
|
1715
|
-
|
|
1716
|
-
**`ProductRibbonDiagnostics`** — Diagnostics describing how a conformal ribbon was sampled and lowered.
|
|
1717
|
-
|
|
1718
|
-
| Option | Type | Description |
|
|
1719
|
-
|--------|------|-------------|
|
|
1720
|
-
| `name` | `string` | Ribbon shape name. |
|
|
1721
|
-
| `skin?` | `string` | Source skin name when the ribbon follows a ProductSkin directly. |
|
|
1722
|
-
| `side?` | `ProductSkinSide` | Source skin side when all path points are on one semantic side. |
|
|
1723
|
-
| `pathPointCount` | `number` | Number of control path points supplied before interpolation. |
|
|
1724
|
-
| `width` | `number` | Final ribbon width in millimeters. |
|
|
1725
|
-
| `thickness` | `number` | Final ribbon solid thickness in millimeters. |
|
|
1726
|
-
| `offset` | `number` | Final normal offset from the source surface in millimeters. |
|
|
1727
|
-
| `samples` | `number` | Final sample count along the ribbon path. |
|
|
1728
|
-
| `widthSamples` | `number` | Final sample count across the ribbon width. |
|
|
1729
|
-
| `resolution` | `number` | NURBS tessellation resolution used for the lowered surface. |
|
|
1730
|
-
| `lowering` | `"nurbsSurface"` | Lowering primitive used for the ribbon shape. |
|
|
1731
|
-
| `expectedFidelity` | `ProductSkinRepresentation` | Expected fidelity inherited from the source skin/ref sampling mode. |
|
|
1732
|
-
| `clampedUCount` | `number` | Number of generated width samples clamped to the valid side span. |
|
|
1733
|
-
| `maxUClampDistance` | `number` | Largest absolute u-distance lost to side-span clamping. |
|
|
1734
|
-
| `warnings` | `string[]` | Non-fatal sampling and lowering warnings. |
|
|
1735
|
-
|
|
1736
|
-
**`ProductSkinRepresentation`** — Reported lowering mode for ProductSkin and conformal feature diagnostics.
|
|
1737
|
-
|
|
1738
|
-
`"exact" | "sampled" | "mixed" | "fallback"`
|
|
1739
|
-
|
|
1740
|
-
#### `diagnostics()` — Return diagnostics from the most recent build, if this builder has been built.
|
|
1741
|
-
|
|
1742
|
-
```ts
|
|
1743
|
-
diagnostics(): ProductRibbonDiagnostics | undefined
|
|
1744
|
-
```
|
|
1745
|
-
|
|
1746
1465
|
### `ProductSpoutBuilder`
|
|
1747
1466
|
|
|
1748
1467
|
**Properties:**
|
|
@@ -1765,14 +1484,6 @@ from(ref: ProductSurfaceRef): this
|
|
|
1765
1484
|
sections(sections: Array<Sketch | ProductStationBuilder | ProductStationSpec>): this
|
|
1766
1485
|
```
|
|
1767
1486
|
|
|
1768
|
-
`ProductStationSpec`: `{ name: string, center: Vec3, profile: ProductStationProfile, crown?: number }`
|
|
1769
|
-
|
|
1770
|
-
`ProductStationProfile`: `{ sketch: Sketch, width: number, depth: number, kind: ProductProfileKind, radius?: number, exponent?: number }`
|
|
1771
|
-
|
|
1772
|
-
**`ProductProfileKind`**
|
|
1773
|
-
|
|
1774
|
-
`"oval" | "roundedRect" | "circle" | "superEllipse" | "custom"`
|
|
1775
|
-
|
|
1776
1487
|
#### `projection()` — Set the projection length along the source ref normal.
|
|
1777
1488
|
|
|
1778
1489
|
```ts
|
|
@@ -1791,27 +1502,6 @@ edgeLength(value: number): this
|
|
|
1791
1502
|
material(material: ProductMaterial): this
|
|
1792
1503
|
```
|
|
1793
1504
|
|
|
1794
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1795
|
-
|
|
1796
|
-
**`ShapeMaterialProps`**
|
|
1797
|
-
|
|
1798
|
-
| Option | Type | Description |
|
|
1799
|
-
|--------|------|-------------|
|
|
1800
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
1801
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
1802
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
1803
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
1804
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
1805
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
1806
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
1807
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
1808
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
1809
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
1810
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
1811
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
1812
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
1813
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
1814
|
-
|
|
1815
1505
|
#### `color()` — Apply a simple color override to the spout.
|
|
1816
1506
|
|
|
1817
1507
|
```ts
|
|
@@ -1830,8 +1520,6 @@ build(): Shape
|
|
|
1830
1520
|
attach(options?: ProductAttachOptions): Shape
|
|
1831
1521
|
```
|
|
1832
1522
|
|
|
1833
|
-
`ProductAttachOptions`: `{ offset?: number, inset?: number }`
|
|
1834
|
-
|
|
1835
1523
|
### `ProductHandleBuilder`
|
|
1836
1524
|
|
|
1837
1525
|
**Properties:**
|
|
@@ -1854,12 +1542,6 @@ between(upper: ProductSurfaceRef, lower: Vec3): this
|
|
|
1854
1542
|
spine(points: Vec3[] | ProductRailSpec): this
|
|
1855
1543
|
```
|
|
1856
1544
|
|
|
1857
|
-
`ProductRailSpec`: `{ kind: ProductRailKind, points: Vec3[], degree?: number, name?: string }`
|
|
1858
|
-
|
|
1859
|
-
**`ProductRailKind`**
|
|
1860
|
-
|
|
1861
|
-
`"bezier" | "nurbs" | "polyline"`
|
|
1862
|
-
|
|
1863
1545
|
#### `grip()` — Set the grip cross-section profile.
|
|
1864
1546
|
|
|
1865
1547
|
```ts
|
|
@@ -1872,27 +1554,6 @@ grip(profile: Sketch): this
|
|
|
1872
1554
|
material(material: ProductMaterial): this
|
|
1873
1555
|
```
|
|
1874
1556
|
|
|
1875
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1876
|
-
|
|
1877
|
-
**`ShapeMaterialProps`**
|
|
1878
|
-
|
|
1879
|
-
| Option | Type | Description |
|
|
1880
|
-
|--------|------|-------------|
|
|
1881
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
1882
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
1883
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
1884
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
1885
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
1886
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
1887
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
1888
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
1889
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
1890
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
1891
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
1892
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
1893
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
1894
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
1895
|
-
|
|
1896
1557
|
#### `padMaterial()` — Apply a product material preset to handle landing pads.
|
|
1897
1558
|
|
|
1898
1559
|
```ts
|
|
@@ -1941,181 +1602,6 @@ toShape(): Shape
|
|
|
1941
1602
|
toGroup(): ShapeGroup
|
|
1942
1603
|
```
|
|
1943
1604
|
|
|
1944
|
-
### `ProductRibbonBuilder`
|
|
1945
|
-
|
|
1946
|
-
Builder for thin trim, label, grip, and split-line features that bend with a ProductSkin surface.
|
|
1947
|
-
|
|
1948
|
-
**Properties:**
|
|
1949
|
-
|
|
1950
|
-
| Property | Type | Description |
|
|
1951
|
-
|----------|------|-------------|
|
|
1952
|
-
| `name` | `string` | — |
|
|
1953
|
-
|
|
1954
|
-
**Methods:**
|
|
1955
|
-
|
|
1956
|
-
#### `on()` — Follow a ProductSkin with side/u/v path queries or refs.
|
|
1957
|
-
|
|
1958
|
-
This is the highest-fidelity mode because every interpolated sample is resolved through ProductSkin.frame(), so the ribbon bends along the selected side as station width/depth changes. All query path points must stay on one side; split side transitions into separate ribbons.
|
|
1959
|
-
|
|
1960
|
-
```ts
|
|
1961
|
-
on(skin: ProductSkin, points: ProductRibbonPathPoint[], options?: ProductRibbonBuildOptions): this
|
|
1962
|
-
```
|
|
1963
|
-
|
|
1964
|
-
**`ProductRibbonPathPoint`** — Path point for Product.ribbon().on(...): either a side/u/v query or a resolved surface ref.
|
|
1965
|
-
|
|
1966
|
-
`ProductSkinRefQuery | ProductSurfaceRef`
|
|
1967
|
-
|
|
1968
|
-
**`ProductSkinRefQuery`**
|
|
1969
|
-
|
|
1970
|
-
| Option | Type | Description |
|
|
1971
|
-
|--------|------|-------------|
|
|
1972
|
-
| `side` | `ProductSkinSide` | Side of the product skin. `front` is the minimum axis cap, `rear`/`back` is the maximum axis cap. |
|
|
1973
|
-
| `u?` | `number` | Across-side parameter for side refs. Defaults to 0.5. |
|
|
1974
|
-
| `v?` | `number` | Along-axis parameter, 0 at the first cap and 1 at the rear/back cap. Defaults to 0.5. |
|
|
1975
|
-
| `offset?` | `number` | Positive distance away from the surface along the resolved normal. |
|
|
1976
|
-
|
|
1977
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
1978
|
-
|
|
1979
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
1980
|
-
|
|
1981
|
-
**`ProductRibbonBuildOptions`** — Options shared by Product.ribbon() builders and Product.surface(...).ribbon(...).
|
|
1982
|
-
|
|
1983
|
-
| Option | Type | Description |
|
|
1984
|
-
|--------|------|-------------|
|
|
1985
|
-
| `width?` | `number` | Width across the surface in millimeters. |
|
|
1986
|
-
| `thickness?` | `number` | Solid thickness outward from the source surface in millimeters. |
|
|
1987
|
-
| `offset?` | `number` | Positive clearance between the source surface and the ribbon's inner face. |
|
|
1988
|
-
| `samples?` | `number` | Samples along the ribbon path. Higher values bend more smoothly. |
|
|
1989
|
-
| `widthSamples?` | `number` | Samples across the ribbon width. Use 3+ to visibly wrap over curved cross-sections. |
|
|
1990
|
-
| `resolution?` | `number` | Tessellation resolution passed to the lowered NURBS surface. |
|
|
1991
|
-
| `material?` | `ProductMaterial` | Apply a product material preset to the ribbon. |
|
|
1992
|
-
| `color?` | `string` | Apply a simple color override. |
|
|
1993
|
-
|
|
1994
|
-
`ProductMaterial`: `{ color?: string, material?: ShapeMaterialProps }`
|
|
1995
|
-
|
|
1996
|
-
**`ShapeMaterialProps`**
|
|
1997
|
-
|
|
1998
|
-
| Option | Type | Description |
|
|
1999
|
-
|--------|------|-------------|
|
|
2000
|
-
| `metalness?` | `number` | Metalness factor (0 = dielectric, 1 = metal). Default: 0.05 |
|
|
2001
|
-
| `roughness?` | `number` | Roughness factor (0 = mirror, 1 = fully diffuse). Default: 0.35 |
|
|
2002
|
-
| `emissive?` | `string` | Emissive glow color (hex string, e.g. "#ff6b35"). |
|
|
2003
|
-
| `emissiveIntensity?` | `number` | Emissive intensity multiplier. Default: 1 |
|
|
2004
|
-
| `opacity?` | `number` | Opacity (0 = fully transparent, 1 = fully opaque). Default: 1 |
|
|
2005
|
-
| `wireframe?` | `boolean` | Render as wireframe. Default: false |
|
|
2006
|
-
| `clearcoat?` | `number` | Clearcoat intensity (0–1). Default: 0.1 |
|
|
2007
|
-
| `clearcoatRoughness?` | `number` | Clearcoat roughness (0–1). Default: 0.4 |
|
|
2008
|
-
| `transmission?` | `number` | Glass/translucency transmission factor (0–1). Renderer support depends on target. |
|
|
2009
|
-
| `ior?` | `number` | Index of refraction for transmissive materials. Typical glass is ~1.45. |
|
|
2010
|
-
| `thickness?` | `number` | Approximate transmissive volume thickness in model units. |
|
|
2011
|
-
| `specularIntensity?` | `number` | Specular highlight intensity (0–1). |
|
|
2012
|
-
| `specularColor?` | `string` | Specular highlight tint. |
|
|
2013
|
-
| `reflectivity?` | `number` | Reflection strength for supported renderers (0–1). |
|
|
2014
|
-
|
|
2015
|
-
#### `fromRefs()` — Follow explicit surface refs.
|
|
2016
|
-
|
|
2017
|
-
Useful for named refs or paths assembled elsewhere. The builder resolves each ref frame and interpolates between those frames; use on(skin, points) when you need full skin-side sampling between sparse control points.
|
|
2018
|
-
|
|
2019
|
-
```ts
|
|
2020
|
-
fromRefs(points: ProductSurfaceRef[], options?: ProductRibbonBuildOptions): this
|
|
2021
|
-
```
|
|
2022
|
-
|
|
2023
|
-
#### `width()` — Set ribbon width in millimeters.
|
|
2024
|
-
|
|
2025
|
-
```ts
|
|
2026
|
-
width(width: number): this
|
|
2027
|
-
```
|
|
2028
|
-
|
|
2029
|
-
#### `thickness()` — Set solid thickness outward from the source surface in millimeters.
|
|
2030
|
-
|
|
2031
|
-
```ts
|
|
2032
|
-
thickness(thickness: number): this
|
|
2033
|
-
```
|
|
2034
|
-
|
|
2035
|
-
#### `offset()` — Set positive clearance between the source surface and the ribbon's inner face.
|
|
2036
|
-
|
|
2037
|
-
```ts
|
|
2038
|
-
offset(offset: number): this
|
|
2039
|
-
```
|
|
2040
|
-
|
|
2041
|
-
#### `samples()` — Set samples along the path.
|
|
2042
|
-
|
|
2043
|
-
```ts
|
|
2044
|
-
samples(samples: number): this
|
|
2045
|
-
```
|
|
2046
|
-
|
|
2047
|
-
#### `widthSamples()` — Set samples across the width. Use 3+ to bend over curved cross-sections.
|
|
2048
|
-
|
|
2049
|
-
```ts
|
|
2050
|
-
widthSamples(samples: number): this
|
|
2051
|
-
```
|
|
2052
|
-
|
|
2053
|
-
#### `resolution()` — Set NURBS tessellation resolution.
|
|
2054
|
-
|
|
2055
|
-
```ts
|
|
2056
|
-
resolution(resolution: number): this
|
|
2057
|
-
```
|
|
2058
|
-
|
|
2059
|
-
#### `material()` — Apply a product material preset.
|
|
2060
|
-
|
|
2061
|
-
```ts
|
|
2062
|
-
material(material: ProductMaterial): this
|
|
2063
|
-
```
|
|
2064
|
-
|
|
2065
|
-
#### `color()` — Apply a simple color override.
|
|
2066
|
-
|
|
2067
|
-
```ts
|
|
2068
|
-
color(color: string): this
|
|
2069
|
-
```
|
|
2070
|
-
|
|
2071
|
-
#### `build()` — Build a conformal ribbon as a thin NURBS surface solid.
|
|
2072
|
-
|
|
2073
|
-
```ts
|
|
2074
|
-
build(options?: ProductRibbonBuildOptions): Shape
|
|
2075
|
-
```
|
|
2076
|
-
|
|
2077
|
-
#### `buildWithDiagnostics()` — Build a conformal ribbon and return surface-feature diagnostics.
|
|
2078
|
-
|
|
2079
|
-
Use this while validating API usage or model fidelity; diagnostics report sampling counts, side-span clamping, lowering mode, and warnings that should be visible in reviews.
|
|
2080
|
-
|
|
2081
|
-
```ts
|
|
2082
|
-
buildWithDiagnostics(options?: ProductRibbonBuildOptions): ProductRibbonResult
|
|
2083
|
-
```
|
|
2084
|
-
|
|
2085
|
-
**`ProductRibbonResult`** — Shape plus diagnostics returned by ProductRibbonBuilder.buildWithDiagnostics().
|
|
2086
|
-
- `shape: Shape` — Lowered conformal ribbon shape.
|
|
2087
|
-
- `diagnostics: ProductRibbonDiagnostics` — Sampling and lowering diagnostics for the returned shape.
|
|
2088
|
-
|
|
2089
|
-
**`ProductRibbonDiagnostics`** — Diagnostics describing how a conformal ribbon was sampled and lowered.
|
|
2090
|
-
|
|
2091
|
-
| Option | Type | Description |
|
|
2092
|
-
|--------|------|-------------|
|
|
2093
|
-
| `name` | `string` | Ribbon shape name. |
|
|
2094
|
-
| `skin?` | `string` | Source skin name when the ribbon follows a ProductSkin directly. |
|
|
2095
|
-
| `side?` | `ProductSkinSide` | Source skin side when all path points are on one semantic side. |
|
|
2096
|
-
| `pathPointCount` | `number` | Number of control path points supplied before interpolation. |
|
|
2097
|
-
| `width` | `number` | Final ribbon width in millimeters. |
|
|
2098
|
-
| `thickness` | `number` | Final ribbon solid thickness in millimeters. |
|
|
2099
|
-
| `offset` | `number` | Final normal offset from the source surface in millimeters. |
|
|
2100
|
-
| `samples` | `number` | Final sample count along the ribbon path. |
|
|
2101
|
-
| `widthSamples` | `number` | Final sample count across the ribbon width. |
|
|
2102
|
-
| `resolution` | `number` | NURBS tessellation resolution used for the lowered surface. |
|
|
2103
|
-
| `lowering` | `"nurbsSurface"` | Lowering primitive used for the ribbon shape. |
|
|
2104
|
-
| `expectedFidelity` | `ProductSkinRepresentation` | Expected fidelity inherited from the source skin/ref sampling mode. |
|
|
2105
|
-
| `clampedUCount` | `number` | Number of generated width samples clamped to the valid side span. |
|
|
2106
|
-
| `maxUClampDistance` | `number` | Largest absolute u-distance lost to side-span clamping. |
|
|
2107
|
-
| `warnings` | `string[]` | Non-fatal sampling and lowering warnings. |
|
|
2108
|
-
|
|
2109
|
-
**`ProductSkinRepresentation`** — Reported lowering mode for ProductSkin and conformal feature diagnostics.
|
|
2110
|
-
|
|
2111
|
-
`"exact" | "sampled" | "mixed" | "fallback"`
|
|
2112
|
-
|
|
2113
|
-
#### `diagnostics()` — Return diagnostics from the most recent build, if this builder has been built.
|
|
2114
|
-
|
|
2115
|
-
```ts
|
|
2116
|
-
diagnostics(): ProductRibbonDiagnostics | undefined
|
|
2117
|
-
```
|
|
2118
|
-
|
|
2119
1605
|
### `CylinderCarrier`
|
|
2120
1606
|
|
|
2121
1607
|
**Properties:**
|
|
@@ -2247,12 +1733,6 @@ bounds(): SurfaceBounds
|
|
|
2247
1733
|
offset(distance: number): CylinderCarrier
|
|
2248
1734
|
```
|
|
2249
1735
|
|
|
2250
|
-
#### `diagnostics()`
|
|
2251
|
-
|
|
2252
|
-
```ts
|
|
2253
|
-
diagnostics(): SurfaceDiagnostic[]
|
|
2254
|
-
```
|
|
2255
|
-
|
|
2256
1736
|
#### `mirrorCoordinate()`
|
|
2257
1737
|
|
|
2258
1738
|
```ts
|
|
@@ -2372,12 +1852,6 @@ bounds(): SurfaceBounds
|
|
|
2372
1852
|
offset(distance: number): PlaneCarrier
|
|
2373
1853
|
```
|
|
2374
1854
|
|
|
2375
|
-
#### `diagnostics()`
|
|
2376
|
-
|
|
2377
|
-
```ts
|
|
2378
|
-
diagnostics(): SurfaceDiagnostic[]
|
|
2379
|
-
```
|
|
2380
|
-
|
|
2381
1855
|
#### `mirrorCoordinate()`
|
|
2382
1856
|
|
|
2383
1857
|
```ts
|
|
@@ -2402,10 +1876,6 @@ mirrorCoordinate(coordinate: PlaneSurfaceCoordinate): PlaneSurfaceCoordinate
|
|
|
2402
1876
|
surface(side: ProductSkinSide): ProductSkinCarrier
|
|
2403
1877
|
```
|
|
2404
1878
|
|
|
2405
|
-
**`ProductSkinSide`** — Semantic side of a ProductSkin. `back` is accepted as an alias for `rear`.
|
|
2406
|
-
|
|
2407
|
-
`"left" | "right" | "top" | "bottom" | "front" | "rear" | "back"`
|
|
2408
|
-
|
|
2409
1879
|
#### [`path()`](/docs/sketch#path)
|
|
2410
1880
|
|
|
2411
1881
|
```ts
|
|
@@ -2494,16 +1964,6 @@ bounds(): SurfaceBounds
|
|
|
2494
1964
|
offset(distance: number): ProductSkinCarrier
|
|
2495
1965
|
```
|
|
2496
1966
|
|
|
2497
|
-
#### `diagnostics()`
|
|
2498
|
-
|
|
2499
|
-
```ts
|
|
2500
|
-
diagnostics(): SurfaceDiagnostic[]
|
|
2501
|
-
```
|
|
2502
|
-
|
|
2503
|
-
**`SurfaceDiagnostic`**
|
|
2504
|
-
- `code?: SurfaceDiagnosticCode` — Stable machine-readable repair hook. Messages may change; codes should not.
|
|
2505
|
-
- Also: `category: "carrier" | "path" | "region" | "member" | "feature" | "join" | "compiler", level: "info" | "warning" | "error", message: string, subject?: string`
|
|
2506
|
-
|
|
2507
1967
|
#### `mirrorCoordinate()`
|
|
2508
1968
|
|
|
2509
1969
|
```ts
|
|
@@ -2646,12 +2106,6 @@ withHole(name: string, input: SurfaceBandHoleInput): SurfaceBand<C>
|
|
|
2646
2106
|
holes(): SurfaceBandHoleRegion[]
|
|
2647
2107
|
```
|
|
2648
2108
|
|
|
2649
|
-
#### `diagnostics()`
|
|
2650
|
-
|
|
2651
|
-
```ts
|
|
2652
|
-
diagnostics(samples?: number): SurfaceDiagnostic[]
|
|
2653
|
-
```
|
|
2654
|
-
|
|
2655
2109
|
### `SurfaceBodyBuilder`
|
|
2656
2110
|
|
|
2657
2111
|
**Properties:**
|
|
@@ -2692,18 +2146,6 @@ autoJoinAtSharedAnchors(): this
|
|
|
2692
2146
|
build(): Shape | ShapeGroup
|
|
2693
2147
|
```
|
|
2694
2148
|
|
|
2695
|
-
#### `buildWithDiagnostics()`
|
|
2696
|
-
|
|
2697
|
-
```ts
|
|
2698
|
-
buildWithDiagnostics(): SurfaceBodyBuildResult
|
|
2699
|
-
```
|
|
2700
|
-
|
|
2701
|
-
#### `buildDebug()`
|
|
2702
|
-
|
|
2703
|
-
```ts
|
|
2704
|
-
buildDebug(): SurfaceBodyBuildResult
|
|
2705
|
-
```
|
|
2706
|
-
|
|
2707
2149
|
### `SurfaceMemberBuilder`
|
|
2708
2150
|
|
|
2709
2151
|
#### `plate()`
|
|
@@ -2766,7 +2208,7 @@ cutout(name: string, feature: MemberFeature | RoundedSlotBuilder): this
|
|
|
2766
2208
|
counterbore(name: string, feature: MemberFeature | CounterboreBuilder): this
|
|
2767
2209
|
```
|
|
2768
2210
|
|
|
2769
|
-
#### `anchorAt()` — Add a named anchor at a carrier surface coordinate for
|
|
2211
|
+
#### `anchorAt()` — Add a named anchor at a carrier surface coordinate for explicit member joins.
|
|
2770
2212
|
|
|
2771
2213
|
```ts
|
|
2772
2214
|
anchorAt(name: string, coordinate: C | SurfaceAnchor<C>): this
|
|
@@ -2814,18 +2256,6 @@ autoJoinAtSharedAnchors(): SurfaceBodyBuilder
|
|
|
2814
2256
|
build(): Shape | ShapeGroup
|
|
2815
2257
|
```
|
|
2816
2258
|
|
|
2817
|
-
#### `buildWithDiagnostics()`
|
|
2818
|
-
|
|
2819
|
-
```ts
|
|
2820
|
-
buildWithDiagnostics(): SurfaceBodyBuildResult
|
|
2821
|
-
```
|
|
2822
|
-
|
|
2823
|
-
#### `buildDebug()`
|
|
2824
|
-
|
|
2825
|
-
```ts
|
|
2826
|
-
buildDebug(): SurfaceBodyBuildResult
|
|
2827
|
-
```
|
|
2828
|
-
|
|
2829
2259
|
### `SurfaceJoinBuilder`
|
|
2830
2260
|
|
|
2831
2261
|
#### `betweenAnchors()` — Select named anchors on the source and target members before lowering this join.
|
|
@@ -2908,7 +2338,6 @@ toFeature(name?: string): MemberFeature
|
|
|
2908
2338
|
|
|
2909
2339
|
- `Edge(options: BlendEdgeOptions): Shape`
|
|
2910
2340
|
- `Surface(options: BlendSurfaceOptions): Shape`
|
|
2911
|
-
- `CornerY(options: BlendCornerYOptions): Shape` — Current implementation uses continuity-controlled edge fillets on solid edges. It does not yet provide a dedicated open-sheet or multi-patch Y-corner solver. Follow progress: https://github.com/KoStard/forgecad-private/issues/162
|
|
2912
2341
|
|
|
2913
2342
|
### `Analysis`
|
|
2914
2343
|
|
|
@@ -2947,15 +2376,12 @@ toFeature(name?: string): MemberFeature
|
|
|
2947
2376
|
- `cylinder(name: string): CylinderCarrier` — Create an analytic cylinder carrier for bottles, limbs, tubes, guards, and cuffs.
|
|
2948
2377
|
- `plane(name: string): PlaneCarrier` — Create an analytic plane carrier for plates and local flat construction surfaces.
|
|
2949
2378
|
- `productSkin(skin: ProductSkin): ProductSkinCarrier` — Adapt an existing ProductSkin into the general surface-member carrier protocol.
|
|
2950
|
-
- `mesh(name: string): never` — Reserved stub for future parameterized mesh carriers; arbitrary mesh parameterization is not implemented yet.
|
|
2951
|
-
- `scan(name: string): never` — Reserved stub for future scan/body-fit carriers; arbitrary scan parameterization is not implemented yet.
|
|
2952
2379
|
|
|
2953
2380
|
### `SurfaceMembers`
|
|
2954
2381
|
|
|
2955
2382
|
- `Body(name: string): SurfaceBodyBuilder` — Start a surface-member body builder for straps, inlays, guards, braces, cuffs, and similar physical members that live on a carrier surface.
|
|
2956
2383
|
- `Band: typeof SurfaceBand`
|
|
2957
2384
|
- `band<C extends SurfaceCoordinate>(path: SurfacePath<C> | SurfacePathBuilder<C>, width: WidthProfile, cap?: SurfaceBandCap): SurfaceBand<C>`
|
|
2958
|
-
- `compileMember<C extends SurfaceCoordinate>(input: Omit<SurfaceMemberSpec<C>, "section"> & { section: MemberSection | MemberSectionInput; }): CompiledSurfaceMember`
|
|
2959
2385
|
|
|
2960
2386
|
### `Slot`
|
|
2961
2387
|
|