@metamesh/modeling 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +26 -5
  3. package/dist/api/geometry.d.ts +99 -44
  4. package/dist/api/index.d.ts +167 -20
  5. package/dist/docs/guides/concepts.md +4 -1
  6. package/dist/docs/guides/recipes.md +33 -6
  7. package/dist/docs/manifest.json +191 -56
  8. package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
  9. package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
  10. package/dist/docs/reference/engine/GenerationOptions.md +1 -1
  11. package/dist/docs/reference/engine/GeometryResource.md +1 -1
  12. package/dist/docs/reference/engine/ModelDependencies.md +1 -1
  13. package/dist/docs/reference/engine/ModelEngine.md +1 -1
  14. package/dist/docs/reference/engine/ModelEngineOptions.md +1 -1
  15. package/dist/docs/reference/engine/ModelSession.md +1 -1
  16. package/dist/docs/reference/engine/ModelSnapshot.md +1 -1
  17. package/dist/docs/reference/engine/SessionOptions.md +1 -1
  18. package/dist/docs/reference/engine/SnapshotPart.md +1 -1
  19. package/dist/docs/reference/engine/categories/host-lifecycle.md +1 -1
  20. package/dist/docs/reference/engine/createModelEngine.md +1 -1
  21. package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
  22. package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
  23. package/dist/docs/reference/engine/validateModel.md +1 -1
  24. package/dist/docs/reference/engine.md +1 -1
  25. package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +1 -1
  26. package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
  27. package/dist/docs/reference/geometry/Anchor3-type.md +1 -1
  28. package/dist/docs/reference/geometry/ArcCurve2.md +1 -1
  29. package/dist/docs/reference/geometry/ArcCurve3.md +1 -1
  30. package/dist/docs/reference/geometry/AttachOptions.md +1 -1
  31. package/dist/docs/reference/geometry/AxisAngleRotation3.md +1 -1
  32. package/dist/docs/reference/geometry/Bounds2-type.md +1 -1
  33. package/dist/docs/reference/geometry/Bounds2Data.md +1 -1
  34. package/dist/docs/reference/geometry/Bounds2Input.md +1 -1
  35. package/dist/docs/reference/geometry/Bounds2Options.md +72 -0
  36. package/dist/docs/reference/geometry/Bounds3-type.md +1 -1
  37. package/dist/docs/reference/geometry/Bounds3Data.md +1 -1
  38. package/dist/docs/reference/geometry/Bounds3Input.md +1 -1
  39. package/dist/docs/reference/geometry/Bounds3Options.md +72 -0
  40. package/dist/docs/reference/geometry/BoundsFit2.md +1 -1
  41. package/dist/docs/reference/geometry/BoundsFit3.md +1 -1
  42. package/dist/docs/reference/geometry/BoundsFitOptions.md +1 -1
  43. package/dist/docs/reference/geometry/BoxAnchorFace.md +1 -1
  44. package/dist/docs/reference/geometry/BoxAnchorOptions.md +1 -1
  45. package/dist/docs/reference/geometry/BoxEdge.md +1 -1
  46. package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
  47. package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
  48. package/dist/docs/reference/geometry/BoxOptions.md +1 -1
  49. package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +1 -1
  50. package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +1 -1
  51. package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
  52. package/dist/docs/reference/geometry/CircleContourOptions.md +1 -1
  53. package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
  54. package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
  55. package/dist/docs/reference/geometry/CircularSampling.md +41 -0
  56. package/dist/docs/reference/geometry/CircularSamplingOptions.md +14 -0
  57. package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +1 -1
  58. package/dist/docs/reference/geometry/ClearanceHoleFit.md +1 -1
  59. package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +1 -1
  60. package/dist/docs/reference/geometry/Contour.md +1 -1
  61. package/dist/docs/reference/geometry/ContourCurve.md +1 -1
  62. package/dist/docs/reference/geometry/ContourPoint.md +1 -1
  63. package/dist/docs/reference/geometry/ContourSegment.md +1 -1
  64. package/dist/docs/reference/geometry/CorrespondingComponent.md +1 -1
  65. package/dist/docs/reference/geometry/CorrespondingContour.md +1 -1
  66. package/dist/docs/reference/geometry/CorrespondingProfile.md +1 -1
  67. package/dist/docs/reference/geometry/CorrespondingProfileStation.md +1 -1
  68. package/dist/docs/reference/geometry/CubicBezierCurve2.md +1 -1
  69. package/dist/docs/reference/geometry/CubicBezierCurve3.md +1 -1
  70. package/dist/docs/reference/geometry/Curve2.md +1 -1
  71. package/dist/docs/reference/geometry/Curve3.md +1 -1
  72. package/dist/docs/reference/geometry/CurveSamplingOptions.md +1 -1
  73. package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +1 -1
  74. package/dist/docs/reference/geometry/CylinderAnchorFace.md +1 -1
  75. package/dist/docs/reference/geometry/CylinderAnchorOptions.md +1 -1
  76. package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
  77. package/dist/docs/reference/geometry/CylindricalGearDimensions.md +1 -1
  78. package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +1 -1
  79. package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +1 -1
  80. package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +1 -1
  81. package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +1 -1
  82. package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +1 -1
  83. package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +1 -1
  84. package/dist/docs/reference/geometry/CylindricalGearSpec.md +1 -1
  85. package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
  86. package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
  87. package/dist/docs/reference/geometry/EllipseContourOptions.md +1 -1
  88. package/dist/docs/reference/geometry/EndTreatments.md +1 -1
  89. package/dist/docs/reference/geometry/ExtrudeOptions.md +1 -1
  90. package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +1 -1
  91. package/dist/docs/reference/geometry/FittedTextLayout.md +1 -1
  92. package/dist/docs/reference/geometry/Frame3.md +1 -1
  93. package/dist/docs/reference/geometry/GeometryError.md +1 -1
  94. package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
  95. package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
  96. package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
  97. package/dist/docs/reference/geometry/GeometrySamplingLimits.md +1 -1
  98. package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
  99. package/dist/docs/reference/geometry/GridPatternOptions.md +1 -1
  100. package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +1 -1
  101. package/dist/docs/reference/geometry/HeightfieldOptions.md +1 -1
  102. package/dist/docs/reference/geometry/HeightfieldPreflight.md +1 -1
  103. package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +1 -1
  104. package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +1 -1
  105. package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +1 -1
  106. package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +1 -1
  107. package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +1 -1
  108. package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +1 -1
  109. package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +1 -1
  110. package/dist/docs/reference/geometry/KnuckleHingeInterval.md +1 -1
  111. package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +1 -1
  112. package/dist/docs/reference/geometry/KnuckleHingeSpec.md +1 -1
  113. package/dist/docs/reference/geometry/LineCurve2.md +1 -1
  114. package/dist/docs/reference/geometry/LineCurve3.md +1 -1
  115. package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
  116. package/dist/docs/reference/geometry/LoftCorrespondence.md +1 -1
  117. package/dist/docs/reference/geometry/LoftMeshStation.md +1 -1
  118. package/dist/docs/reference/geometry/LoftOptions.md +1 -1
  119. package/dist/docs/reference/geometry/LoftPlacement.md +1 -1
  120. package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +1 -1
  121. package/dist/docs/reference/geometry/MatchProfilesOptions.md +1 -1
  122. package/dist/docs/reference/geometry/MetricFastenerSize.md +1 -1
  123. package/dist/docs/reference/geometry/MetricFastenerStandard.md +1 -1
  124. package/dist/docs/reference/geometry/MetricHexNutDimensions.md +1 -1
  125. package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +1 -1
  126. package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
  127. package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +1 -1
  128. package/dist/docs/reference/geometry/Path2-type.md +1 -1
  129. package/dist/docs/reference/geometry/Path2Data.md +1 -1
  130. package/dist/docs/reference/geometry/Path2Input.md +1 -1
  131. package/dist/docs/reference/geometry/Path3-type.md +1 -1
  132. package/dist/docs/reference/geometry/Path3Data.md +1 -1
  133. package/dist/docs/reference/geometry/Path3Input.md +1 -1
  134. package/dist/docs/reference/geometry/PathFrame.md +1 -1
  135. package/dist/docs/reference/geometry/PathLocation.md +1 -1
  136. package/dist/docs/reference/geometry/PathNormalGuide.md +1 -1
  137. package/dist/docs/reference/geometry/PathOptions.md +1 -1
  138. package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
  139. package/dist/docs/reference/geometry/PathPlacement.md +1 -1
  140. package/dist/docs/reference/geometry/PathResamplingOptions.md +1 -1
  141. package/dist/docs/reference/geometry/Pivot2Options.md +1 -1
  142. package/dist/docs/reference/geometry/Pivot3Options.md +1 -1
  143. package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +1 -1
  144. package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +1 -1
  145. package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +1 -1
  146. package/dist/docs/reference/geometry/PlanarPatchQuality.md +1 -1
  147. package/dist/docs/reference/geometry/PolygonData.md +1 -1
  148. package/dist/docs/reference/geometry/PolylineResamplingOptions.md +1 -1
  149. package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
  150. package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
  151. package/dist/docs/reference/geometry/PrintableThreadFit.md +1 -1
  152. package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +1 -1
  153. package/dist/docs/reference/geometry/Profile.md +1 -1
  154. package/dist/docs/reference/geometry/ProfileComponent2.md +1 -1
  155. package/dist/docs/reference/geometry/ProfileContour2.md +1 -1
  156. package/dist/docs/reference/geometry/ProfileSpan2.md +1 -1
  157. package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +1 -1
  158. package/dist/docs/reference/geometry/RackPitchDimensions.md +1 -1
  159. package/dist/docs/reference/geometry/RackPitchSpec.md +1 -1
  160. package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
  161. package/dist/docs/reference/geometry/RadialSizing.md +1 -1
  162. package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
  163. package/dist/docs/reference/geometry/RectangleContourOptions.md +1 -1
  164. package/dist/docs/reference/geometry/RectangleCornerTreatment.md +1 -1
  165. package/dist/docs/reference/geometry/RectangleCornerTreatments.md +1 -1
  166. package/dist/docs/reference/geometry/RectangleProfileOptions.md +1 -1
  167. package/dist/docs/reference/geometry/RegionData.md +1 -1
  168. package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +1 -1
  169. package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
  170. package/dist/docs/reference/geometry/RevolveOptions.md +1 -1
  171. package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
  172. package/dist/docs/reference/geometry/RowLayoutOptions.md +1 -1
  173. package/dist/docs/reference/geometry/SampleContourOptions.md +1 -1
  174. package/dist/docs/reference/geometry/SampleHelixOptions.md +1 -1
  175. package/dist/docs/reference/geometry/SampleSideProfileOptions.md +1 -1
  176. package/dist/docs/reference/geometry/SampledCurve2.md +1 -1
  177. package/dist/docs/reference/geometry/SampledCurve3.md +1 -1
  178. package/dist/docs/reference/geometry/SampledThreadHelices.md +1 -1
  179. package/dist/docs/reference/geometry/SideProfileCurve.md +1 -1
  180. package/dist/docs/reference/geometry/SideProfilePoint.md +1 -1
  181. package/dist/docs/reference/geometry/SideProfileSegment.md +1 -1
  182. package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
  183. package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +1 -1
  184. package/dist/docs/reference/geometry/SphereOptions.md +1 -1
  185. package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +1 -1
  186. package/dist/docs/reference/geometry/StrokeCap.md +1 -1
  187. package/dist/docs/reference/geometry/StrokeJoin.md +1 -1
  188. package/dist/docs/reference/geometry/StrokeOptions.md +1 -1
  189. package/dist/docs/reference/geometry/SvgImportOptions.md +16 -1
  190. package/dist/docs/reference/geometry/SvgRegionPreflight.md +16 -1
  191. package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +1 -1
  192. package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +1 -1
  193. package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +1 -1
  194. package/dist/docs/reference/geometry/SweepOptions.md +1 -1
  195. package/dist/docs/reference/geometry/SweepOrientation.md +1 -1
  196. package/dist/docs/reference/geometry/ThreadBevelOptions.md +1 -1
  197. package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +1 -1
  198. package/dist/docs/reference/geometry/ThreadCompensationOptions.md +1 -1
  199. package/dist/docs/reference/geometry/ThreadEndStyle.md +1 -1
  200. package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +1 -1
  201. package/dist/docs/reference/geometry/ThreadHandedness.md +1 -1
  202. package/dist/docs/reference/geometry/ThreadHelixOptions.md +1 -1
  203. package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +1 -1
  204. package/dist/docs/reference/geometry/ThreadLeadInShape.md +1 -1
  205. package/dist/docs/reference/geometry/ThreadProfile-type.md +1 -1
  206. package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +1 -1
  207. package/dist/docs/reference/geometry/ThreadProfileSpec.md +1 -1
  208. package/dist/docs/reference/geometry/ThreadRole.md +1 -1
  209. package/dist/docs/reference/geometry/ThreadedNutBevel.md +1 -1
  210. package/dist/docs/reference/geometry/ThreadedNutOptions.md +1 -1
  211. package/dist/docs/reference/geometry/ThreadedNutPreflight.md +1 -1
  212. package/dist/docs/reference/geometry/ThreadedNutShape.md +1 -1
  213. package/dist/docs/reference/geometry/ThreadedRodOptions.md +1 -1
  214. package/dist/docs/reference/geometry/TorusOptions.md +1 -1
  215. package/dist/docs/reference/geometry/Transform2-type.md +1 -1
  216. package/dist/docs/reference/geometry/Transform2Data.md +1 -1
  217. package/dist/docs/reference/geometry/Transform2Input.md +1 -1
  218. package/dist/docs/reference/geometry/Transform3-type.md +1 -1
  219. package/dist/docs/reference/geometry/Transform3Data.md +1 -1
  220. package/dist/docs/reference/geometry/Transform3Input.md +1 -1
  221. package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +1 -1
  222. package/dist/docs/reference/geometry/TriangleMesh.md +1 -1
  223. package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +1 -1
  224. package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +1 -1
  225. package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +1 -1
  226. package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +1 -1
  227. package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +1 -1
  228. package/dist/docs/reference/geometry/TriangleMeshSignature.md +1 -1
  229. package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +1 -1
  230. package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +1 -1
  231. package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +1 -1
  232. package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +1 -1
  233. package/dist/docs/reference/geometry/TubeOptions.md +1 -1
  234. package/dist/docs/reference/geometry/Vector2-type.md +1 -1
  235. package/dist/docs/reference/geometry/Vector2Data.md +1 -1
  236. package/dist/docs/reference/geometry/Vector2Input.md +1 -1
  237. package/dist/docs/reference/geometry/Vector3-type.md +1 -1
  238. package/dist/docs/reference/geometry/Vector3Data.md +1 -1
  239. package/dist/docs/reference/geometry/Vector3Input.md +1 -1
  240. package/dist/docs/reference/geometry/VectorTextArcBaseline.md +1 -1
  241. package/dist/docs/reference/geometry/VectorTextLayout.md +1 -1
  242. package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +3 -3
  243. package/dist/docs/reference/geometry/VectorTextMetrics.md +1 -1
  244. package/dist/docs/reference/geometry/VectorTextOptions.md +1 -1
  245. package/dist/docs/reference/geometry/add2.md +1 -1
  246. package/dist/docs/reference/geometry/add3.md +1 -1
  247. package/dist/docs/reference/geometry/analyzeTriangleMesh.md +1 -1
  248. package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +1 -1
  249. package/dist/docs/reference/geometry/anchor3.md +1 -1
  250. package/dist/docs/reference/geometry/anchorFrame3.md +1 -1
  251. package/dist/docs/reference/geometry/applyTransformDirection3.md +1 -1
  252. package/dist/docs/reference/geometry/applyTransformPoint3.md +1 -1
  253. package/dist/docs/reference/geometry/attachmentTransform3.md +1 -1
  254. package/dist/docs/reference/geometry/bounds2.md +7 -6
  255. package/dist/docs/reference/geometry/bounds3.md +7 -6
  256. package/dist/docs/reference/geometry/boundsCenter.md +1 -1
  257. package/dist/docs/reference/geometry/boundsSize.md +1 -1
  258. package/dist/docs/reference/geometry/boxAnchor3.md +1 -1
  259. package/dist/docs/reference/geometry/categories/bounds-layout.md +7 -8
  260. package/dist/docs/reference/geometry/categories/curves-paths.md +1 -1
  261. package/dist/docs/reference/geometry/categories/mechanical.md +1 -1
  262. package/dist/docs/reference/geometry/categories/meshes.md +1 -1
  263. package/dist/docs/reference/geometry/categories/pattern-placement.md +1 -1
  264. package/dist/docs/reference/geometry/categories/primitive-options.md +1 -1
  265. package/dist/docs/reference/geometry/categories/profiles-regions.md +1 -1
  266. package/dist/docs/reference/geometry/categories/resolution-errors.md +5 -2
  267. package/dist/docs/reference/geometry/categories/transforms-math.md +1 -1
  268. package/dist/docs/reference/geometry/categories/vector-import.md +1 -1
  269. package/dist/docs/reference/geometry/circleContour.md +1 -1
  270. package/dist/docs/reference/geometry/closeToAxis.md +1 -1
  271. package/dist/docs/reference/geometry/compensateThreadDiameters.md +1 -1
  272. package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +1 -1
  273. package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +1 -1
  274. package/dist/docs/reference/geometry/composeTransform3.md +1 -1
  275. package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +1 -1
  276. package/dist/docs/reference/geometry/computeParallelTransportFrames.md +1 -1
  277. package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +1 -1
  278. package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +1 -1
  279. package/dist/docs/reference/geometry/contourContainsPoint.md +1 -1
  280. package/dist/docs/reference/geometry/cross2.md +1 -1
  281. package/dist/docs/reference/geometry/cross3.md +1 -1
  282. package/dist/docs/reference/geometry/cylinderAnchor3.md +1 -1
  283. package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +1 -1
  284. package/dist/docs/reference/geometry/distance2.md +1 -1
  285. package/dist/docs/reference/geometry/distance3.md +1 -1
  286. package/dist/docs/reference/geometry/distributeAlongPath.md +1 -1
  287. package/dist/docs/reference/geometry/dot2.md +1 -1
  288. package/dist/docs/reference/geometry/dot3.md +1 -1
  289. package/dist/docs/reference/geometry/ellipseContour.md +1 -1
  290. package/dist/docs/reference/geometry/eulerTransform3.md +1 -1
  291. package/dist/docs/reference/geometry/extrudeMesh.md +1 -1
  292. package/dist/docs/reference/geometry/fitBounds.md +1 -1
  293. package/dist/docs/reference/geometry/fitTextLayout.md +1 -1
  294. package/dist/docs/reference/geometry/frameTransform3.md +1 -1
  295. package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +1 -1
  296. package/dist/docs/reference/geometry/getMetricFastenerStandard.md +1 -1
  297. package/dist/docs/reference/geometry/gridPatternTransforms.md +1 -1
  298. package/dist/docs/reference/geometry/heightfieldMesh.md +1 -1
  299. package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +1 -1
  300. package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +1 -1
  301. package/dist/docs/reference/geometry/inverseTransform3.md +1 -1
  302. package/dist/docs/reference/geometry/isGeometryError.md +1 -1
  303. package/dist/docs/reference/geometry/joinTriangleMeshes.md +1 -1
  304. package/dist/docs/reference/geometry/layoutRow.md +1 -1
  305. package/dist/docs/reference/geometry/length2.md +1 -1
  306. package/dist/docs/reference/geometry/length3.md +1 -1
  307. package/dist/docs/reference/geometry/lerp2.md +1 -1
  308. package/dist/docs/reference/geometry/lerp3.md +1 -1
  309. package/dist/docs/reference/geometry/linearPatternTransforms.md +1 -1
  310. package/dist/docs/reference/geometry/loftMesh.md +1 -1
  311. package/dist/docs/reference/geometry/matchProfiles.md +1 -1
  312. package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +1 -1
  313. package/dist/docs/reference/geometry/meshBounds.md +1 -1
  314. package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +1 -1
  315. package/dist/docs/reference/geometry/normalize2.md +1 -1
  316. package/dist/docs/reference/geometry/normalize3.md +1 -1
  317. package/dist/docs/reference/geometry/normalizeContour.md +1 -1
  318. package/dist/docs/reference/geometry/normalizePolygon.md +1 -1
  319. package/dist/docs/reference/geometry/normalizeRegion.md +1 -1
  320. package/dist/docs/reference/geometry/optimizePlanarPatches.md +1 -1
  321. package/dist/docs/reference/geometry/path2.md +1 -1
  322. package/dist/docs/reference/geometry/path3.md +1 -1
  323. package/dist/docs/reference/geometry/pathPatternTransforms.md +1 -1
  324. package/dist/docs/reference/geometry/preflightHeightfield.md +1 -1
  325. package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +1 -1
  326. package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +1 -1
  327. package/dist/docs/reference/geometry/preflightSvgRegion.md +12 -3
  328. package/dist/docs/reference/geometry/preflightThreadedNut.md +1 -1
  329. package/dist/docs/reference/geometry/preflightThreadedRod.md +1 -1
  330. package/dist/docs/reference/geometry/projectOntoPlane3.md +1 -1
  331. package/dist/docs/reference/geometry/radialPatternTransforms.md +1 -1
  332. package/dist/docs/reference/geometry/rectangleContour.md +1 -1
  333. package/dist/docs/reference/geometry/rectangleProfile.md +1 -1
  334. package/dist/docs/reference/geometry/regionArea.md +1 -1
  335. package/dist/docs/reference/geometry/regionBounds.md +1 -1
  336. package/dist/docs/reference/geometry/regularPolygonContour.md +1 -1
  337. package/dist/docs/reference/geometry/resamplePolyline2.md +1 -1
  338. package/dist/docs/reference/geometry/resamplePolyline3.md +1 -1
  339. package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
  340. package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
  341. package/dist/docs/reference/geometry/resolveCircularSampling.md +40 -0
  342. package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
  343. package/dist/docs/reference/geometry/resolveCylindricalGear.md +1 -1
  344. package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +1 -1
  345. package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +1 -1
  346. package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +1 -1
  347. package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
  348. package/dist/docs/reference/geometry/resolveKnuckleHinge.md +1 -1
  349. package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +1 -1
  350. package/dist/docs/reference/geometry/resolveRackPitch.md +1 -1
  351. package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +1 -1
  352. package/dist/docs/reference/geometry/reverseTriangleMesh.md +1 -1
  353. package/dist/docs/reference/geometry/revolveMesh.md +1 -1
  354. package/dist/docs/reference/geometry/rotate2.md +1 -1
  355. package/dist/docs/reference/geometry/rotationTransform3.md +1 -1
  356. package/dist/docs/reference/geometry/roundClosedPolylinePath.md +1 -1
  357. package/dist/docs/reference/geometry/sampleContour.md +1 -1
  358. package/dist/docs/reference/geometry/sampleCurve2.md +1 -1
  359. package/dist/docs/reference/geometry/sampleCurve3.md +1 -1
  360. package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +1 -1
  361. package/dist/docs/reference/geometry/sampleHelix.md +1 -1
  362. package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +1 -1
  363. package/dist/docs/reference/geometry/sampleRackToothPath.md +1 -1
  364. package/dist/docs/reference/geometry/sampleSideProfile.md +1 -1
  365. package/dist/docs/reference/geometry/sampleTextContours.md +1 -1
  366. package/dist/docs/reference/geometry/sampleThreadHelices.md +1 -1
  367. package/dist/docs/reference/geometry/scale2.md +1 -1
  368. package/dist/docs/reference/geometry/scale3.md +1 -1
  369. package/dist/docs/reference/geometry/scaleTransform3.md +1 -1
  370. package/dist/docs/reference/geometry/signedContourArea.md +1 -1
  371. package/dist/docs/reference/geometry/starContour.md +1 -1
  372. package/dist/docs/reference/geometry/strokeRegionData.md +1 -1
  373. package/dist/docs/reference/geometry/subtract2.md +1 -1
  374. package/dist/docs/reference/geometry/subtract3.md +1 -1
  375. package/dist/docs/reference/geometry/sweepMesh.md +1 -1
  376. package/dist/docs/reference/geometry/threadProfile.md +1 -1
  377. package/dist/docs/reference/geometry/transform2.md +1 -1
  378. package/dist/docs/reference/geometry/transform3.md +1 -1
  379. package/dist/docs/reference/geometry/transformDeterminant3.md +1 -1
  380. package/dist/docs/reference/geometry/transformRegionData.md +1 -1
  381. package/dist/docs/reference/geometry/transformTriangleMesh.md +1 -1
  382. package/dist/docs/reference/geometry/translationTransform3.md +1 -1
  383. package/dist/docs/reference/geometry/triangulateContour.md +1 -1
  384. package/dist/docs/reference/geometry/validateSolidMesh.md +1 -1
  385. package/dist/docs/reference/geometry/validateTransform3.md +1 -1
  386. package/dist/docs/reference/geometry/validateTriangleMesh.md +1 -1
  387. package/dist/docs/reference/geometry/vector2.md +1 -1
  388. package/dist/docs/reference/geometry/vector3.md +1 -1
  389. package/dist/docs/reference/geometry.md +1 -1
  390. package/dist/docs/reference/model/Anchor3.md +1 -1
  391. package/dist/docs/reference/model/AttachOptions.md +1 -1
  392. package/dist/docs/reference/model/Bounds2-type.md +1 -1
  393. package/dist/docs/reference/model/Bounds2Data.md +1 -1
  394. package/dist/docs/reference/model/Bounds2Input.md +1 -1
  395. package/dist/docs/reference/model/Bounds2Options.md +70 -0
  396. package/dist/docs/reference/model/Bounds3-type.md +1 -1
  397. package/dist/docs/reference/model/Bounds3Data.md +1 -1
  398. package/dist/docs/reference/model/Bounds3Input.md +1 -1
  399. package/dist/docs/reference/model/Bounds3Options.md +70 -0
  400. package/dist/docs/reference/model/BoxEdge.md +1 -1
  401. package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
  402. package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
  403. package/dist/docs/reference/model/BoxOptions.md +1 -1
  404. package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
  405. package/dist/docs/reference/model/CircleContourOptions.md +1 -1
  406. package/dist/docs/reference/model/CircleOptions.md +1 -1
  407. package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
  408. package/dist/docs/reference/model/Computed.md +1 -1
  409. package/dist/docs/reference/model/ComputedValue.md +1 -1
  410. package/dist/docs/reference/model/Contour.md +1 -1
  411. package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
  412. package/dist/docs/reference/model/CorrespondingContour.md +1 -1
  413. package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
  414. package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
  415. package/dist/docs/reference/model/CylinderOptions.md +1 -1
  416. package/dist/docs/reference/model/DiagnosticOptions.md +1 -1
  417. package/dist/docs/reference/model/EdgeTreatment.md +1 -1
  418. package/dist/docs/reference/model/EllipseContourOptions.md +1 -1
  419. package/dist/docs/reference/model/EllipseOptions.md +1 -1
  420. package/dist/docs/reference/model/EndTreatments.md +1 -1
  421. package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
  422. package/dist/docs/reference/model/FinalizedModel.md +1 -1
  423. package/dist/docs/reference/model/FinalizedPart.md +1 -1
  424. package/dist/docs/reference/model/Frame3.md +1 -1
  425. package/dist/docs/reference/model/GenerateCallback.md +1 -1
  426. package/dist/docs/reference/model/GenerateContext.md +1 -1
  427. package/dist/docs/reference/model/GeneratedPart.md +1 -1
  428. package/dist/docs/reference/model/GenerationDiagnostic.md +1 -1
  429. package/dist/docs/reference/model/GenerationError.md +1 -1
  430. package/dist/docs/reference/model/GeometryResolution.md +1 -1
  431. package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
  432. package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
  433. package/dist/docs/reference/model/GridPatternOptions.md +1 -1
  434. package/dist/docs/reference/model/HeightfieldOptions.md +1 -1
  435. package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +1 -1
  436. package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +1 -1
  437. package/dist/docs/reference/model/HoleCutterOptions.md +77 -0
  438. package/dist/docs/reference/model/HoleCutterOverrun.md +35 -0
  439. package/dist/docs/reference/model/HoleCutterRecess.md +87 -0
  440. package/dist/docs/reference/model/HullOptions.md +1 -1
  441. package/dist/docs/reference/model/ImmutableBuffer-type.md +1 -1
  442. package/dist/docs/reference/model/ImmutableTriangleMesh.md +1 -1
  443. package/dist/docs/reference/model/ImplicitOptions.md +1 -1
  444. package/dist/docs/reference/model/InternalThreadCutterOptions.md +1 -1
  445. package/dist/docs/reference/model/KnuckleHinge-type.md +1 -1
  446. package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +1 -1
  447. package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +9 -5
  448. package/dist/docs/reference/model/KnuckleHingeOptions.md +3 -3
  449. package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +1 -1
  450. package/dist/docs/reference/model/KnuckleHingeSpec.md +1 -1
  451. package/dist/docs/reference/model/KnuckleHingeWeb.md +2 -2
  452. package/dist/docs/reference/model/LinearPatternOptions.md +1 -1
  453. package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
  454. package/dist/docs/reference/model/LoftOptions.md +1 -1
  455. package/dist/docs/reference/model/LoftPlacement.md +1 -1
  456. package/dist/docs/reference/model/LoftStation.md +1 -1
  457. package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
  458. package/dist/docs/reference/model/ModelProgram.md +1 -1
  459. package/dist/docs/reference/model/ModelingLimits.md +1 -1
  460. package/dist/docs/reference/model/NumericArray.md +1 -1
  461. package/dist/docs/reference/model/PartGeometry.md +1 -1
  462. package/dist/docs/reference/model/PartOptions.md +1 -1
  463. package/dist/docs/reference/model/Path2-type.md +1 -1
  464. package/dist/docs/reference/model/Path2Data.md +1 -1
  465. package/dist/docs/reference/model/Path2Input.md +1 -1
  466. package/dist/docs/reference/model/Path3-type.md +1 -1
  467. package/dist/docs/reference/model/Path3Data.md +1 -1
  468. package/dist/docs/reference/model/Path3Input.md +1 -1
  469. package/dist/docs/reference/model/PathLocation.md +1 -1
  470. package/dist/docs/reference/model/PathNormalGuide.md +1 -1
  471. package/dist/docs/reference/model/PathOptions.md +1 -1
  472. package/dist/docs/reference/model/PathPatternOptions.md +1 -1
  473. package/dist/docs/reference/model/PathResamplingOptions.md +1 -1
  474. package/dist/docs/reference/model/PatternSource.md +1 -1
  475. package/dist/docs/reference/model/Pivot2Options.md +1 -1
  476. package/dist/docs/reference/model/Pivot3Options.md +1 -1
  477. package/dist/docs/reference/model/PlaneOptions.md +1 -1
  478. package/dist/docs/reference/model/PolygonData.md +1 -1
  479. package/dist/docs/reference/model/PolygonOptions.md +1 -1
  480. package/dist/docs/reference/model/PrimitiveAttachment.md +1 -1
  481. package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +1 -1
  482. package/dist/docs/reference/model/PrintableThreadFit.md +1 -1
  483. package/dist/docs/reference/model/PrintableThreadFitPolicy.md +1 -1
  484. package/dist/docs/reference/model/Profile.md +1 -1
  485. package/dist/docs/reference/model/ProfileComponent2.md +1 -1
  486. package/dist/docs/reference/model/ProfileContour2.md +1 -1
  487. package/dist/docs/reference/model/ProfileSpan2.md +1 -1
  488. package/dist/docs/reference/model/ProfiledEdgeTreatment.md +1 -1
  489. package/dist/docs/reference/model/RadialPatternOptions.md +1 -1
  490. package/dist/docs/reference/model/RadialSizing.md +1 -1
  491. package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
  492. package/dist/docs/reference/model/RectangleContourOptions.md +1 -1
  493. package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
  494. package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
  495. package/dist/docs/reference/model/RectangleOptions.md +1 -1
  496. package/dist/docs/reference/model/RegionData.md +1 -1
  497. package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
  498. package/dist/docs/reference/model/RevolveOptions.md +1 -1
  499. package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
  500. package/dist/docs/reference/model/Section.md +1 -1
  501. package/dist/docs/reference/model/SectionHullOptions.md +1 -1
  502. package/dist/docs/reference/model/SectionInspection.md +1 -1
  503. package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
  504. package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
  505. package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
  506. package/dist/docs/reference/model/Solid.md +1 -1
  507. package/dist/docs/reference/model/SolidInspection.md +1 -1
  508. package/dist/docs/reference/model/SolidSegmentHit.md +1 -1
  509. package/dist/docs/reference/model/SphereOptions.md +1 -1
  510. package/dist/docs/reference/model/StarOptions.md +1 -1
  511. package/dist/docs/reference/model/StrokeCap.md +1 -1
  512. package/dist/docs/reference/model/StrokeJoin.md +1 -1
  513. package/dist/docs/reference/model/StrokeOptions.md +1 -1
  514. package/dist/docs/reference/model/SvgOrigin.md +1 -1
  515. package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
  516. package/dist/docs/reference/model/SvgSectionOptions.md +14 -1
  517. package/dist/docs/reference/model/SweepOptions.md +1 -1
  518. package/dist/docs/reference/model/SweepOrientation.md +1 -1
  519. package/dist/docs/reference/model/TextSectionOptions.md +1 -1
  520. package/dist/docs/reference/model/ThreadEndStyle.md +1 -1
  521. package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +1 -1
  522. package/dist/docs/reference/model/ThreadHandedness.md +1 -1
  523. package/dist/docs/reference/model/ThreadLeadInEnvelope.md +1 -1
  524. package/dist/docs/reference/model/ThreadLeadInShape.md +1 -1
  525. package/dist/docs/reference/model/ThreadProfile.md +1 -1
  526. package/dist/docs/reference/model/ThreadRidgeOptions.md +1 -1
  527. package/dist/docs/reference/model/ThreadedNutBevel.md +1 -1
  528. package/dist/docs/reference/model/ThreadedNutOptions.md +1 -1
  529. package/dist/docs/reference/model/ThreadedNutPreflight.md +1 -1
  530. package/dist/docs/reference/model/ThreadedNutShape.md +1 -1
  531. package/dist/docs/reference/model/ThreadedRodOptions.md +1 -1
  532. package/dist/docs/reference/model/TorusOptions.md +1 -1
  533. package/dist/docs/reference/model/Transform2-type.md +1 -1
  534. package/dist/docs/reference/model/Transform2Data.md +1 -1
  535. package/dist/docs/reference/model/Transform2Input.md +1 -1
  536. package/dist/docs/reference/model/Transform3-type.md +1 -1
  537. package/dist/docs/reference/model/Transform3Data.md +1 -1
  538. package/dist/docs/reference/model/Transform3Input.md +1 -1
  539. package/dist/docs/reference/model/TriangleMesh.md +1 -1
  540. package/dist/docs/reference/model/TriangleMeshAnalysis.md +1 -1
  541. package/dist/docs/reference/model/TriangleMeshMeasurements.md +1 -1
  542. package/dist/docs/reference/model/TubeOptions.md +1 -1
  543. package/dist/docs/reference/model/Vector2-type.md +1 -1
  544. package/dist/docs/reference/model/Vector2Data.md +1 -1
  545. package/dist/docs/reference/model/Vector2Input.md +1 -1
  546. package/dist/docs/reference/model/Vector3-type.md +1 -1
  547. package/dist/docs/reference/model/Vector3Data.md +1 -1
  548. package/dist/docs/reference/model/Vector3Input.md +1 -1
  549. package/dist/docs/reference/model/VectorTextLayout.md +1 -1
  550. package/dist/docs/reference/model/VectorTextMetrics.md +1 -1
  551. package/dist/docs/reference/model/anchor.md +1 -1
  552. package/dist/docs/reference/model/bounds2.md +7 -6
  553. package/dist/docs/reference/model/bounds3.md +7 -6
  554. package/dist/docs/reference/model/box.md +1 -1
  555. package/dist/docs/reference/model/castSegment.md +1 -1
  556. package/dist/docs/reference/model/categories/boolean-operations.md +1 -1
  557. package/dist/docs/reference/model/categories/bounded-surfaces.md +1 -1
  558. package/dist/docs/reference/model/categories/bounds.md +5 -3
  559. package/dist/docs/reference/model/categories/contracts.md +1 -1
  560. package/dist/docs/reference/model/categories/core-values-errors.md +1 -1
  561. package/dist/docs/reference/model/categories/explicit-profiles.md +1 -1
  562. package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +1 -1
  563. package/dist/docs/reference/model/categories/generation.md +1 -1
  564. package/dist/docs/reference/model/categories/hinges.md +2 -2
  565. package/dist/docs/reference/model/categories/inspection.md +1 -1
  566. package/dist/docs/reference/model/categories/mesh-inspection.md +1 -1
  567. package/dist/docs/reference/model/categories/paths.md +1 -1
  568. package/dist/docs/reference/model/categories/primitives.md +5 -1
  569. package/dist/docs/reference/model/categories/resolution.md +1 -1
  570. package/dist/docs/reference/model/categories/sections.md +1 -1
  571. package/dist/docs/reference/model/categories/threads.md +1 -1
  572. package/dist/docs/reference/model/categories/transforms-placement.md +1 -1
  573. package/dist/docs/reference/model/circle.md +1 -1
  574. package/dist/docs/reference/model/components.md +1 -1
  575. package/dist/docs/reference/model/compose.md +1 -1
  576. package/dist/docs/reference/model/cylinder.md +1 -1
  577. package/dist/docs/reference/model/distance.md +1 -1
  578. package/dist/docs/reference/model/ellipse.md +1 -1
  579. package/dist/docs/reference/model/extrude.md +1 -1
  580. package/dist/docs/reference/model/generate.md +1 -1
  581. package/dist/docs/reference/model/gridPattern.md +1 -1
  582. package/dist/docs/reference/model/heightfield.md +1 -1
  583. package/dist/docs/reference/model/holeCutter.md +45 -0
  584. package/dist/docs/reference/model/hull.md +1 -1
  585. package/dist/docs/reference/model/immutableBuffer.md +1 -1
  586. package/dist/docs/reference/model/immutableMesh.md +1 -1
  587. package/dist/docs/reference/model/implicit.md +1 -1
  588. package/dist/docs/reference/model/inspectSection.md +1 -1
  589. package/dist/docs/reference/model/inspectSolid.md +1 -1
  590. package/dist/docs/reference/model/internalThreadCutter.md +1 -1
  591. package/dist/docs/reference/model/intersect.md +1 -1
  592. package/dist/docs/reference/model/isEmpty.md +1 -1
  593. package/dist/docs/reference/model/knuckleHinge.md +3 -3
  594. package/dist/docs/reference/model/linearPattern.md +1 -1
  595. package/dist/docs/reference/model/loft.md +1 -1
  596. package/dist/docs/reference/model/matchProfiles.md +1 -1
  597. package/dist/docs/reference/model/minkowskiSum.md +1 -1
  598. package/dist/docs/reference/model/path2.md +1 -1
  599. package/dist/docs/reference/model/path3.md +1 -1
  600. package/dist/docs/reference/model/pathPattern.md +1 -1
  601. package/dist/docs/reference/model/polygon.md +1 -1
  602. package/dist/docs/reference/model/preflightInternalThreadCutter.md +1 -1
  603. package/dist/docs/reference/model/preflightThreadedNut.md +1 -1
  604. package/dist/docs/reference/model/preflightThreadedRod.md +1 -1
  605. package/dist/docs/reference/model/radialPattern.md +1 -1
  606. package/dist/docs/reference/model/rectangle.md +1 -1
  607. package/dist/docs/reference/model/regularPolygon.md +1 -1
  608. package/dist/docs/reference/model/revolve.md +1 -1
  609. package/dist/docs/reference/model/solidFromMesh.md +1 -1
  610. package/dist/docs/reference/model/sphere.md +1 -1
  611. package/dist/docs/reference/model/split.md +1 -1
  612. package/dist/docs/reference/model/splitByPlane.md +1 -1
  613. package/dist/docs/reference/model/star.md +1 -1
  614. package/dist/docs/reference/model/stroke.md +1 -1
  615. package/dist/docs/reference/model/svgPathSection.md +1 -1
  616. package/dist/docs/reference/model/svgSection.md +5 -1
  617. package/dist/docs/reference/model/sweep.md +1 -1
  618. package/dist/docs/reference/model/textSection.md +1 -1
  619. package/dist/docs/reference/model/threadRidge.md +1 -1
  620. package/dist/docs/reference/model/threadedNut.md +1 -1
  621. package/dist/docs/reference/model/threadedRod.md +1 -1
  622. package/dist/docs/reference/model/torus.md +1 -1
  623. package/dist/docs/reference/model/transform2.md +1 -1
  624. package/dist/docs/reference/model/transform3.md +1 -1
  625. package/dist/docs/reference/model/tube.md +1 -1
  626. package/dist/docs/reference/model/union.md +1 -1
  627. package/dist/docs/reference/model/vector2.md +1 -1
  628. package/dist/docs/reference/model/vector3.md +1 -1
  629. package/dist/docs/reference/model.md +1 -1
  630. package/dist/docs/reference/text/Bounds2Data.md +1 -1
  631. package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
  632. package/dist/docs/reference/text/Vector2Data.md +1 -1
  633. package/dist/docs/reference/text/VectorFont.md +7 -7
  634. package/dist/docs/reference/text/VectorFontOptions.md +1 -1
  635. package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
  636. package/dist/docs/reference/text/VectorTextLayout.md +1 -1
  637. package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
  638. package/dist/docs/reference/text/VectorTextMetrics.md +1 -1
  639. package/dist/docs/reference/text/VectorTextOptions.md +1 -1
  640. package/dist/docs/reference/text/categories/font-preparation.md +1 -1
  641. package/dist/docs/reference/text/prepareVectorFont.md +1 -1
  642. package/dist/docs/reference/text.md +1 -1
  643. package/dist/engine/extrusion-finishing.js +2 -29
  644. package/dist/engine/hole-cutter-operation.js +148 -0
  645. package/dist/engine/knuckle-hinge-operation.js +55 -12
  646. package/dist/engine/modeling-context.js +12 -0
  647. package/dist/engine/primitive-operations.js +19 -6
  648. package/dist/engine/section-operations.js +1 -1
  649. package/dist/geometry/bounds-value.js +37 -9
  650. package/dist/geometry/bounds.js +0 -17
  651. package/dist/geometry/circular-sampling.js +45 -0
  652. package/dist/geometry/convex-offset.js +41 -0
  653. package/dist/geometry/index.js +2 -1
  654. package/dist/geometry/math/immutable-value.js +1 -1
  655. package/dist/geometry/profiles/profiles.js +3 -23
  656. package/dist/geometry/svg/matrix.js +21 -0
  657. package/dist/geometry/svg-import.js +134 -52
  658. package/dist/model/execution-binding.js +1 -1
  659. package/dist/model/geometry-recipes.js +1 -1
  660. package/dist/model/hole-cutter.js +1 -0
  661. package/dist/model/operations.js +23 -2
  662. package/dist/model/recipe-declaration.js +1 -0
  663. package/package.json +1 -1
  664. package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +0 -24
  665. package/dist/docs/reference/geometry/boundsFromSize.md +0 -84
  666. package/dist/docs/reference/geometry/containsBounds.md +0 -73
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # @metamesh/modeling
2
2
 
3
+ ## 0.17.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Expose `resolveCircularSampling` for the resolved count and actual vertex/face radii of a sampled
8
+ circle without allocating points. It shares sampling rules with `resolveCircularSegments`, aligned
9
+ counts, and `circleContour`, including exact-count precedence and physical error ceilings.
10
+
11
+ Construct fluent bounds directly with `bounds2({ size: [width, height] })` and
12
+ `bounds3({ size: [width, depth, height], center: false })`. Size construction accepts finite
13
+ nonnegative dimensions, centers by default, and is mutually exclusive with min/max construction.
14
+ Remove `boundsFromSize`, `BoundsFromSizeOptions`, and the standalone `containsBounds` export.
15
+ Containment remains available on `Bounds2` and `Bounds3`, including touching boundaries.
16
+
17
+ Migration: replace `boundsFromSize(size, { center })` with the dimension-specific
18
+ `bounds2({ size, center })` or `bounds3({ size, center })`. Use `.toData()` when a plain record is
19
+ required. For sampled bore and wall checks, use `vertexRadius` and `faceRadius` from
20
+ `resolveCircularSampling` instead of repeating faceting trigonometry.
21
+ Replace `containsBounds(outer, inner)` with `bounds2(outer).containsBounds(inner)` or the matching
22
+ XYZ bounds value's method.
23
+
24
+ - d0cc194: Rename per-half `barrelChamfer` to `chamfer` in `knuckleHinge`. The same 45-degree setback now finishes barrel outer rims and exposed web edges. Keep the buried root square and share bevel coordinates with the barrel and mounting body to avoid microscopic steps and collapsed placement triangles. Reject chamfers that consume the web band or collapse its end contours.
25
+ - Add deferred `holeCutter` recipes for circular screw holes and existing Section pocket profiles.
26
+ Circular cutters support counterbores and countersinks; convex single-contour profiles support
27
+ 45-degree entry chamfers. Explicit `overrun.bottom` and `overrun.top` preserve blind-pocket floors
28
+ unless the caller deliberately extends the cutter.
29
+ Circular entry chamfers retain nominal circular radii; Section entry chamfers offset the supplied
30
+ sampled contour's edges.
31
+
32
+ Advance the Modeling host runtime to major 9 for hole cutters and fitted SVG recipe options.
33
+ Rebuild Generator packages against the new library set; old host/runtime packages are rejected.
34
+
35
+ Migration tip: reuse `regularPolygon`, `rectangle`, or other Section constructors as the cutter's
36
+ `profile`. Position a blind cutter at its intended floor and set only `overrun.top` for opening
37
+ padding. Keep allowances, minimum floor thickness and feature-specific assertions in your model.
38
+
39
+ - Add an optional positioned XY `fit` target to `preflightSvgRegion` and `svgSection`. Reuse `fitBounds` for uniform scale and translation while resampling original SVG curves at the final millimetre tolerance and edge spacing. Normalize fitted source units before topology checks, and use relative matrix conditioning so tiny well-conditioned SVG coordinates can be enlarged safely. Preserve holes, painted strokes, exact circular-count overrides, bounded work, and host-owned sampling ceilings. Preflight results expose the applied fit for registered layers and measure the final region.
40
+
41
+ Migration tip: replace import → measure → scale → re-import code with `preflightSvgRegion(svg, { fit: bounds2({ size: [30, 18] }), resolution: { maxChordError: 0.05 } })`. `svgSection` preserves positioned fit targets instead of centering them again.
42
+
3
43
  ## 0.16.0
4
44
 
5
45
  ### Minor Changes
package/README.md CHANGED
@@ -113,12 +113,29 @@ Closed `Path2` values describe traversal, not material; `polygon(path)` fills th
113
113
  winding. Path transforms preserve traversal under reflection. `toData()` supplies a frozen record with points, closure, and dimension for interchange.
114
114
 
115
115
  Use `bounds2({ min, max })` and `bounds3({ min, max })` for axis-aligned extents with fluent
116
- `size()`, `center()`, and `containsBounds()` queries. Path `bounds()` returns these values, or
116
+ `size()`, `center()`, and `containsBounds()` queries. Construct from dimensions with
117
+ `bounds2({ size: [30, 18] })` or `bounds3({ size: [30, 18, 8], center: false })`; centered size
118
+ construction is the default, and size cannot be combined with min/max. Path `bounds()` returns these values, or
117
119
  `undefined` for an empty path. Measurements and snapshots retain plain `Bounds2Data` / `Bounds3Data`;
118
120
  wrap them once for fluent queries and use `toData()` for a frozen min/max record.
119
121
  Containment includes touching boundaries in the same coordinate frame; it does not establish
120
122
  manufacturing fit. Pure `fitBounds` and `layoutRow` accept values or data for fitting and row placement.
121
123
 
124
+ ## Hole and pocket cutters
125
+
126
+ `holeCutter({ diameter, height })` declares a circular cutter from Z=0 to `height`.
127
+ Use `profile: regularPolygon(...)` or `profile: rectangle(...)` instead of `diameter` for
128
+ existing Section outlines. Plain profiles may have holes or disconnected regions. A positive
129
+ `entryChamfer` must be smaller than `height`. Circular entries use nominal frustum radii;
130
+ profile entries expand one strictly convex contour without holes by 45-degree parallel-edge
131
+ offsets of its sampled boundary.
132
+
133
+ Circular cutters additionally accept a `recess` with `kind: "counterbore"`, `diameter` and `depth`,
134
+ or `kind: "countersink"`, `diameter` and full `includedAngle` in degrees. Recesses and entry chamfers
135
+ are alternatives; `face` selects the top opening by default or the bottom opening explicitly.
136
+ Both `overrun.bottom` and `overrun.top` default to zero. To preserve a blind pocket floor, position
137
+ the cutter at that floor and extend only its top. Consumers own fit allowances and retained walls.
138
+
122
139
  ## Mechanical joints
123
140
 
124
141
  `knuckleHinge(options)` declares separate `halfA` and `halfB` solids with a centered +X pin axis
@@ -126,10 +143,14 @@ and +Z roll guide. Choose `print-in-place`, `inserted-pin`, or `lift-off` constr
126
143
  joints require an odd knuckle count; lift-off joints require two knuckles and an explicit
127
144
  `pinEngagement`. Inserted-pin joints supply no pin or retention hardware.
128
145
 
129
- Each half accepts an optional rectangular web with its own Y direction, lower-face Z coordinate (`zMin`), thickness, and
130
- reach, or can remain barrels only. Optional `barrelChamfer` sets the 45-degree setback in millimetres at both ends of every barrel; web edges
131
- remain square. Consumers connect disconnected intervals to their plates or shells, preserve bores
132
- when adding material, and own mounting holes, part placement, and motion. Arbitrary attachments
146
+ Each half accepts an optional rectangular web with its own Y direction, lower-face Z coordinate
147
+ (`zMin`), thickness, and reach, or can remain barrels only. Optional per-half `chamfer` sets the
148
+ 45-degree setback in millimetres at both ends of every barrel and on exposed web edges. The root
149
+ at the pin centreline stays square so its faces merge with the barrel. The setback defaults to
150
+ zero and must leave a positive barrel wall and axial band. Web thickness must exceed twice the
151
+ setback; web reach and knuckle length must exceed `2 * Math.SQRT2 * chamfer` to retain the end contours.
152
+ Consumers connect disconnected intervals to their plates or shells, preserve bores when adding
153
+ material, and own mounting holes, part placement, and motion. Arbitrary attachments
133
154
  have no guaranteed opening range. Use `resolveKnuckleHinge(spec, sampling)` from `/geometry` for
134
155
  the immutable interval schedule, axis frame, integral pin extent, and conservative faceted wall.
135
156
 
@@ -248,14 +248,15 @@ export declare interface Bounds2 extends Bounds2Data {
248
248
  }
249
249
 
250
250
  /**
251
- * Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.
251
+ * Constructs immutable finite XY bounds from ordered extrema or nonnegative size in millimetres.
252
252
  *
253
253
  * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
254
254
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
255
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
255
256
  * Compiled Generator packages passing these values to host recipes or computed data require
256
- * runtime 8.0.0 or newer in major 8.
257
+ * runtime 9.0.0 or newer in major 9.
257
258
  */
258
- export declare function bounds2(input: Bounds2Input): Bounds2;
259
+ export declare function bounds2(input: Bounds2Options): Bounds2;
259
260
 
260
261
  /** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
261
262
  export declare interface Bounds2Data {
@@ -268,6 +269,25 @@ export declare interface Bounds2Data {
268
269
  /** An immutable XY bounds value or its plain min/max representation. */
269
270
  export declare type Bounds2Input = Bounds2 | Bounds2Data;
270
271
 
272
+ /** XY bounds construction from existing extrema or nonnegative dimensions, never both. */
273
+ export declare type Bounds2Options =
274
+ | (Bounds2Input & {
275
+ /** Preserves the size query when snapshotting an existing fluent value. */
276
+ readonly size?: Bounds2["size"];
277
+ /** Preserves the center query when snapshotting an existing fluent value. */
278
+ readonly center?: Bounds2["center"];
279
+ })
280
+ | {
281
+ /** Nonnegative XY dimensions in millimetres. */
282
+ readonly size: Vector2Data;
283
+ /** Center on the origin; false starts at the origin. Defaults to true. */
284
+ readonly center?: boolean;
285
+ /** Minimum coordinates are unavailable when size is supplied. */
286
+ readonly min?: never;
287
+ /** Maximum coordinates are unavailable when size is supplied. */
288
+ readonly max?: never;
289
+ };
290
+
271
291
  /** Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability. */
272
292
  export declare interface Bounds3 extends Bounds3Data {
273
293
  /** Returns nonnegative X/Y/Z dimensions in millimetres, including zero extents. */
@@ -281,14 +301,15 @@ export declare interface Bounds3 extends Bounds3Data {
281
301
  }
282
302
 
283
303
  /**
284
- * Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.
304
+ * Constructs immutable finite XYZ bounds from ordered extrema or nonnegative size in millimetres.
285
305
  *
286
306
  * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
287
307
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
308
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
288
309
  * Compiled Generator packages passing these values to host recipes or computed data require
289
- * runtime 8.0.0 or newer in major 8.
310
+ * runtime 9.0.0 or newer in major 9.
290
311
  */
291
- export declare function bounds3(input: Bounds3Input): Bounds3;
312
+ export declare function bounds3(input: Bounds3Options): Bounds3;
292
313
 
293
314
  /** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
294
315
  export declare interface Bounds3Data {
@@ -301,6 +322,25 @@ export declare interface Bounds3Data {
301
322
  /** An immutable XYZ bounds value or its plain min/max representation. */
302
323
  export declare type Bounds3Input = Bounds3 | Bounds3Data;
303
324
 
325
+ /** XYZ bounds construction from existing extrema or nonnegative dimensions, never both. */
326
+ export declare type Bounds3Options =
327
+ | (Bounds3Input & {
328
+ /** Preserves the size query when snapshotting an existing fluent value. */
329
+ readonly size?: Bounds3["size"];
330
+ /** Preserves the center query when snapshotting an existing fluent value. */
331
+ readonly center?: Bounds3["center"];
332
+ })
333
+ | {
334
+ /** Nonnegative XYZ dimensions in millimetres. */
335
+ readonly size: Vector3Data;
336
+ /** Center on the origin; false starts at the origin. Defaults to true. */
337
+ readonly center?: boolean;
338
+ /** Minimum coordinates are unavailable when size is supplied. */
339
+ readonly min?: never;
340
+ /** Maximum coordinates are unavailable when size is supplied. */
341
+ readonly max?: never;
342
+ };
343
+
304
344
  /** Midpoint of finite XY bounds in millimetres. */
305
345
  export declare function boundsCenter(bounds: Bounds2Data): Vector2Data;
306
346
 
@@ -333,24 +373,6 @@ export declare interface BoundsFitOptions {
333
373
  readonly maxScale?: number;
334
374
  }
335
375
 
336
- /** Creates immutable centered XY bounds from nonnegative dimensions in millimetres. */
337
- export declare function boundsFromSize(
338
- size: Vector2Data,
339
- options?: BoundsFromSizeOptions,
340
- ): Bounds2Data;
341
-
342
- /** Creates immutable centered XYZ bounds from nonnegative dimensions in millimetres. */
343
- export declare function boundsFromSize(
344
- size: Vector3Data,
345
- options?: BoundsFromSizeOptions,
346
- ): Bounds3Data;
347
-
348
- /** Placement of bounds constructed from nonnegative millimetre dimensions. */
349
- export declare interface BoundsFromSizeOptions {
350
- /** Center on the origin; false starts at the origin. Defaults to true. */
351
- readonly center?: boolean;
352
- }
353
-
354
376
  /** Inclusive XY dimensions in millimetres; zero extents are retained. */
355
377
  export declare function boundsSize(bounds: Bounds2Data): Vector2Data;
356
378
 
@@ -459,20 +481,18 @@ export declare interface ChamferedEdgeTreatment {
459
481
  */
460
482
  export declare const circleContour: (options: CircleContourOptions) => Contour;
461
483
 
462
- /**
463
- * Circular profile dimensions with exactly one radius or diameter and explicit sampling.
464
- */
484
+ /** Circular profile dimensions with exactly one radius or diameter and explicit sampling. */
465
485
  export declare type CircleContourOptions = CircularPrimitiveOptions &
466
486
  RadialSizingOptions &
467
487
  (
468
488
  | {
469
- /** Positive nominal radius in millimetres; mutually exclusive with diameter. */
489
+ /** Positive nominal radius in millimetres. */
470
490
  readonly radius: number;
471
- /** Full diameter is unavailable when radius is supplied. */
491
+ /** Diameter is unavailable when radius is supplied. */
472
492
  readonly diameter?: never;
473
493
  }
474
494
  | {
475
- /** Positive full diameter in millimetres; mutually exclusive with radius. */
495
+ /** Positive nominal diameter in millimetres. */
476
496
  readonly diameter: number;
477
497
  /** Radius is unavailable when diameter is supplied. */
478
498
  readonly radius?: never;
@@ -502,6 +522,19 @@ export declare interface CircularResolutionOptions extends GeometryResolution {
502
522
  readonly sizing?: RadialSizing;
503
523
  }
504
524
 
525
+ /** Full-circle count and radial envelopes of its regular sampled polygon, in millimetres. */
526
+ export declare interface CircularSampling {
527
+ /** Exact resolved full-circle segment count. */
528
+ readonly segments: number;
529
+ /** Distance from the origin to every sampled vertex. */
530
+ readonly vertexRadius: number;
531
+ /** Minimum distance from the origin to each straight sampled edge. */
532
+ readonly faceRadius: number;
533
+ }
534
+
535
+ /** Nominal circle size and explicit physical sampling; supply exactly one radius or diameter. */
536
+ export declare type CircularSamplingOptions = CircleContourOptions;
537
+
505
538
  /** Close, normal, and loose metric clearance-hole diameters in millimetres. */
506
539
  export declare interface ClearanceHoleDimensions {
507
540
  /** Close-fit clearance-hole diameter. */
@@ -658,18 +691,6 @@ export declare function computeTriangleMeshSignature(
658
691
  options?: TriangleMeshSignatureOptions,
659
692
  ): TriangleMeshSignature;
660
693
 
661
- /** Tests actual XY containment, including touching boundaries; dimensions must match. */
662
- export declare function containsBounds(
663
- outer: Bounds2Data,
664
- inner: Bounds2Data,
665
- ): boolean;
666
-
667
- /** Tests actual XYZ containment, including touching boundaries; dimensions must match. */
668
- export declare function containsBounds(
669
- outer: Bounds3Data,
670
- inner: Bounds3Data,
671
- ): boolean;
672
-
673
694
  /**
674
695
  * A sampled closed two-dimensional boundary whose first point is not repeated at the end.
675
696
  *
@@ -2407,8 +2428,11 @@ export declare function preflightInternalThreadCutter(
2407
2428
  *
2408
2429
  * This pure operation performs curve flattening, fill and stroke construction, and polygon union;
2409
2430
  * it needs no browser or engine. Geometry counts measure the returned region at the selected
2410
- * resolution, rather than predicting later mesh allocation. The region may be empty; tiny-island
2411
- * and short-edge indicators do not establish manufacturability or later solid validity.
2431
+ * resolution, rather than predicting later mesh allocation. With `fit`, painted bounds are
2432
+ * uniformly centered inside the target and adaptive sampling remains in final millimetres.
2433
+ * Refinement runs at most eight bounded import passes; exact circular counts retain precedence.
2434
+ * Without `fit` the region may be empty. Tiny-island and short-edge indicators do not establish
2435
+ * manufacturability or later solid validity.
2412
2436
  *
2413
2437
  * @param svg - Complete SVG XML source, limited to 256 KiB of UTF-8.
2414
2438
  * @param options - Physical flattening and viewport-origin controls.
@@ -2865,6 +2889,25 @@ export declare function resolveArcSegments(
2865
2889
  limits?: Partial<GeometrySamplingLimits>,
2866
2890
  ): number;
2867
2891
 
2892
+ /**
2893
+ * Resolves circular sampling and its actual radial envelopes without allocating boundary points.
2894
+ *
2895
+ * Vertex sizing retains the nominal vertex radius; face sizing retains the nominal face radius.
2896
+ * Exact `segments` override resolution, while allocation ceilings still apply. Adaptive sampling
2897
+ * uses the same count calculation as `resolveCircularSegments` and `circleContour` and rejects
2898
+ * exhausted limits rather than coarsening. The returned record is immutable and needs no engine.
2899
+ *
2900
+ * @example Check a nominal 8 mm face-sized bore
2901
+ * ```ts
2902
+ * const bore = resolveCircularSampling({ diameter: 8, segments: 64, sizing: "face" });
2903
+ * bore.faceRadius; // 4 mm
2904
+ * bore.vertexRadius; // slightly larger than 4 mm
2905
+ * ```
2906
+ */
2907
+ export declare function resolveCircularSampling(
2908
+ options: CircularSamplingOptions,
2909
+ ): CircularSampling;
2910
+
2868
2911
  /**
2869
2912
  * Resolves a deterministic full-circle segment count for one radius.
2870
2913
  *
@@ -3536,6 +3579,12 @@ export declare const subtract3: (a: Vector3Data, b: Vector3Data) => Vector3Data;
3536
3579
 
3537
3580
  /** Sampling controls for deterministic SVG-to-region conversion. */
3538
3581
  export declare interface SvgImportOptions {
3582
+ /**
3583
+ * Uniformly fit painted bounds inside this positioned XY target in millimetres.
3584
+ * Adaptive resolution describes the fitted size; exact circular counts retain precedence.
3585
+ * Empty painted geometry cannot be fitted. Omitted preserves the document's physical size.
3586
+ */
3587
+ readonly fit?: Bounds2Input;
3539
3588
  /** Explicit profile and circular allocation ceilings; bounded SVG source/work limits remain fixed. */
3540
3589
  readonly limits?: Partial<GeometrySamplingLimits>;
3541
3590
  /** Exact segments for a complete ellipse or round stroke feature. */
@@ -3551,6 +3600,12 @@ export declare interface SvgImportOptions {
3551
3600
 
3552
3601
  /** Normalized sampled SVG region plus bounded source, geometry, and safe-repair diagnostics. */
3553
3602
  export declare interface SvgRegionPreflight {
3603
+ /**
3604
+ * Applied scale and translation from origin-normalized SVG millimetres to final model
3605
+ * millimetres, present only when a fit target was supplied. Reuse it for registered layers
3606
+ * imported with the same origin and document coordinate system.
3607
+ */
3608
+ readonly fit?: BoundsFit2;
3554
3609
  /** Physical and final-topology measurements of `region`. */
3555
3610
  readonly geometry: SvgRegionPreflightGeometryMetrics;
3556
3611
  /** Appearance-preserving cleanup observed during parsing and normalization. */
@@ -62,14 +62,15 @@ export declare interface Bounds2 extends Bounds2Data {
62
62
  }
63
63
 
64
64
  /**
65
- * Snapshots finite ordered XY bounds in millimetres as an immutable fluent value.
65
+ * Constructs immutable finite XY bounds from ordered extrema or nonnegative size in millimetres.
66
66
  *
67
67
  * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
68
68
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
69
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
69
70
  * Compiled Generator packages passing these values to host recipes or computed data require
70
- * runtime 8.0.0 or newer in major 8.
71
+ * runtime 9.0.0 or newer in major 9.
71
72
  */
72
- export declare function bounds2(input: Bounds2Input): Bounds2;
73
+ export declare function bounds2(input: Bounds2Options): Bounds2;
73
74
 
74
75
  /** Plain axis-aligned XY bounds for interchange; use bounds2 for immutable measurement methods. */
75
76
  export declare interface Bounds2Data {
@@ -82,6 +83,25 @@ export declare interface Bounds2Data {
82
83
  /** An immutable XY bounds value or its plain min/max representation. */
83
84
  export declare type Bounds2Input = Bounds2 | Bounds2Data;
84
85
 
86
+ /** XY bounds construction from existing extrema or nonnegative dimensions, never both. */
87
+ export declare type Bounds2Options =
88
+ | (Bounds2Input & {
89
+ /** Preserves the size query when snapshotting an existing fluent value. */
90
+ readonly size?: Bounds2["size"];
91
+ /** Preserves the center query when snapshotting an existing fluent value. */
92
+ readonly center?: Bounds2["center"];
93
+ })
94
+ | {
95
+ /** Nonnegative XY dimensions in millimetres. */
96
+ readonly size: Vector2Data;
97
+ /** Center on the origin; false starts at the origin. Defaults to true. */
98
+ readonly center?: boolean;
99
+ /** Minimum coordinates are unavailable when size is supplied. */
100
+ readonly min?: never;
101
+ /** Maximum coordinates are unavailable when size is supplied. */
102
+ readonly max?: never;
103
+ };
104
+
85
105
  /** Immutable finite XYZ bounds in millimetres, with tuple coordinates for data interoperability. */
86
106
  export declare interface Bounds3 extends Bounds3Data {
87
107
  /** Returns nonnegative X/Y/Z dimensions in millimetres, including zero extents. */
@@ -95,14 +115,15 @@ export declare interface Bounds3 extends Bounds3Data {
95
115
  }
96
116
 
97
117
  /**
98
- * Snapshots finite ordered XYZ bounds in millimetres as an immutable fluent value.
118
+ * Constructs immutable finite XYZ bounds from ordered extrema or nonnegative size in millimetres.
99
119
  *
100
120
  * Zero extents are valid. Invalid dimensions, nonfinite coordinates, reversed bounds and
101
121
  * overflowing extents throw `INVALID_ARGUMENT` GeometryError. Use `toData()` for plain records.
122
+ * Size construction centers on the origin unless `center` is false. Size and extrema are exclusive.
102
123
  * Compiled Generator packages passing these values to host recipes or computed data require
103
- * runtime 8.0.0 or newer in major 8.
124
+ * runtime 9.0.0 or newer in major 9.
104
125
  */
105
- export declare function bounds3(input: Bounds3Input): Bounds3;
126
+ export declare function bounds3(input: Bounds3Options): Bounds3;
106
127
 
107
128
  /** Plain axis-aligned XYZ bounds for interchange; use bounds3 for immutable measurement methods. */
108
129
  export declare interface Bounds3Data {
@@ -115,6 +136,25 @@ export declare interface Bounds3Data {
115
136
  /** An immutable XYZ bounds value or its plain min/max representation. */
116
137
  export declare type Bounds3Input = Bounds3 | Bounds3Data;
117
138
 
139
+ /** XYZ bounds construction from existing extrema or nonnegative dimensions, never both. */
140
+ export declare type Bounds3Options =
141
+ | (Bounds3Input & {
142
+ /** Preserves the size query when snapshotting an existing fluent value. */
143
+ readonly size?: Bounds3["size"];
144
+ /** Preserves the center query when snapshotting an existing fluent value. */
145
+ readonly center?: Bounds3["center"];
146
+ })
147
+ | {
148
+ /** Nonnegative XYZ dimensions in millimetres. */
149
+ readonly size: Vector3Data;
150
+ /** Center on the origin; false starts at the origin. Defaults to true. */
151
+ readonly center?: boolean;
152
+ /** Minimum coordinates are unavailable when size is supplied. */
153
+ readonly min?: never;
154
+ /** Maximum coordinates are unavailable when size is supplied. */
155
+ readonly max?: never;
156
+ };
157
+
118
158
  /**
119
159
  * Axis-aligned box with uniform or disjoint named edge/group treatments.
120
160
  *
@@ -212,20 +252,18 @@ export declare interface ChamferedEdgeTreatment {
212
252
  */
213
253
  export declare function circle(options: CircleOptions): Section;
214
254
 
215
- /**
216
- * Circular profile dimensions with exactly one radius or diameter and explicit sampling.
217
- */
255
+ /** Circular profile dimensions with exactly one radius or diameter and explicit sampling. */
218
256
  export declare type CircleContourOptions = CircularPrimitiveOptions &
219
257
  RadialSizingOptions &
220
258
  (
221
259
  | {
222
- /** Positive nominal radius in millimetres; mutually exclusive with diameter. */
260
+ /** Positive nominal radius in millimetres. */
223
261
  readonly radius: number;
224
- /** Full diameter is unavailable when radius is supplied. */
262
+ /** Diameter is unavailable when radius is supplied. */
225
263
  readonly diameter?: never;
226
264
  }
227
265
  | {
228
- /** Positive full diameter in millimetres; mutually exclusive with radius. */
266
+ /** Positive nominal diameter in millimetres. */
229
267
  readonly diameter: number;
230
268
  /** Radius is unavailable when diameter is supplied. */
231
269
  readonly radius?: never;
@@ -844,6 +882,107 @@ export declare interface HelicalThreadSolidMeshPreflight {
844
882
  readonly estimatedTriangles: number;
845
883
  }
846
884
 
885
+ /**
886
+ * Declares a +Z hole or blind-pocket cutter with explicit end overrun in millimetres.
887
+ * Choose exactly one circular diameter or existing Section. A 45-degree entry chamfer
888
+ * supports one strictly convex contour without holes; plain profiles may have any topology.
889
+ * Circular entries retain nominal frustum radii; profile entries offset the supplied polygon edges.
890
+ * Circular head recesses are mutually exclusive with entryChamfer. Both overrun ends default
891
+ * to zero, so the nominal bottom remains at Z=0 and blind pocket floors are preserved.
892
+ * Existing Section samples are authoritative; limits and unspecified circular sampling belong
893
+ * to the evaluating host. Compiled packages require runtime major 9.
894
+ *
895
+ * @example A blind hex pocket with an open top
896
+ * ```ts
897
+ * holeCutter({
898
+ * profile: regularPolygon({ sides: 6, radius: 3.5, sizing: "face", rotation: 30 }),
899
+ * height: 12, entryChamfer: 0.5, overrun: { top: 0.05 },
900
+ * });
901
+ * ```
902
+ */
903
+ export declare function holeCutter(options: HoleCutterOptions): Solid;
904
+
905
+ /**
906
+ * A deferred +Z hole or pocket cutter, with exactly one circular diameter or existing Section.
907
+ * Profile entry chamfers expand one strictly convex contour without holes by parallel-edge offsets;
908
+ * the supplied sampled boundary remains authoritative. Plain profile cutters accept any Section.
909
+ * Circular entry chamfers retain nominal circular/frustum radii under the selected radial sizing.
910
+ */
911
+ export declare type HoleCutterOptions = {
912
+ /** Positive nominal depth along +Z, starting exactly at Z=0. */
913
+ readonly height: number;
914
+ /** Opening carrying the recess or entry chamfer; defaults to top. */
915
+ readonly face?: "bottom" | "top";
916
+ /** Extra length outside each nominal face; both ends default to zero. */
917
+ readonly overrun?: HoleCutterOverrun;
918
+ /** Operation-level physical sampling; an existing Section retains its sampled boundary. */
919
+ readonly resolution?: GeometryResolution;
920
+ /** Local allocation ceilings may only lower the evaluating host's limits. */
921
+ readonly limits?: Partial<ModelingLimits>;
922
+ } & (
923
+ | (CircularPrimitiveOptions &
924
+ RadialSizingOptions & {
925
+ /** Positive nominal circular bore diameter in millimetres. */
926
+ readonly diameter: number;
927
+ /** Unavailable in this input form. */
928
+ readonly profile?: never;
929
+ } & (
930
+ | {
931
+ /** Nonnegative 45-degree entry setback; must be smaller than height. Defaults to zero. */
932
+ readonly entryChamfer?: number;
933
+ /** Unavailable in this input form. */
934
+ readonly recess?: never;
935
+ }
936
+ | {
937
+ /** Circular head seating; mutually exclusive with entryChamfer. */
938
+ readonly recess: HoleCutterRecess;
939
+ /** Unavailable in this input form. */
940
+ readonly entryChamfer?: never;
941
+ }
942
+ ))
943
+ | {
944
+ /** Local XY material to remove, retaining its position, orientation and physical sampling. */
945
+ readonly profile: Section;
946
+ /** Unavailable in this input form. */
947
+ readonly diameter?: never;
948
+ /** Unavailable in this input form. */
949
+ readonly recess?: never;
950
+ /** Unavailable in this input form. */
951
+ readonly segments?: never;
952
+ /** Unavailable in this input form. */
953
+ readonly sizing?: never;
954
+ /** Nonnegative 45-degree entry setback for a strictly convex single contour without holes. */
955
+ readonly entryChamfer?: number;
956
+ }
957
+ );
958
+
959
+ /** Explicit extra cutter length outside the nominal Z=0..height interval, in millimetres. */
960
+ export declare interface HoleCutterOverrun {
961
+ /** Extension below Z=0. Omitted means zero, preserving a blind pocket's floor. */
962
+ readonly bottom?: number;
963
+ /** Extension above Z=height. Omitted means zero. */
964
+ readonly top?: number;
965
+ }
966
+
967
+ /** Circular screw seating dimensions in millimetres; allowances belong to the caller. */
968
+ export declare type HoleCutterRecess =
969
+ | {
970
+ /** Cylindrical seat. */
971
+ readonly kind: "counterbore";
972
+ /** Positive seat diameter greater than the bore, in millimetres. */
973
+ readonly diameter: number;
974
+ /** Positive seat depth no greater than height, in millimetres. */
975
+ readonly depth: number;
976
+ }
977
+ | {
978
+ /** Conical seat. */
979
+ readonly kind: "countersink";
980
+ /** Positive mouth diameter greater than the bore, in millimetres. */
981
+ readonly diameter: number;
982
+ /** Full included angle strictly between zero and 180 degrees; derived depth must fit height. */
983
+ readonly includedAngle: number;
984
+ };
985
+
847
986
  /**
848
987
  * Convex hull of points or solids.
849
988
  *
@@ -1046,10 +1185,10 @@ export declare interface KnuckleHinge {
1046
1185
  * otherwise disconnected intervals. Returns portable recipes without initializing the engine.
1047
1186
  * Unspecified resolution inherits the evaluating session. Axis direction is +X with +Z up.
1048
1187
  *
1049
- * Barrel end chamfers affect outer rims only; webs have square edges. Consumers own plates, screw holes,
1188
+ * Each half's `chamfer` bevels its barrel outer rims and all web edges. Consumers own plates, screw holes,
1050
1189
  * pin retention, fit policy, and part placement. Added mounting material must preserve the bores.
1051
1190
  * No opening range or collision freedom is implied for arbitrary caller attachments.
1052
- * Compiled Generator packages using this operation require runtime 8.0.0 or newer in major 8.
1191
+ * Compiled Generator packages using this operation require runtime 9.0.0 or newer in major 9.
1053
1192
  *
1054
1193
  * @example Integral-pin hinge with two mounting webs
1055
1194
  * ```ts
@@ -1081,20 +1220,26 @@ export declare interface KnuckleHingeBaseSpec {
1081
1220
  readonly axialGap: number;
1082
1221
  }
1083
1222
 
1084
- /** Optional mounting and outer-rim treatment for one knuckle owner. */
1223
+ /** Optional mounting and edge treatment for one knuckle owner. */
1085
1224
  export declare interface KnuckleHingeHalfOptions {
1086
1225
  /** Omit for barrels only. Each interval receives one web; disconnected intervals need caller geometry. */
1087
1226
  readonly web?: KnuckleHingeWeb;
1088
- /** 45° setback in millimetres at both ends of every barrel; defaults to 0. */
1089
- readonly barrelChamfer?: number;
1227
+ /**
1228
+ * Nonnegative 45° setback in millimetres on barrel outer rims and exposed web edges; defaults to 0.
1229
+ * The root at the pin centreline stays square so its faces can merge with the barrel.
1230
+ *
1231
+ * Must leave a positive barrel wall and axial band. Web thickness must exceed twice the setback;
1232
+ * web reach and knuckle length must exceed `2 * Math.SQRT2 * chamfer` to retain the end contours.
1233
+ */
1234
+ readonly chamfer?: number;
1090
1235
  }
1091
1236
 
1092
1237
  /** Joint declaration with independent attachments; unspecified sampling inherits the evaluating host. */
1093
1238
  export declare type KnuckleHingeOptions = KnuckleHingeSpec &
1094
1239
  KnuckleHingeSamplingOptions & {
1095
- /** Optional attachment and rim treatment for A, which owns an integral pin when present. */
1240
+ /** Optional attachment and edge treatment for A, which owns an integral pin when present. */
1096
1241
  readonly halfA?: KnuckleHingeHalfOptions;
1097
- /** Optional attachment and rim treatment for B, which always carries a running bore. */
1242
+ /** Optional attachment and edge treatment for B, which always carries a running bore. */
1098
1243
  readonly halfB?: KnuckleHingeHalfOptions;
1099
1244
  };
1100
1245
 
@@ -1141,7 +1286,7 @@ export declare interface KnuckleHingeWeb {
1141
1286
  readonly reach: number;
1142
1287
  /** Lower-face Z coordinate in the pin-centered frame, in millimetres. Must overlap the barrel's interior. */
1143
1288
  readonly zMin: number;
1144
- /** Positive thickness along +Z. Webs have square edges and span their own barrel intervals. */
1289
+ /** Positive thickness along +Z. Each web spans its own barrel interval. */
1145
1290
  readonly thickness: number;
1146
1291
  }
1147
1292
 
@@ -2421,6 +2566,8 @@ export declare function svgSection(
2421
2566
  * Bounded SVG document sampling. Center origin uses the final painted bounds.
2422
2567
  */
2423
2568
  export declare interface SvgSectionOptions {
2569
+ /** Fit painted bounds uniformly inside positioned XY millimetre bounds; adaptive resolution applies at the fitted size. */
2570
+ readonly fit?: Bounds2Input;
2424
2571
  /** Local allocation ceilings may only lower the configured engine policy. */
2425
2572
  readonly limits?: Partial<GeometrySamplingLimits>;
2426
2573
  /** Exact circular tessellation count overriding physical sampling. */
@@ -407,12 +407,15 @@ export const positions = layoutRow([measured, envelope], { gap: 2 });
407
407
 
408
408
 
409
409
  Factories snapshot finite, ordered coordinates with finite extents; zero extents are valid.
410
+ Alternatively construct from nonnegative dimensions with `bounds2({ size: [30, 18] })` or
411
+ `bounds3({ size: [30, 18, 8], center: false })`. Size construction centers on the origin by default;
412
+ size and min/max construction are mutually exclusive.
410
413
  `min` and `max` are frozen tuples, and `toData()` returns the value's stable frozen plain record.
411
414
  Path `bounds()` queries return matching fluent bounds, or `undefined` for an empty path.
412
415
  Mesh and region measurements, inspection results, and engine snapshots retain plain
413
416
  `Bounds2Data` or `Bounds3Data`; wrap a measurement when you need fluent queries.
414
417
  Compiled Generator packages passing bounds values to host recipes or computed data require
415
- runtime `8.0.0` or newer in major 8.
418
+ runtime `9.0.0` or newer in major 9.
416
419
 
417
420
  Keep [`fitBounds`](../reference/geometry/fitBounds.md) and
418
421
  [`layoutRow`](../reference/geometry/layoutRow.md) as standalone algorithms: they compute placement