forgecad 0.9.16 → 0.10.1

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 (162) hide show
  1. package/dist/assets/{AdminPage-CXvls4-J.js → AdminPage-DcCnj0qo.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-B27zk8xL.js → BenchmarkPage-BVEpJSVk.js} +1 -1
  3. package/dist/assets/{BlogPage-CMAVvgQL.js → BlogPage-DHaGP50_.js} +1 -1
  4. package/dist/assets/{DocsPage-knf4I4h7.js → DocsPage-CDoxHkz8.js} +40 -859
  5. package/dist/assets/EditorApp-BJ0Dloyh.js +16446 -0
  6. package/dist/assets/{EmbedViewer-D7ZGlFjx.js → EmbedViewer-CRKZbY0y.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-CnevhTE8.js → LandingPageProofDriven-BxHkYRE7.js} +1 -1
  8. package/dist/assets/{LegalPage-BPTUmqeg.js → LegalPage-B-u6FrVv.js} +1 -1
  9. package/dist/assets/{PricingPage-B0D4goG_.js → PricingPage-CzpZ6-Ce.js} +1 -1
  10. package/dist/assets/{SettingsPage-CFF-UgjI.js → SettingsPage-CIZSSAd0.js} +1 -1
  11. package/dist/assets/{app-CE3sYcV7.css → app-CjsbDlb7.css} +143 -0
  12. package/dist/assets/{app-T0pDcSX4.js → app-DaTMg3nH.js} +1310 -290
  13. package/dist/assets/cli/{render-C5pcIISc.js → render-DPf4AYJK.js} +55 -60
  14. package/dist/assets/{constructionHistoryWorker-Ba2Hm58b.js → constructionHistoryWorker-AwMMWSxg.js} +1103 -349
  15. package/dist/assets/{evalWorker-vkx310U2.js → evalWorker-CjZZWRWW.js} +5209 -2643
  16. package/dist/assets/{inspectWorker-BuTJDVX6.js → inspectWorker-CZsCFtQT.js} +1163 -409
  17. package/dist/assets/{jointPose-B_Cgedn9.js → jointPose-DzQOViQH.js} +1 -1
  18. package/dist/assets/{manifold-BWgsjmAM.js → manifold-BYlzU521.js} +1 -1
  19. package/dist/assets/{manifold-D6IFSkhH.js → manifold-DgXo0T5P.js} +2 -2
  20. package/dist/assets/{manifold-rZexZI0G.js → manifold-K1SkarlQ.js} +1 -1
  21. package/dist/assets/{reportWorker-0AGij1Ru.js → reportWorker-B9nWwSrB.js} +8501 -3393
  22. package/dist/assets/{scalar-sampling-budget-J5cuzxT1.js → scalar-sampling-budget-prBw_s8t.js} +6067 -3479
  23. package/dist/assets/{scanProxyWorker-Vl4Wxa1y.js → scanProxyWorker-2GtDLk-R.js} +1 -1
  24. package/dist/assets/{javascript-1kQXfVaz.js → typescript-DBQ6RN5l.js} +874 -22
  25. package/dist/cli/render.html +1 -1
  26. package/dist/docs/index.html +3 -3
  27. package/dist/docs-raw/AI/usage.md +1 -1
  28. package/dist/docs-raw/CLI.md +77 -240
  29. package/dist/docs-raw/README.md +6 -0
  30. package/dist/docs-raw/component-model.md +17 -150
  31. package/dist/docs-raw/generated/assembly.md +188 -582
  32. package/dist/docs-raw/generated/concepts.md +259 -3501
  33. package/dist/docs-raw/generated/core.md +283 -1250
  34. package/dist/docs-raw/generated/curves.md +387 -1608
  35. package/dist/docs-raw/generated/legacy.md +162 -0
  36. package/dist/docs-raw/generated/lib.md +227 -85
  37. package/dist/docs-raw/generated/output.md +35 -99
  38. package/dist/docs-raw/generated/runtime-names.md +23 -23
  39. package/dist/docs-raw/generated/sdf.md +68 -284
  40. package/dist/docs-raw/generated/sheet-metal.md +68 -335
  41. package/dist/docs-raw/generated/sketch.md +240 -1161
  42. package/dist/docs-raw/generated/viewport.md +75 -316
  43. package/dist/docs-raw/generated/wood.md +21 -49
  44. package/dist/docs-raw/guides/coordinate-system.md +4 -42
  45. package/dist/docs-raw/guides/inspection-bundles.md +44 -442
  46. package/dist/docs-raw/guides/joint-design.md +18 -79
  47. package/dist/docs-raw/guides/positioning.md +21 -143
  48. package/dist/docs-raw/guides/scene-presentation.md +89 -0
  49. package/dist/docs-raw/guides/simready-quickstart.md +171 -0
  50. package/dist/docs-raw/simulation-workflow.md +273 -0
  51. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
  52. package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
  53. package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
  54. package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
  55. package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
  56. package/dist/docs-raw/skills/forgecad-lld.md +19 -113
  57. package/dist/docs-raw/skills/forgecad-make-a-model.md +112 -532
  58. package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
  59. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
  60. package/dist/docs-raw/skills/forgecad-project.md +13 -131
  61. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
  62. package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
  63. package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
  64. package/dist/docs-raw/skills/forgecad.md +19 -18
  65. package/dist/docs-raw/skills/index.md +2 -0
  66. package/dist/docs-raw/welcome.md +2 -2
  67. package/dist/index.html +2 -2
  68. package/dist/llms.txt +1 -2
  69. package/dist/sitemap.xml +25 -13
  70. package/dist-cli/{check-compiler-SYQ2PWOB.js → check-compiler-II7NLPAB.js} +1 -1
  71. package/dist-cli/{check-query-propagation-HIAGV62W.js → check-query-propagation-7462TR3R.js} +1 -1
  72. package/dist-cli/{chunk-SPZE3DUY.js → chunk-UWTJCGXF.js} +5848 -2915
  73. package/dist-cli/forgecad.js +3496 -703
  74. package/dist-skill/CONTEXT.md +1797 -7963
  75. package/dist-skill/SKILL.md +15 -15
  76. package/dist-skill/docs/API/core/concepts.md +27 -157
  77. package/dist-skill/docs/CLI.md +77 -240
  78. package/dist-skill/docs/generated/assembly.md +182 -532
  79. package/dist-skill/docs/generated/core.md +283 -1250
  80. package/dist-skill/docs/generated/curves.md +387 -1609
  81. package/dist-skill/docs/generated/lib.md +227 -85
  82. package/dist-skill/docs/generated/output.md +35 -99
  83. package/dist-skill/docs/generated/runtime-names.md +16 -21
  84. package/dist-skill/docs/generated/sdf.md +68 -284
  85. package/dist-skill/docs/generated/sheet-metal.md +68 -335
  86. package/dist-skill/docs/generated/sketch.md +240 -1160
  87. package/dist-skill/docs/generated/viewport.md +75 -223
  88. package/dist-skill/docs/generated/wood.md +21 -49
  89. package/dist-skill/docs/guides/coordinate-system.md +4 -42
  90. package/dist-skill/docs/guides/inspection-bundles.md +44 -442
  91. package/dist-skill/docs/guides/joint-design.md +18 -79
  92. package/dist-skill/docs/guides/positioning.md +21 -143
  93. package/dist-skill/docs/guides/scene-presentation.md +89 -0
  94. package/dist-skill/docs/guides/surface-members.md +26 -0
  95. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
  96. package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
  97. package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
  98. package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
  99. package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
  100. package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
  101. package/dist-skill/library/forgecad-make-a-model/SKILL.md +110 -532
  102. package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
  103. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
  104. package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
  105. package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
  106. package/dist-skill/library/forgecad-project/SKILL.md +13 -133
  107. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
  108. package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
  109. package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
  110. package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
  111. package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
  112. package/dist-skill/website/skills/forgecad-component-model.md +53 -0
  113. package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
  114. package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
  115. package/dist-skill/website/skills/forgecad-lld.md +41 -0
  116. package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
  117. package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
  118. package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
  119. package/dist-skill/website/skills/forgecad-project.md +26 -0
  120. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
  121. package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
  122. package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
  123. package/dist-skill/website/skills/forgecad.md +122 -0
  124. package/dist-skill/website/skills/index.md +26 -0
  125. package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
  126. package/examples/api/conformal-product-ribbon.forge.js +1 -1
  127. package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
  128. package/examples/api/extrude-options.forge.js +4 -2
  129. package/examples/api/field-loft-drive-tip.forge.js +40 -0
  130. package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
  131. package/examples/api/highlight-debug.forge.js +10 -10
  132. package/examples/api/mesh-import-slats.forge.js +1 -1
  133. package/examples/api/real-product-curves.forge.js +1 -1
  134. package/examples/api/sculpt-box-circle-booleans.forge.js +1 -1
  135. package/examples/api/sdf-shapes.forge.js +2 -5
  136. package/examples/api/sketch-rounding-strategies.forge.js +6 -6
  137. package/examples/api/surface-member-bottle-cage.forge.js +3 -3
  138. package/examples/api/surface-member-conformal-product-ribbon.forge.js +3 -3
  139. package/examples/api/surface-member-razor-inlay.forge.js +1 -1
  140. package/examples/api/variable-sweep-test.forge.js +3 -3
  141. package/examples/mechanical/airplane-propeller.forge.js +74 -39
  142. package/examples/nurbs-surface.forge.js +1 -1
  143. package/examples/products/iphone.forge.js +1 -1
  144. package/examples/robotics/README.md +46 -0
  145. package/examples/robotics/scout-cam-rover-simready/README.md +119 -0
  146. package/examples/robotics/scout-cam-rover-simready/lib/dims.js +140 -0
  147. package/examples/robotics/scout-cam-rover-simready/main.forge.js +343 -0
  148. package/examples/robotics/scout-cam-rover-simready/parts/body.forge.js +304 -0
  149. package/examples/robotics/scout-cam-rover-simready/parts/chassis.forge.js +320 -0
  150. package/examples/robotics/scout-cam-rover-simready/parts/hardware.forge.js +21 -0
  151. package/examples/robotics/scout-cam-rover-simready/parts/turret.forge.js +70 -0
  152. package/examples/robotics/scout-cam-rover-simready/parts/wheel.forge.js +116 -0
  153. package/examples/robotics/simready-asset-crate.forge.js +79 -0
  154. package/examples/robotics/simready-diff-drive-rover.forge.js +141 -0
  155. package/examples/robotics/simready-parallel-gripper.forge.js +102 -0
  156. package/package.json +1 -1
  157. package/dist/assets/EditorApp-BHMQlJ-D.js +0 -14686
  158. package/dist/docs-raw/guides/geometry-conventions.md +0 -52
  159. package/dist/docs-raw/guides/modeling-recipes.md +0 -78
  160. package/dist-skill/docs/guides/geometry-conventions.md +0 -52
  161. package/dist-skill/docs/guides/modeling-recipes.md +0 -78
  162. package/dist-skill/library/forgecad-visual-spec/references/prompt-template.md +0 -79
@@ -9,14 +9,14 @@ Dimensions, BOM entries, verification checks, and sketch export.
9
9
 
10
10
  ## Contents
11
11
 
12
- - [Annotations & Output](#annotations-output) — `bom`, `robotExport`, `dim`, `dimLine`
13
- - [Sketch Export](#sketch-export) — `sketchToDxf`, `sketchToSvg`
12
+ - [Annotations & Output](#annotations-output)
13
+ - [Sketch Export](#sketch-export)
14
14
 
15
15
  ## Functions
16
16
 
17
17
  ### Annotations & Output
18
18
 
19
- #### `bom()` — Register a Bill of Materials entry for report export.
19
+ #### `bom(quantity: number, description: string, opts?: BomOpts): void` — Register a Bill of Materials entry for report export.
20
20
 
21
21
  BOM entries are accumulated during script execution and exported alongside the model in report views. Rows are grouped by normalized `description + unit`. Pass an explicit `key` to force multiple descriptions to collapse into a single line item.
22
22
 
@@ -42,10 +42,6 @@ bom(tubeLen, "rectangular steel tube", {
42
42
  });
43
43
  ```
44
44
 
45
- ```ts
46
- bom(quantity: number, description: string, opts?: BomOpts): void
47
- ```
48
-
49
45
  **`BomOpts`**
50
46
 
51
47
  | Option | Type | Description |
@@ -62,12 +58,14 @@ bom(quantity: number, description: string, opts?: BomOpts): void
62
58
  | `notes?` | `string` | Free-form notes |
63
59
  | `grain?` | `string` | Wood grain direction, e.g. "long", "cross" |
64
60
 
65
- #### `robotExport()` — Declare that this script should export the assembly as a SDF/URDF robot package.
61
+ #### `robotExport(options: RobotExportOptions): CollectedRobotExport` — Compatibility shim for SDF/URDF robot package metadata.
66
62
 
67
- Call `robotExport()` alongside your assembly definition. The CLI commands `forgecad export sdf` and `forgecad export urdf` pick up the declaration and produce a robot package with:
63
+ Prefer returning `assembly(...).withSimulation(...)` with `Sim.body(...)`, `Sim.drive.*(...)`, and `Sim.controller.*(...)` metadata. The CLI commands `forgecad export sdf` and `forgecad export urdf` now read that assembly simulation contract directly.
64
+
65
+ `robotExport()` remains available for one compatibility window. It converts the legacy descriptor into the same internal simulation model used by source-authored `Sim` metadata and produces a robot package with:
68
66
 
69
67
  - Mesh-based inertia tensors (full 6-component, not bounding-box approximations)
70
- - Separate collision meshes (convex hull by default — ~50–80% smaller)
68
+ - Separate collision meshes
71
69
  - Joint limits, effort/velocity/damping/friction metadata from assembly joints
72
70
 
73
71
  **Collision mesh modes** (set per-link via `links["PartName"].collision`):
@@ -86,23 +84,13 @@ Call `robotExport()` alongside your assembly definition. The CLI commands `forge
86
84
  - `massKg` is preferred; `densityKgM3` is used when mass is unknown.
87
85
  - Compatibility coupling metadata, when present, maps only the primary term (largest ratio) to `<mimic>` — SDF/URDF support single-leader mimic only. Dropped terms emit a warning.
88
86
 
89
- ```ts
90
- const rover = assembly("Scout")
91
- .addPart("Chassis", box(300, 220, 50).translate(0, 0, -25))
92
- .addPart("Left Wheel", cylinder(30, 60, undefined, 48).translate(0, 0, -15))
93
- .addRevolute("leftWheel", "Chassis", "Left Wheel", {
94
- axis: [0, 1, 0],
95
- frame: Transform.identity().translate(90, 140, 60),
96
- effort: 20, velocity: 1080,
97
- });
87
+ **Legacy example**
98
88
 
89
+ ```ts
99
90
  robotExport({
100
- assembly: rover,
91
+ assembly: rover, // assembly() with parts + revolute wheel joints
101
92
  modelName: "Scout",
102
- links: {
103
- Chassis: { massKg: 10 },
104
- "Left Wheel": { massKg: 0.8 },
105
- },
93
+ links: { Chassis: { massKg: 10 }, "Left Wheel": { massKg: 0.8 } },
106
94
  plugins: {
107
95
  diffDrive: {
108
96
  leftJoints: ["leftWheel"], rightJoints: ["rightWheel"],
@@ -113,17 +101,13 @@ robotExport({
113
101
  });
114
102
  ```
115
103
 
116
- **CLI usage**
104
+ **Preferred CLI usage**
117
105
 
118
106
  ```bash
119
107
  forgecad export sdf model.forge.js # SDF package (Gazebo/Ignition)
120
108
  forgecad export urdf model.forge.js # URDF package (ROS/PyBullet/MuJoCo)
121
109
  ```
122
110
 
123
- ```ts
124
- robotExport(options: RobotExportOptions): CollectedRobotExport
125
- ```
126
-
127
111
  **`RobotExportOptions`**: `assembly: Assembly`, `modelName?: string`, `state?: JointState`, `static?: boolean`, `selfCollide?: boolean`, `allowAutoDisable?: boolean`, `links?: Record<string, RobotLinkExportOptions>`, `joints?: Record<string, RobotJointExportOptions>`, `plugins?: { diffDrive?: RobotDiffDrivePluginOptions; jointStatePublisher?: RobotJointStatePublisherOptions; }`, `world?: RobotWorldOptions`
128
112
 
129
113
  `RobotLinkExportOptions`: `{ massKg?: number, densityKgM3?: number, collision?: "visual" | "convex" | "box" | "none" }`
@@ -138,58 +122,20 @@ robotExport(options: RobotExportOptions): CollectedRobotExport
138
122
 
139
123
  `RobotWorldKeyboardTeleopOptions`: `{ enabled?: boolean, linearStep?: number, angularStep?: number }`
140
124
 
141
- **`CollectedRobotExport`**: `modelName: string`, `assembly: AssemblyDefinition`, `state: JointState`, `static: boolean`, `selfCollide: boolean`, `allowAutoDisable: boolean`, `links: Record<string, RobotLinkExportOptions>`, `joints: Record<string, RobotJointExportOptions>`, `plugins: { diffDrive?: RobotDiffDrivePluginOptions; jointStatePublisher?: RobotJointStatePublisherOptions; }`, `world: RobotWorldOptions | null`
142
-
143
- **`AssemblyDefinition`**: `name: string`, `parts: AssemblyPartDef[]`, `joints: AssemblyJointDef[]`, `jointCouplings: AssemblyJointCouplingDef[]`, `kinematics: AssemblyKinematicGraphDef`, `frames: AssemblyFrameDef[]`, `frameJoints: AssemblyFrameJointDef[]`, `frameEdges: AssemblyFrameEdgeDef[]`
144
-
145
- **`AssemblyPartDef`**: `name: string`, `part: AssemblyPart`, `base: Transform`, `metadata?: PartMetadata`, `mates: AssemblyPartMateInput[]`, `bindToFrame?: string`
146
-
147
- **`PartMetadata`**
148
-
149
- | Option | Type | Description |
150
- |--------|------|-------------|
151
- | `tags?` | `string \| readonly string[]` | Viewport organization tags applied to scene objects produced from this part. |
152
- | `material?`, `process?`, `tolerance?`, `qty?`, `notes?`, `densityKgM3?`, `massKg?` | | — |
153
-
154
- **`AssemblyPartMateInput`**
155
- - `connector: string` — Name of a connector declared on the part (via `withConnectors()`).
156
- - `toLink: string` — Name of the link this connector's origin is pinned to.
157
- - `aimLink?: string` — Optional second link to orient toward. When set, the part is rotated so the connector's **axis** aims from `toLink` toward `aimLink`, posing an oriented bone instead of only translating it. For full pose without relying on a connector axis, declare a second mate (two connectors → two links).
158
-
159
- **`AssemblyJointDef`**: `name: string`, `type: JointType`, `parent: string`, `child: string`, `frame: Transform`, `axis: Vec3`, `min?: number`, `max?: number`, `defaultValue: number`, `unit?: string`, `effort?: number`, `velocity?: number`, `damping?: number`, `friction?: number`, `connectorRefs?: JointConnectorRefs`
160
-
161
- `JointConnectorRefs`: `{ parent: string, child: string, parentAlign?: PortAlign, childAlign?: PortAlign }`
162
-
163
- `AssemblyJointCouplingDef`: `{ joint: string, terms: JointCouplingTermRecord[], offset: number }`
164
-
165
- `JointCouplingTermRecord`: `{ joint: string, ratio: number }`
166
-
167
- **`AssemblyKinematicGraphDef`**: `links: AssemblyLinkDef[]`, `edges: AssemblyEdgeBetweenLinksDef[]`, `angles: AssemblyAngleBetweenLinksDef[]`, `derivedLinks: AssemblyDerivedLinkDef[]`
168
-
169
- `AssemblyLinkDef`: `{ name: string, at: Vec3, fixed: boolean, metadata?: Record<string, unknown> }`
170
-
171
- **`AssemblyEdgeBetweenLinksDef`**: `name: string`, `a: string`, `b: string`, `length: number | null`, `min?: number`, `max?: number`, `visualOnly: boolean`, `control?: AssemblyKinematicControlOptions`, `metadata?: Record<string, unknown>`
125
+ #### `dim()` Add a dimension annotation between two points, or along an entity.
172
126
 
173
- `AssemblyKinematicControlOptions`: `{ min?: number, max?: number, default?: number, unit?: string }`
127
+ Overloads:
174
128
 
175
- **`AssemblyAngleBetweenLinksDef`**: `name: string`, `a?: string`, `b: string`, `c: string`, `reference?: AssemblyAngleReferenceDef`, `target?: number`, `min?: number`, `max?: number`, `control?: AssemblyKinematicControlOptions`, `metadata?: Record<string, unknown>`
176
-
177
- `AssemblyAngleReferenceDef`: `{ kind: "worldDirection", direction: Vec3 }`
178
-
179
- `AssemblyDerivedLinkDef`: `{ name: string, fromLink: string, referenceLink: string, distance: number, direction: AssemblyDerivedLinkDirection }`
180
-
181
- `AssemblyFrameDef`: `{ name: string, origin: Vec3, axis: Vec3, up: Vec3, fixed: boolean, metadata?: Record<string, unknown> }`
182
-
183
- **`AssemblyFrameJointDef`**: `name: string`, `type: AssemblyFrameJointType`, `parent: string`, `child: string`, `rest: Transform`, `min?: number`, `max?: number`, `defaultValue: number`, `unit?: string`, `control: boolean`, `metadata?: Record<string, unknown>`
184
-
185
- `AssemblyFrameEdgeDef`: `{ name: string, a: string, b: string, metadata?: Record<string, unknown> }`
186
-
187
- #### `dim()` — Add a dimension annotation between two points.
129
+ - `dim(line: Line2D, opts?: DimOpts): void`
130
+ - `dim(edge: EdgeRef, opts?: DimOpts): void`
131
+ - `dim(from: PointArg, to: PointArg, opts?: DimOpts): void`
188
132
 
189
133
  Dimension annotations are purely visual callouts rendered in the viewport and report export. They do not affect geometry or constrain the model.
190
134
 
191
135
  Point arguments accept 2D tuples `[x, y]`, 3D tuples `[x, y, z]`, or [`Point2D`](/docs/sketch#point2d) objects (Z is treated as 0 for 2D inputs).
192
136
 
137
+ Entity arguments: pass a single [`Line2D`](/docs/sketch#line2d) (from a constrained sketch) or an `EdgeRef` (from `shape.edge('left')`) as the first argument to dimension along that entity directly — no manual endpoint extraction needed.
138
+
193
139
  **Ownership Rules (Report Pages)**
194
140
 
195
141
  - `currentComponent: true` — deterministic ownership by the calling import instance. Use when authoring reusable imported parts.
@@ -201,33 +147,31 @@ Point arguments accept 2D tuples `[x, y]`, 3D tuples `[x, y, z]`, or [`Point2D`]
201
147
  dim([-w / 2, 0, 0], [w / 2, 0, 0], { label: "Width" });
202
148
  dim([0, 0, -h / 2], [0, 0, h / 2], { label: "Height", offset: 14 });
203
149
  dim([0, 0, 0], [100, 0, 0], { component: "Base", color: "#00AAFF" });
150
+ dim(sk.line(a, b), { label: "Span", offset: -8 }); // Line2D entity
151
+ dim(myBox.edge("top-right"), { label: "Depth" }); // EdgeRef entity
204
152
  ```
205
153
 
206
- `component` (string or string[] report ownership), `currentComponent` (boolean)
154
+ [`Line2D`](/docs/sketch#line2d) / `EdgeRef` entity (then pass `opts` as the second argument)
207
155
 
208
- ```ts
209
- dim(from: PointArg, to: PointArg, opts?: DimOpts): void
210
- ```
156
+ `component` (string or string[] — report ownership), `currentComponent` (boolean)
211
157
 
212
158
  `DimOpts`: `{ offset?: number, label?: string, color?: string, component?: string | string[], currentComponent?: boolean }`
213
159
 
214
- #### `dimLine()` — Add a dimension annotation along a [`Line2D`](/docs/sketch#line2d).
215
-
216
- Convenience wrapper around { points from a constrained-sketch [`Line2D`](/docs/sketch#line2d) entity. All `opts` are forwarded unchanged.
160
+ **`EdgeRef`**
217
161
 
218
- ```ts
219
- const a = point(0, 0);
220
- const b = point(100, 0);
221
- dimLine(line(a, b), { label: "Span", offset: -8 });
222
- ```
162
+ | Option | Type | Description |
163
+ |--------|------|-------------|
164
+ | `start` | `Vec3` | Start point |
165
+ | `end` | `Vec3` | End point |
166
+ | `query?` | `EdgeQueryRef` | Compiler-owned edge query when available. |
167
+ | `curve?` | `EdgeCurve` | Exact or parametric curve family when the backend/source can identify one. |
168
+ | `faceName?` | `string` | Owning face name when the edge is associated with one face in a larger topology. |
223
169
 
224
- ```ts
225
- dimLine(l: Line2D, opts?: DimOpts): void
226
- ```
170
+ Also: `name: EdgeName`.
227
171
 
228
172
  ### Sketch Export
229
173
 
230
- #### `sketchToDxf()` — Export a 2D sketch as a DXF string (R12/AC1009 — maximally compatible).
174
+ #### `sketchToDxf(sketch: Sketch, options?: SketchDxfOptions): string` — Export a 2D sketch as a DXF string (R12/AC1009 — maximally compatible).
231
175
 
232
176
  For regular sketches, each polygon loop becomes a closed `LWPOLYLINE`. For constrained sketches, exports raw `LINE`, `CIRCLE`, and `ARC` entities from the constraint edge geometry, which preserves internal/shared edges that `toPolygons()` would merge away.
233
177
 
@@ -238,15 +182,11 @@ const s = rect(100, 60);
238
182
  const dxf = sketchToDxf(s, { layer: 'cut' });
239
183
  ```
240
184
 
241
- ```ts
242
- sketchToDxf(sketch: Sketch, options?: SketchDxfOptions): string
243
- ```
244
-
245
185
  **`SketchDxfOptions`**
246
186
  - `layer?: string` — DXF layer name. Default: "0"
247
187
  - `colorIndex?: number` — DXF color index (1–255, AutoCAD ACI). Default: 7 (white/black)
248
188
 
249
- #### `sketchToSvg()` — Export a 2D sketch as an SVG string.
189
+ #### `sketchToSvg(sketch: Sketch, options?: SketchSvgOptions): string` — Export a 2D sketch as an SVG string.
250
190
 
251
191
  For regular sketches, exports filled polygon regions. For constrained sketches, exports raw edge geometry (LINE, ARC, CIRCLE) which preserves internal/shared edges that `toPolygons()` would merge away.
252
192
 
@@ -257,10 +197,6 @@ const s = rect(100, 60);
257
197
  const svg = sketchToSvg(s, { stroke: '#333', strokeWidth: 0.8 });
258
198
  ```
259
199
 
260
- ```ts
261
- sketchToSvg(sketch: Sketch, options?: SketchSvgOptions): string
262
- ```
263
-
264
200
  **`SketchSvgOptions`**
265
201
 
266
202
  | Option | Type | Description |
@@ -14,35 +14,35 @@ Agents should avoid declaring these names with top-level `const`, `let`, destruc
14
14
  These collision-reserved names are case-sensitive:
15
15
 
16
16
  ```text
17
- activateBackend, Analysis, arcSlot, assembly, Assembly, assemblyInstructions, assemblyPreview, Blend
18
- bom, bomToCsv, boolParam, box, cameraTrajectory, Carrier, chamfer, chamferTrackedEdge
19
- choiceParam, circle, circle2d, Circle2D, circularLayout, circularPattern, circularPattern2d, coalesceEdges
20
- combine, COMMON_KERFS, compareWith, composeChain, connector, console, constrainedSketch, Constraint
21
- Counterbore, Curve, Curve3D, cutPlane, cylinder, degrees, difference, difference2d
22
- dim, dimLine, draft, ellipse, explodeView, faceProfile, fillet, filletCorners
23
- filletTrackedEdge, fingerJoint, flatPanel, flatPart, formatInstructions, Function, gcode, GCodeBuilder
24
- getActiveBackend, global, globalThis, group, highlight, Import, ImportedAssembly, importMesh
25
- importStep, importSvgSketch, initKernel, intersection, intersection2d, intersectWithPlane, joint, jointsView
26
- laserKit, lib, line, Line2D, linearPattern, linearPattern2d, listParam, loadFont
27
- loft, Loft, lookupKerf, mirrorCopy, mock, ngon, NurbsCurve3D, nurbsSurface
28
- NurbsSurface, offsetSolid, param, Param, path, point, Point2D, Points
29
- polygon, polygonVertices, port, Product, ProductHandleBuilder, ProductHandleFeature, ProductPanelBuilder, ProductRibbonBuilder
30
- ProductSkin, ProductSkinBuilder, ProductSpoutBuilder, ProductStationBuilder, ProductSurfaceBuilder, ProductSurfaceRef, projectToPlane, queueMicrotask
31
- radians, rect, Rectangle2D, Ribs, robotExport, roundedRect, Route3D, scene
32
- Sculpt, sdf, SdfShape, selectEdge, selectEdges, self, setActiveBackend, setImmediate
33
- setInterval, setTimeout, Shape, ShapeGroup, sheetMetal, SheetMetalPart, sheetStock, Sketch
34
- sketchToDxf, sketchToSvg, slot, Slot, SolvedAssembly, spec, sphere, spline2d
35
- star, stroke, Surface, SurfaceBody, SurfaceMembers, surfacePatch, sweep, tabSlot
36
- text2d, textWidth, torus, toShape, Transform, union, union2d, variableSweep
37
- verify, viewConfig, Viewport, window, Wood
17
+ activateBackend, Analysis, arcSlot, assembly, Assembly, Blend, bom, box
18
+ cameraTrajectory, Carrier, chamfer, circle2d, Circle2D, circularLayout, circularPattern, circularPattern2d
19
+ coalesceEdges, compareWith, connector, console, constrainedSketch, Curve, Curve3D, cutPlane
20
+ cylinder, difference, difference2d, dim, draft, ellipse, explodeView, faceProfile
21
+ fillet, Function, gcode, GCodeBuilder, getActiveBackend, global, globalThis, group
22
+ Import, ImportedAssembly, initKernel, intersection, intersection2d, intersectWithPlane, joint, Laser
23
+ lib, Line2D, linearPattern, linearPattern2d, loadFont, loft, Loft, mirrorCopy
24
+ mock, ngon, NurbsCurve3D, NurbsSurface, offsetSolid, param, Param, path
25
+ Point2D, Points, polygon, polygonVertices, port, Product, ProductPanelBuilder, ProductRibbonBuilder
26
+ ProductSkin, ProductSkinBuilder, ProductStationBuilder, ProductSurfaceBuilder, ProductSurfaceRef, projectToPlane, queueMicrotask, rect
27
+ Rectangle2D, robotExport, roundedRect, Route3D, scene, Sculpt, sdf, SdfShape
28
+ selectEdge, selectEdges, self, setActiveBackend, setImmediate, setInterval, setTimeout, Shape
29
+ ShapeGroup, sheetMetal, SheetMetalPart, sheetStock, Sim, Sketch, sketchToDxf, sketchToSvg
30
+ slot, SolvedAssembly, spec, sphere, spline2d, stroke, Surface, SurfaceBody
31
+ SurfaceMembers, sweep, text2d, textWidth, torus, toShape, Transform, union
32
+ union2d, variableSweep, verify, Viewport, window, Wood
38
33
  ```
39
34
 
40
35
  <!-- forgecad-skill:exclude-start symbol="compatibility runtime names" reason="Compatibility-only renamed runtime globals." -->
41
36
  Compatibility-only renamed runtime globals are also reserved in human-authored scripts, but are omitted from shipped agent skills so agents do not learn retired authoring APIs:
42
37
 
43
38
  ```text
44
- connectEdges, Helix, HelixCurve, hermiteTransitionG2, loftAlongSpine, nurbs3d, spline3d, transitionCurve
45
- transitionSurface
39
+ assemblyInstructions, assemblyPreview, bomToCsv, boolParam, chamferTrackedEdge, choiceParam, circle, combine
40
+ COMMON_KERFS, composeChain, connectEdges, Constraint, Counterbore, degrees, dimLine, filletCorners
41
+ filletTrackedEdge, fingerJoint, flatPanel, flatPart, formatInstructions, Helix, HelixCurve, hermiteTransitionG2
42
+ highlight, importMesh, importStep, importSvgSketch, jointsView, laserKit, line, listParam
43
+ loftAlongSpine, lookupKerf, nurbs3d, nurbsSurface, point, ProductHandleBuilder, ProductHandleFeature, ProductSpoutBuilder
44
+ radians, Ribs, Slot, spline3d, star, surfacePatch, tabSlot, transitionCurve
45
+ transitionSurface, viewConfig
46
46
  ```
47
47
  <!-- forgecad-skill:exclude-end -->
48
48