@metamesh/modeling 0.15.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.
- package/CHANGELOG.md +59 -0
- package/README.md +54 -6
- package/dist/api/engine.d.ts +4 -3
- package/dist/api/geometry.d.ts +608 -266
- package/dist/api/index.d.ts +516 -110
- package/dist/api/text.d.ts +6 -6
- package/dist/docs/guides/concepts.md +298 -106
- package/dist/docs/guides/fonts.md +9 -8
- package/dist/docs/guides/fundamentals.md +17 -21
- package/dist/docs/guides/generation.md +24 -23
- package/dist/docs/guides/hosting.md +25 -20
- package/dist/docs/guides/recipes.md +68 -36
- package/dist/docs/guides/standalone-model.md +42 -0
- package/dist/docs/manifest.json +1034 -296
- package/dist/docs/reference/engine/Export3mfOptions.md +1 -1
- package/dist/docs/reference/engine/ExportMeshPart.md +1 -1
- package/dist/docs/reference/engine/GenerationOptions.md +1 -1
- package/dist/docs/reference/engine/GeometryResource.md +1 -1
- package/dist/docs/reference/engine/ModelDependencies.md +1 -1
- package/dist/docs/reference/engine/ModelEngine.md +1 -1
- package/dist/docs/reference/engine/ModelEngineOptions.md +1 -1
- package/dist/docs/reference/engine/ModelSession.md +1 -1
- package/dist/docs/reference/engine/ModelSnapshot.md +2 -2
- package/dist/docs/reference/engine/SessionOptions.md +1 -1
- package/dist/docs/reference/engine/SnapshotPart.md +7 -4
- package/dist/docs/reference/engine/categories/host-lifecycle.md +8 -3
- package/dist/docs/reference/engine/createModelEngine.md +1 -1
- package/dist/docs/reference/engine/defaultModelingLimits.md +1 -1
- package/dist/docs/reference/engine/modelingWasmUrl.md +1 -1
- package/dist/docs/reference/engine/validateModel.md +1 -1
- package/dist/docs/reference/engine.md +6 -2
- package/dist/docs/reference/geometry/AcmeThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/AlignedCircularSegmentsOptions.md +1 -1
- package/dist/docs/reference/geometry/Anchor3-type.md +6 -5
- package/dist/docs/reference/geometry/ArcCurve2.md +7 -3
- package/dist/docs/reference/geometry/ArcCurve3.md +9 -5
- package/dist/docs/reference/geometry/AttachOptions.md +2 -1
- package/dist/docs/reference/geometry/AxisAngleRotation3.md +2 -1
- package/dist/docs/reference/geometry/Bounds2-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds2Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds2Input.md +21 -0
- package/dist/docs/reference/geometry/Bounds2Options.md +72 -0
- package/dist/docs/reference/geometry/Bounds3-type.md +127 -0
- package/dist/docs/reference/geometry/Bounds3Data.md +45 -0
- package/dist/docs/reference/geometry/Bounds3Input.md +21 -0
- package/dist/docs/reference/geometry/Bounds3Options.md +72 -0
- package/dist/docs/reference/geometry/BoundsFit2.md +6 -5
- package/dist/docs/reference/geometry/BoundsFit3.md +6 -5
- package/dist/docs/reference/geometry/BoundsFitOptions.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/BoxAnchorOptions.md +5 -4
- package/dist/docs/reference/geometry/BoxEdge.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/geometry/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/geometry/BoxOptions.md +3 -3
- package/dist/docs/reference/geometry/ButtressPressureFlankSide.md +8 -1
- package/dist/docs/reference/geometry/ButtressThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/CircleContourOptions.md +5 -1
- package/dist/docs/reference/geometry/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularResolutionOptions.md +1 -1
- package/dist/docs/reference/geometry/CircularSampling.md +41 -0
- package/dist/docs/reference/geometry/CircularSamplingOptions.md +14 -0
- package/dist/docs/reference/geometry/ClearanceHoleDimensions.md +6 -1
- package/dist/docs/reference/geometry/ClearanceHoleFit.md +8 -1
- package/dist/docs/reference/geometry/CompensatedThreadDiameters.md +6 -1
- package/dist/docs/reference/geometry/Contour.md +10 -4
- package/dist/docs/reference/geometry/ContourCurve.md +5 -1
- package/dist/docs/reference/geometry/ContourPoint.md +6 -1
- package/dist/docs/reference/geometry/ContourSegment.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingComponent.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingContour.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfile.md +5 -1
- package/dist/docs/reference/geometry/CorrespondingProfileStation.md +5 -1
- package/dist/docs/reference/geometry/CubicBezierCurve2.md +10 -6
- package/dist/docs/reference/geometry/CubicBezierCurve3.md +10 -6
- package/dist/docs/reference/geometry/Curve2.md +5 -1
- package/dist/docs/reference/geometry/Curve3.md +5 -1
- package/dist/docs/reference/geometry/CurveSamplingOptions.md +5 -1
- package/dist/docs/reference/geometry/CustomThreadProfileSpec.md +7 -3
- package/dist/docs/reference/geometry/CylinderAnchorFace.md +2 -1
- package/dist/docs/reference/geometry/CylinderAnchorOptions.md +4 -3
- package/dist/docs/reference/geometry/CylinderOptions.md +1 -1
- package/dist/docs/reference/geometry/CylindricalGearDimensions.md +6 -1
- package/dist/docs/reference/geometry/CylindricalGearMeshKind.md +8 -1
- package/dist/docs/reference/geometry/CylindricalGearOutlineOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairDimensions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionOptions.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearPairMotionReport.md +6 -1
- package/dist/docs/reference/geometry/CylindricalGearPairSpec.md +5 -1
- package/dist/docs/reference/geometry/CylindricalGearSpec.md +6 -1
- package/dist/docs/reference/geometry/DEFAULT_GEOMETRY_TOLERANCE.md +1 -1
- package/dist/docs/reference/geometry/EdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/EllipseContourOptions.md +7 -3
- package/dist/docs/reference/geometry/EndTreatments.md +1 -1
- package/dist/docs/reference/geometry/ExtrudeOptions.md +5 -1
- package/dist/docs/reference/geometry/ExtrusionSamplingOptions.md +5 -1
- package/dist/docs/reference/geometry/FittedTextLayout.md +7 -3
- package/dist/docs/reference/geometry/Frame3.md +10 -6
- package/dist/docs/reference/geometry/GeometryError.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorCode.md +1 -1
- package/dist/docs/reference/geometry/GeometryErrorContext.md +1 -1
- package/dist/docs/reference/geometry/GeometryResolution.md +1 -1
- package/dist/docs/reference/geometry/GeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/geometry/GridPatternOptions.md +4 -4
- package/dist/docs/reference/geometry/HeightfieldMeshLimits.md +5 -1
- package/dist/docs/reference/geometry/HeightfieldOptions.md +9 -5
- package/dist/docs/reference/geometry/HeightfieldPreflight.md +9 -4
- package/dist/docs/reference/geometry/HelicalThreadRidgeMeshOptions.md +5 -1
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshOptions.md +5 -1
- package/dist/docs/reference/geometry/HelicalThreadSolidMeshPreflight.md +7 -2
- package/dist/docs/reference/geometry/IDENTITY_TRANSFORM3.md +4 -3
- package/dist/docs/reference/geometry/InternalThreadCutterOptions.md +5 -1
- package/dist/docs/reference/geometry/KnuckleHingeBaseSpec.md +82 -0
- package/dist/docs/reference/geometry/KnuckleHingeDimensions.md +148 -0
- package/dist/docs/reference/geometry/KnuckleHingeInterval.md +46 -0
- package/dist/docs/reference/geometry/KnuckleHingeSamplingOptions.md +51 -0
- package/dist/docs/reference/geometry/KnuckleHingeSpec.md +22 -0
- package/dist/docs/reference/geometry/LineCurve2.md +8 -4
- package/dist/docs/reference/geometry/LineCurve3.md +8 -4
- package/dist/docs/reference/geometry/LinearPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/LoftCorrespondence.md +6 -1
- package/dist/docs/reference/geometry/LoftMeshStation.md +5 -1
- package/dist/docs/reference/geometry/LoftOptions.md +5 -1
- package/dist/docs/reference/geometry/LoftPlacement.md +5 -1
- package/dist/docs/reference/geometry/METRIC_FASTENER_STANDARDS.md +5 -1
- package/dist/docs/reference/geometry/MatchProfilesOptions.md +5 -1
- package/dist/docs/reference/geometry/MetricFastenerSize.md +9 -2
- package/dist/docs/reference/geometry/MetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/MetricHexNutDimensions.md +6 -1
- package/dist/docs/reference/geometry/MetricSocketCapHeadDimensions.md +6 -1
- package/dist/docs/reference/geometry/ModelingLimits.md +1 -1
- package/dist/docs/reference/geometry/PRINTABLE_THREAD_FIT_POLICIES.md +5 -1
- package/dist/docs/reference/geometry/Path2-type.md +12 -8
- package/dist/docs/reference/geometry/Path2Data.md +40 -4
- package/dist/docs/reference/geometry/Path2Input.md +8 -3
- package/dist/docs/reference/geometry/Path3-type.md +12 -8
- package/dist/docs/reference/geometry/Path3Data.md +40 -4
- package/dist/docs/reference/geometry/Path3Input.md +8 -3
- package/dist/docs/reference/geometry/PathFrame.md +9 -5
- package/dist/docs/reference/geometry/PathLocation.md +5 -1
- package/dist/docs/reference/geometry/PathNormalGuide.md +8 -4
- package/dist/docs/reference/geometry/PathOptions.md +5 -1
- package/dist/docs/reference/geometry/PathPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/PathPlacement.md +8 -4
- package/dist/docs/reference/geometry/PathResamplingOptions.md +5 -1
- package/dist/docs/reference/geometry/Pivot2Options.md +2 -1
- package/dist/docs/reference/geometry/Pivot3Options.md +2 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationFallbackReason.md +8 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationOptions.md +5 -1
- package/dist/docs/reference/geometry/PlanarMeshOptimizationResult.md +5 -1
- package/dist/docs/reference/geometry/PlanarPatchQuality.md +7 -3
- package/dist/docs/reference/geometry/PolygonData.md +7 -2
- package/dist/docs/reference/geometry/PolylineResamplingOptions.md +5 -1
- package/dist/docs/reference/geometry/PrimitiveAttachment.md +1 -1
- package/dist/docs/reference/geometry/PrimitiveAttachmentOptions.md +1 -1
- package/dist/docs/reference/geometry/PrintableThreadFit.md +8 -1
- package/dist/docs/reference/geometry/PrintableThreadFitPolicy.md +6 -1
- package/dist/docs/reference/geometry/Profile.md +8 -2
- package/dist/docs/reference/geometry/ProfileComponent2.md +5 -1
- package/dist/docs/reference/geometry/ProfileContour2.md +8 -2
- package/dist/docs/reference/geometry/ProfileSpan2.md +7 -3
- package/dist/docs/reference/geometry/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/geometry/RackPitchDimensions.md +6 -1
- package/dist/docs/reference/geometry/RackPitchSpec.md +6 -1
- package/dist/docs/reference/geometry/RadialPatternOptions.md +1 -1
- package/dist/docs/reference/geometry/RadialSizing.md +1 -1
- package/dist/docs/reference/geometry/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/geometry/RectangleContourOptions.md +7 -3
- package/dist/docs/reference/geometry/RectangleCornerTreatment.md +5 -1
- package/dist/docs/reference/geometry/RectangleCornerTreatments.md +5 -1
- package/dist/docs/reference/geometry/RectangleProfileOptions.md +7 -3
- package/dist/docs/reference/geometry/RegionData.md +6 -2
- package/dist/docs/reference/geometry/RegularPolygonContourOptions.md +5 -1
- package/dist/docs/reference/geometry/ResolvedGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/RevolveOptions.md +5 -1
- package/dist/docs/reference/geometry/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/RowLayoutOptions.md +2 -1
- package/dist/docs/reference/geometry/SampleContourOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/SampleSideProfileOptions.md +5 -1
- package/dist/docs/reference/geometry/SampledCurve2.md +8 -4
- package/dist/docs/reference/geometry/SampledCurve3.md +8 -4
- package/dist/docs/reference/geometry/SampledThreadHelices.md +7 -3
- package/dist/docs/reference/geometry/SideProfileCurve.md +5 -1
- package/dist/docs/reference/geometry/SideProfilePoint.md +6 -1
- package/dist/docs/reference/geometry/SideProfileSegment.md +5 -1
- package/dist/docs/reference/geometry/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/geometry/SolidMeshValidationOptions.md +5 -1
- package/dist/docs/reference/geometry/SphereOptions.md +1 -1
- package/dist/docs/reference/geometry/SquareThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/StrokeCap.md +8 -1
- package/dist/docs/reference/geometry/StrokeJoin.md +8 -1
- package/dist/docs/reference/geometry/StrokeOptions.md +5 -1
- package/dist/docs/reference/geometry/SvgImportOptions.md +20 -1
- package/dist/docs/reference/geometry/SvgRegionPreflight.md +21 -2
- package/dist/docs/reference/geometry/SvgRegionPreflightGeometryMetrics.md +7 -3
- package/dist/docs/reference/geometry/SvgRegionPreflightRepairs.md +6 -1
- package/dist/docs/reference/geometry/SvgRegionPreflightSourceMetrics.md +6 -1
- package/dist/docs/reference/geometry/SweepOptions.md +5 -1
- package/dist/docs/reference/geometry/SweepOrientation.md +5 -1
- package/dist/docs/reference/geometry/ThreadBevelOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCircularSegmentsOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadCompensationOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadEndStyle.md +8 -1
- package/dist/docs/reference/geometry/ThreadEndTreatmentOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadHandedness.md +8 -1
- package/dist/docs/reference/geometry/ThreadHelixOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadLeadInEnvelope.md +8 -1
- package/dist/docs/reference/geometry/ThreadLeadInShape.md +8 -1
- package/dist/docs/reference/geometry/ThreadProfile-type.md +7 -3
- package/dist/docs/reference/geometry/ThreadProfileBaseSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/ThreadRole.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutBevel.md +8 -1
- package/dist/docs/reference/geometry/ThreadedNutOptions.md +5 -1
- package/dist/docs/reference/geometry/ThreadedNutPreflight.md +7 -3
- package/dist/docs/reference/geometry/ThreadedNutShape.md +8 -1
- package/dist/docs/reference/geometry/ThreadedRodOptions.md +5 -1
- package/dist/docs/reference/geometry/TorusOptions.md +1 -1
- package/dist/docs/reference/geometry/Transform2-type.md +6 -5
- package/dist/docs/reference/geometry/Transform2Data.md +15 -0
- package/dist/docs/reference/geometry/Transform2Input.md +4 -3
- package/dist/docs/reference/geometry/Transform3-type.md +6 -5
- package/dist/docs/reference/geometry/Transform3Data.md +18 -0
- package/dist/docs/reference/geometry/Transform3Input.md +4 -3
- package/dist/docs/reference/geometry/TrapezoidalThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/TriangleMesh.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshAnalysis.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshAnalysisOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshMeasurements.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshQualityOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshQualityReport.md +5 -1
- package/dist/docs/reference/geometry/TriangleMeshSignature.md +7 -3
- package/dist/docs/reference/geometry/TriangleMeshSignatureOptions.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshSignatureTolerances.md +6 -1
- package/dist/docs/reference/geometry/TriangleMeshValidationOptions.md +5 -1
- package/dist/docs/reference/geometry/TriangularThreadProfileSpec.md +5 -1
- package/dist/docs/reference/geometry/TubeOptions.md +1 -1
- package/dist/docs/reference/geometry/Vector2-type.md +6 -5
- package/dist/docs/reference/geometry/Vector2Data.md +15 -0
- package/dist/docs/reference/geometry/Vector2Input.md +4 -3
- package/dist/docs/reference/geometry/Vector3-type.md +6 -5
- package/dist/docs/reference/geometry/Vector3Data.md +15 -0
- package/dist/docs/reference/geometry/Vector3Input.md +4 -3
- package/dist/docs/reference/geometry/VectorTextArcBaseline.md +6 -1
- package/dist/docs/reference/geometry/VectorTextLayout.md +5 -1
- package/dist/docs/reference/geometry/VectorTextLayoutOptions.md +7 -3
- package/dist/docs/reference/geometry/VectorTextMetrics.md +7 -3
- package/dist/docs/reference/geometry/VectorTextOptions.md +5 -1
- package/dist/docs/reference/geometry/add2.md +7 -6
- package/dist/docs/reference/geometry/add3.md +7 -6
- package/dist/docs/reference/geometry/analyzeTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/analyzeTriangleMeshQuality.md +5 -1
- package/dist/docs/reference/geometry/anchor3.md +2 -1
- package/dist/docs/reference/geometry/anchorFrame3.md +5 -1
- package/dist/docs/reference/geometry/applyTransformDirection3.md +8 -7
- package/dist/docs/reference/geometry/applyTransformPoint3.md +8 -7
- package/dist/docs/reference/geometry/attachmentTransform3.md +5 -4
- package/dist/docs/reference/geometry/bounds2.md +39 -0
- package/dist/docs/reference/geometry/bounds3.md +39 -0
- package/dist/docs/reference/geometry/boundsCenter.md +12 -11
- package/dist/docs/reference/geometry/boundsSize.md +12 -11
- package/dist/docs/reference/geometry/boxAnchor3.md +4 -3
- package/dist/docs/reference/geometry/categories/bounds-layout.md +25 -9
- package/dist/docs/reference/geometry/categories/curves-paths.md +21 -9
- package/dist/docs/reference/geometry/categories/mechanical.md +22 -10
- package/dist/docs/reference/geometry/categories/meshes.md +16 -7
- package/dist/docs/reference/geometry/categories/pattern-placement.md +6 -4
- package/dist/docs/reference/geometry/categories/primitive-options.md +8 -2
- package/dist/docs/reference/geometry/categories/profiles-regions.md +21 -12
- package/dist/docs/reference/geometry/categories/resolution-errors.md +8 -3
- package/dist/docs/reference/geometry/categories/transforms-math.md +21 -12
- package/dist/docs/reference/geometry/categories/vector-import.md +11 -5
- package/dist/docs/reference/geometry/circleContour.md +5 -1
- package/dist/docs/reference/geometry/closeToAxis.md +14 -5
- package/dist/docs/reference/geometry/compensateThreadDiameters.md +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileAxially.md +5 -1
- package/dist/docs/reference/geometry/compensateThreadProfileForFaceting.md +5 -1
- package/dist/docs/reference/geometry/composeTransform3.md +7 -6
- package/dist/docs/reference/geometry/computeClosedParallelTransportFrames.md +5 -1
- package/dist/docs/reference/geometry/computeParallelTransportFrames.md +11 -2
- package/dist/docs/reference/geometry/computeTriangleMeshCentroid.md +13 -5
- package/dist/docs/reference/geometry/computeTriangleMeshSignature.md +5 -1
- package/dist/docs/reference/geometry/contourContainsPoint.md +8 -4
- package/dist/docs/reference/geometry/cross2.md +6 -5
- package/dist/docs/reference/geometry/cross3.md +7 -6
- package/dist/docs/reference/geometry/cylinderAnchor3.md +3 -2
- package/dist/docs/reference/geometry/defaultGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/distance2.md +6 -5
- package/dist/docs/reference/geometry/distance3.md +6 -5
- package/dist/docs/reference/geometry/distributeAlongPath.md +5 -1
- package/dist/docs/reference/geometry/dot2.md +6 -5
- package/dist/docs/reference/geometry/dot3.md +6 -5
- package/dist/docs/reference/geometry/ellipseContour.md +5 -1
- package/dist/docs/reference/geometry/eulerTransform3.md +7 -6
- package/dist/docs/reference/geometry/extrudeMesh.md +5 -1
- package/dist/docs/reference/geometry/fitBounds.md +10 -9
- package/dist/docs/reference/geometry/fitTextLayout.md +13 -5
- package/dist/docs/reference/geometry/frameTransform3.md +5 -4
- package/dist/docs/reference/geometry/getMetricClearanceHoleDiameter.md +5 -1
- package/dist/docs/reference/geometry/getMetricFastenerStandard.md +5 -1
- package/dist/docs/reference/geometry/gridPatternTransforms.md +4 -4
- package/dist/docs/reference/geometry/heightfieldMesh.md +11 -2
- package/dist/docs/reference/geometry/helicalThreadRidgeMesh.md +5 -1
- package/dist/docs/reference/geometry/helicalThreadSolidMesh.md +5 -1
- package/dist/docs/reference/geometry/inverseTransform3.md +6 -5
- package/dist/docs/reference/geometry/isGeometryError.md +5 -2
- package/dist/docs/reference/geometry/joinTriangleMeshes.md +5 -1
- package/dist/docs/reference/geometry/layoutRow.md +11 -7
- package/dist/docs/reference/geometry/length2.md +5 -4
- package/dist/docs/reference/geometry/length3.md +5 -4
- package/dist/docs/reference/geometry/lerp2.md +7 -6
- package/dist/docs/reference/geometry/lerp3.md +7 -6
- package/dist/docs/reference/geometry/linearPatternTransforms.md +4 -4
- package/dist/docs/reference/geometry/loftMesh.md +5 -1
- package/dist/docs/reference/geometry/matchProfiles.md +11 -2
- package/dist/docs/reference/geometry/measureInternalCylindricalGearPairMotion.md +5 -1
- package/dist/docs/reference/geometry/meshBounds.md +8 -4
- package/dist/docs/reference/geometry/minimumCylindricalGearToothCountWithoutUndercut.md +5 -1
- package/dist/docs/reference/geometry/normalize2.md +10 -6
- package/dist/docs/reference/geometry/normalize3.md +10 -6
- package/dist/docs/reference/geometry/normalizeContour.md +8 -4
- package/dist/docs/reference/geometry/normalizePolygon.md +5 -1
- package/dist/docs/reference/geometry/normalizeRegion.md +5 -1
- package/dist/docs/reference/geometry/optimizePlanarPatches.md +5 -1
- package/dist/docs/reference/geometry/path2.md +14 -2
- package/dist/docs/reference/geometry/path3.md +8 -1
- package/dist/docs/reference/geometry/pathPatternTransforms.md +9 -5
- package/dist/docs/reference/geometry/preflightHeightfield.md +11 -2
- package/dist/docs/reference/geometry/preflightHelicalThreadSolidMesh.md +11 -2
- package/dist/docs/reference/geometry/preflightInternalThreadCutter.md +13 -2
- package/dist/docs/reference/geometry/preflightSvgRegion.md +24 -2
- package/dist/docs/reference/geometry/preflightThreadedNut.md +12 -2
- package/dist/docs/reference/geometry/preflightThreadedRod.md +12 -2
- package/dist/docs/reference/geometry/projectOntoPlane3.md +7 -6
- package/dist/docs/reference/geometry/radialPatternTransforms.md +4 -4
- package/dist/docs/reference/geometry/rectangleContour.md +10 -3
- package/dist/docs/reference/geometry/rectangleProfile.md +10 -2
- package/dist/docs/reference/geometry/regionArea.md +5 -1
- package/dist/docs/reference/geometry/regionBounds.md +8 -4
- package/dist/docs/reference/geometry/regularPolygonContour.md +8 -4
- package/dist/docs/reference/geometry/resamplePolyline2.md +8 -4
- package/dist/docs/reference/geometry/resamplePolyline3.md +8 -4
- package/dist/docs/reference/geometry/resolveAlignedCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveArcSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCircularSampling.md +40 -0
- package/dist/docs/reference/geometry/resolveCircularSegments.md +1 -1
- package/dist/docs/reference/geometry/resolveCylindricalGear.md +5 -1
- package/dist/docs/reference/geometry/resolveCylindricalGearPair.md +5 -1
- package/dist/docs/reference/geometry/resolveExtrusionDivisions.md +5 -1
- package/dist/docs/reference/geometry/resolveGeometrySamplingLimits.md +5 -1
- package/dist/docs/reference/geometry/resolveGeometryTolerance.md +1 -1
- package/dist/docs/reference/geometry/resolveKnuckleHinge.md +59 -0
- package/dist/docs/reference/geometry/resolvePrintableThreadFitPolicy.md +5 -1
- package/dist/docs/reference/geometry/resolveRackPitch.md +5 -1
- package/dist/docs/reference/geometry/resolveThreadCircularSegments.md +5 -1
- package/dist/docs/reference/geometry/reverseTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/revolveMesh.md +5 -1
- package/dist/docs/reference/geometry/rotate2.md +6 -5
- package/dist/docs/reference/geometry/rotationTransform3.md +7 -6
- package/dist/docs/reference/geometry/roundClosedPolylinePath.md +8 -4
- package/dist/docs/reference/geometry/sampleContour.md +12 -2
- package/dist/docs/reference/geometry/sampleCurve2.md +6 -3
- package/dist/docs/reference/geometry/sampleCurve3.md +5 -1
- package/dist/docs/reference/geometry/sampleCylindricalGearOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleHelix.md +13 -5
- package/dist/docs/reference/geometry/sampleInternalCylindricalGearSpaceOutline.md +5 -1
- package/dist/docs/reference/geometry/sampleRackToothPath.md +8 -4
- package/dist/docs/reference/geometry/sampleSideProfile.md +15 -5
- package/dist/docs/reference/geometry/sampleTextContours.md +5 -1
- package/dist/docs/reference/geometry/sampleThreadHelices.md +5 -1
- package/dist/docs/reference/geometry/scale2.md +6 -5
- package/dist/docs/reference/geometry/scale3.md +6 -5
- package/dist/docs/reference/geometry/scaleTransform3.md +7 -6
- package/dist/docs/reference/geometry/signedContourArea.md +5 -1
- package/dist/docs/reference/geometry/starContour.md +8 -4
- package/dist/docs/reference/geometry/strokeRegionData.md +5 -1
- package/dist/docs/reference/geometry/subtract2.md +7 -6
- package/dist/docs/reference/geometry/subtract3.md +7 -6
- package/dist/docs/reference/geometry/sweepMesh.md +5 -1
- package/dist/docs/reference/geometry/threadProfile.md +5 -1
- package/dist/docs/reference/geometry/transform2.md +14 -7
- package/dist/docs/reference/geometry/transform3.md +16 -7
- package/dist/docs/reference/geometry/transformDeterminant3.md +5 -4
- package/dist/docs/reference/geometry/transformRegionData.md +5 -1
- package/dist/docs/reference/geometry/transformTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/translationTransform3.md +7 -6
- package/dist/docs/reference/geometry/triangulateContour.md +5 -1
- package/dist/docs/reference/geometry/validateSolidMesh.md +9 -2
- package/dist/docs/reference/geometry/validateTransform3.md +6 -5
- package/dist/docs/reference/geometry/validateTriangleMesh.md +5 -1
- package/dist/docs/reference/geometry/vector2.md +10 -2
- package/dist/docs/reference/geometry/vector3.md +10 -2
- package/dist/docs/reference/geometry.md +7 -5
- package/dist/docs/reference/model/Anchor3.md +6 -5
- package/dist/docs/reference/model/AttachOptions.md +2 -1
- package/dist/docs/reference/model/Bounds2-type.md +125 -0
- package/dist/docs/reference/model/Bounds2Data.md +44 -0
- package/dist/docs/reference/model/Bounds2Input.md +19 -0
- package/dist/docs/reference/model/Bounds2Options.md +70 -0
- package/dist/docs/reference/model/Bounds3-type.md +125 -0
- package/dist/docs/reference/model/Bounds3Data.md +44 -0
- package/dist/docs/reference/model/Bounds3Input.md +19 -0
- package/dist/docs/reference/model/Bounds3Options.md +70 -0
- package/dist/docs/reference/model/BoxEdge.md +1 -1
- package/dist/docs/reference/model/BoxEdgeSelection.md +1 -1
- package/dist/docs/reference/model/BoxEdgeTreatments.md +1 -1
- package/dist/docs/reference/model/BoxOptions.md +3 -3
- package/dist/docs/reference/model/ChamferedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/CircleContourOptions.md +1 -1
- package/dist/docs/reference/model/CircleOptions.md +1 -1
- package/dist/docs/reference/model/CircularPrimitiveOptions.md +1 -1
- package/dist/docs/reference/model/Computed.md +6 -1
- package/dist/docs/reference/model/ComputedValue.md +5 -1
- package/dist/docs/reference/model/Contour.md +6 -4
- package/dist/docs/reference/model/CorrespondingComponent.md +1 -1
- package/dist/docs/reference/model/CorrespondingContour.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfile.md +1 -1
- package/dist/docs/reference/model/CorrespondingProfileStation.md +1 -1
- package/dist/docs/reference/model/CylinderOptions.md +1 -1
- package/dist/docs/reference/model/DiagnosticOptions.md +6 -1
- package/dist/docs/reference/model/EdgeTreatment.md +1 -1
- package/dist/docs/reference/model/EllipseContourOptions.md +3 -3
- package/dist/docs/reference/model/EllipseOptions.md +1 -1
- package/dist/docs/reference/model/EndTreatments.md +1 -1
- package/dist/docs/reference/model/ExtrudeOptions.md +1 -1
- package/dist/docs/reference/model/FinalizedModel.md +3 -3
- package/dist/docs/reference/model/FinalizedPart.md +1 -1
- package/dist/docs/reference/model/Frame3.md +6 -6
- package/dist/docs/reference/model/GenerateCallback.md +5 -1
- package/dist/docs/reference/model/GenerateContext.md +5 -1
- package/dist/docs/reference/model/GeneratedPart.md +5 -1
- package/dist/docs/reference/model/GenerationDiagnostic.md +6 -1
- package/dist/docs/reference/model/GenerationError.md +5 -1
- package/dist/docs/reference/model/GeometryResolution.md +1 -1
- package/dist/docs/reference/model/GeometrySamplingLimits.md +1 -1
- package/dist/docs/reference/model/GeometryToleranceOptions.md +1 -1
- package/dist/docs/reference/model/GridPatternOptions.md +5 -4
- package/dist/docs/reference/model/HeightfieldOptions.md +5 -5
- package/dist/docs/reference/model/HelicalThreadRidgeMeshOptions.md +2 -1
- package/dist/docs/reference/model/HelicalThreadSolidMeshPreflight.md +3 -2
- package/dist/docs/reference/model/HoleCutterOptions.md +77 -0
- package/dist/docs/reference/model/HoleCutterOverrun.md +35 -0
- package/dist/docs/reference/model/HoleCutterRecess.md +87 -0
- package/dist/docs/reference/model/HullOptions.md +1 -1
- package/dist/docs/reference/model/ImmutableBuffer-type.md +5 -1
- package/dist/docs/reference/model/ImmutableTriangleMesh.md +5 -1
- package/dist/docs/reference/model/ImplicitOptions.md +6 -6
- package/dist/docs/reference/model/InternalThreadCutterOptions.md +2 -1
- package/dist/docs/reference/model/KnuckleHinge-type.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeBaseSpec.md +77 -0
- package/dist/docs/reference/model/KnuckleHingeHalfOptions.md +38 -0
- package/dist/docs/reference/model/KnuckleHingeOptions.md +38 -0
- package/dist/docs/reference/model/KnuckleHingeSamplingOptions.md +47 -0
- package/dist/docs/reference/model/KnuckleHingeSpec.md +18 -0
- package/dist/docs/reference/model/KnuckleHingeWeb.md +53 -0
- package/dist/docs/reference/model/LinearPatternOptions.md +2 -1
- package/dist/docs/reference/model/LoftCorrespondence.md +1 -1
- package/dist/docs/reference/model/LoftOptions.md +1 -1
- package/dist/docs/reference/model/LoftPlacement.md +1 -1
- package/dist/docs/reference/model/LoftStation.md +1 -1
- package/dist/docs/reference/model/MatchProfilesOptions.md +1 -1
- package/dist/docs/reference/model/ModelProgram.md +5 -1
- package/dist/docs/reference/model/ModelingLimits.md +1 -1
- package/dist/docs/reference/model/NumericArray.md +8 -1
- package/dist/docs/reference/model/PartGeometry.md +5 -1
- package/dist/docs/reference/model/PartOptions.md +5 -1
- package/dist/docs/reference/model/Path2-type.md +12 -8
- package/dist/docs/reference/model/Path2Data.md +40 -4
- package/dist/docs/reference/model/Path2Input.md +8 -3
- package/dist/docs/reference/model/Path3-type.md +12 -8
- package/dist/docs/reference/model/Path3Data.md +40 -4
- package/dist/docs/reference/model/Path3Input.md +8 -3
- package/dist/docs/reference/model/PathLocation.md +5 -1
- package/dist/docs/reference/model/PathNormalGuide.md +4 -4
- package/dist/docs/reference/model/PathOptions.md +5 -1
- package/dist/docs/reference/model/PathPatternOptions.md +2 -1
- package/dist/docs/reference/model/PathResamplingOptions.md +5 -1
- package/dist/docs/reference/model/PatternSource.md +2 -1
- package/dist/docs/reference/model/Pivot2Options.md +2 -1
- package/dist/docs/reference/model/Pivot3Options.md +2 -1
- package/dist/docs/reference/model/PlaneOptions.md +1 -1
- package/dist/docs/reference/model/PolygonData.md +3 -2
- package/dist/docs/reference/model/PolygonOptions.md +1 -1
- package/dist/docs/reference/model/PrimitiveAttachment.md +2 -1
- package/dist/docs/reference/model/PrimitiveAttachmentOptions.md +2 -1
- package/dist/docs/reference/model/PrintableThreadFit.md +2 -1
- package/dist/docs/reference/model/PrintableThreadFitPolicy.md +2 -1
- package/dist/docs/reference/model/Profile.md +4 -2
- package/dist/docs/reference/model/ProfileComponent2.md +1 -1
- package/dist/docs/reference/model/ProfileContour2.md +4 -2
- package/dist/docs/reference/model/ProfileSpan2.md +3 -3
- package/dist/docs/reference/model/ProfiledEdgeTreatment.md +3 -3
- package/dist/docs/reference/model/RadialPatternOptions.md +2 -1
- package/dist/docs/reference/model/RadialSizing.md +1 -1
- package/dist/docs/reference/model/RadialSizingOptions.md +1 -1
- package/dist/docs/reference/model/RectangleContourOptions.md +3 -3
- package/dist/docs/reference/model/RectangleCornerTreatment.md +1 -1
- package/dist/docs/reference/model/RectangleCornerTreatments.md +1 -1
- package/dist/docs/reference/model/RectangleOptions.md +3 -3
- package/dist/docs/reference/model/RegionData.md +2 -2
- package/dist/docs/reference/model/RegularPolygonOptions.md +1 -1
- package/dist/docs/reference/model/RevolveOptions.md +1 -1
- package/dist/docs/reference/model/RoundedEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Section.md +9 -2
- package/dist/docs/reference/model/SectionHullOptions.md +1 -1
- package/dist/docs/reference/model/SectionInspection.md +4 -4
- package/dist/docs/reference/model/SectionOffsetJoin.md +1 -1
- package/dist/docs/reference/model/SectionOffsetOptions.md +1 -1
- package/dist/docs/reference/model/SmoothEdgeTreatment.md +1 -1
- package/dist/docs/reference/model/Solid.md +9 -2
- package/dist/docs/reference/model/SolidInspection.md +4 -4
- package/dist/docs/reference/model/SolidSegmentHit.md +4 -4
- package/dist/docs/reference/model/SphereOptions.md +1 -1
- package/dist/docs/reference/model/StarOptions.md +1 -1
- package/dist/docs/reference/model/StrokeCap.md +1 -1
- package/dist/docs/reference/model/StrokeJoin.md +1 -1
- package/dist/docs/reference/model/StrokeOptions.md +1 -1
- package/dist/docs/reference/model/SvgOrigin.md +1 -1
- package/dist/docs/reference/model/SvgPathSectionOptions.md +1 -1
- package/dist/docs/reference/model/SvgSectionOptions.md +14 -1
- package/dist/docs/reference/model/SweepOptions.md +1 -1
- package/dist/docs/reference/model/SweepOrientation.md +1 -1
- package/dist/docs/reference/model/TextSectionOptions.md +1 -1
- package/dist/docs/reference/model/ThreadEndStyle.md +2 -1
- package/dist/docs/reference/model/ThreadEndTreatmentOptions.md +2 -1
- package/dist/docs/reference/model/ThreadHandedness.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInEnvelope.md +2 -1
- package/dist/docs/reference/model/ThreadLeadInShape.md +2 -1
- package/dist/docs/reference/model/ThreadProfile.md +4 -3
- package/dist/docs/reference/model/ThreadRidgeOptions.md +2 -1
- package/dist/docs/reference/model/ThreadedNutBevel.md +2 -1
- package/dist/docs/reference/model/ThreadedNutOptions.md +2 -1
- package/dist/docs/reference/model/ThreadedNutPreflight.md +4 -3
- package/dist/docs/reference/model/ThreadedNutShape.md +2 -1
- package/dist/docs/reference/model/ThreadedRodOptions.md +2 -1
- package/dist/docs/reference/model/TorusOptions.md +1 -1
- package/dist/docs/reference/model/Transform2-type.md +6 -5
- package/dist/docs/reference/model/Transform2Data.md +16 -0
- package/dist/docs/reference/model/Transform2Input.md +4 -3
- package/dist/docs/reference/model/Transform3-type.md +6 -5
- package/dist/docs/reference/model/Transform3Data.md +19 -0
- package/dist/docs/reference/model/Transform3Input.md +4 -3
- package/dist/docs/reference/model/TriangleMesh.md +1 -1
- package/dist/docs/reference/model/TriangleMeshAnalysis.md +3 -3
- package/dist/docs/reference/model/TriangleMeshMeasurements.md +3 -3
- package/dist/docs/reference/model/TubeOptions.md +1 -1
- package/dist/docs/reference/model/Vector2-type.md +6 -5
- package/dist/docs/reference/model/{Vector2Tuple.md → Vector2Data.md} +3 -3
- package/dist/docs/reference/model/Vector2Input.md +4 -3
- package/dist/docs/reference/model/Vector3-type.md +6 -5
- package/dist/docs/reference/model/{Vector3Tuple.md → Vector3Data.md} +3 -3
- package/dist/docs/reference/model/Vector3Input.md +4 -3
- package/dist/docs/reference/model/VectorTextLayout.md +1 -1
- package/dist/docs/reference/model/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/model/anchor.md +2 -1
- package/dist/docs/reference/model/bounds2.md +37 -0
- package/dist/docs/reference/model/bounds3.md +37 -0
- package/dist/docs/reference/model/box.md +2 -2
- package/dist/docs/reference/model/castSegment.md +1 -1
- package/dist/docs/reference/model/categories/boolean-operations.md +10 -3
- package/dist/docs/reference/model/categories/bounded-surfaces.md +5 -3
- package/dist/docs/reference/model/categories/bounds.md +38 -0
- package/dist/docs/reference/model/categories/contracts.md +4 -2
- package/dist/docs/reference/model/categories/core-values-errors.md +11 -11
- package/dist/docs/reference/model/categories/explicit-profiles.md +6 -4
- package/dist/docs/reference/model/categories/extrude-revolve-sweep.md +12 -3
- package/dist/docs/reference/model/categories/generation.md +11 -2
- package/dist/docs/reference/model/categories/hinges.md +38 -0
- package/dist/docs/reference/model/categories/inspection.md +9 -2
- package/dist/docs/reference/model/categories/mesh-inspection.md +5 -3
- package/dist/docs/reference/model/categories/paths.md +15 -7
- package/dist/docs/reference/model/categories/primitives.md +14 -4
- package/dist/docs/reference/model/categories/resolution.md +4 -2
- package/dist/docs/reference/model/categories/sections.md +10 -5
- package/dist/docs/reference/model/categories/threads.md +10 -7
- package/dist/docs/reference/model/categories/transforms-placement.md +17 -9
- package/dist/docs/reference/model/circle.md +1 -1
- package/dist/docs/reference/model/components.md +1 -1
- package/dist/docs/reference/model/compose.md +1 -1
- package/dist/docs/reference/model/cylinder.md +1 -1
- package/dist/docs/reference/model/distance.md +1 -1
- package/dist/docs/reference/model/ellipse.md +1 -1
- package/dist/docs/reference/model/extrude.md +1 -1
- package/dist/docs/reference/model/generate.md +5 -1
- package/dist/docs/reference/model/gridPattern.md +2 -1
- package/dist/docs/reference/model/heightfield.md +5 -2
- package/dist/docs/reference/model/holeCutter.md +45 -0
- package/dist/docs/reference/model/hull.md +1 -1
- package/dist/docs/reference/model/immutableBuffer.md +5 -1
- package/dist/docs/reference/model/immutableMesh.md +5 -1
- package/dist/docs/reference/model/implicit.md +3 -3
- package/dist/docs/reference/model/inspectSection.md +1 -1
- package/dist/docs/reference/model/inspectSolid.md +1 -1
- package/dist/docs/reference/model/internalThreadCutter.md +2 -1
- package/dist/docs/reference/model/intersect.md +1 -1
- package/dist/docs/reference/model/isEmpty.md +1 -1
- package/dist/docs/reference/model/knuckleHinge.md +47 -0
- package/dist/docs/reference/model/linearPattern.md +2 -1
- package/dist/docs/reference/model/loft.md +1 -1
- package/dist/docs/reference/model/matchProfiles.md +1 -1
- package/dist/docs/reference/model/minkowskiSum.md +1 -1
- package/dist/docs/reference/model/path2.md +14 -2
- package/dist/docs/reference/model/path3.md +8 -1
- package/dist/docs/reference/model/pathPattern.md +2 -1
- package/dist/docs/reference/model/polygon.md +5 -2
- package/dist/docs/reference/model/preflightInternalThreadCutter.md +8 -2
- package/dist/docs/reference/model/preflightThreadedNut.md +8 -2
- package/dist/docs/reference/model/preflightThreadedRod.md +8 -2
- package/dist/docs/reference/model/radialPattern.md +2 -1
- package/dist/docs/reference/model/rectangle.md +5 -2
- package/dist/docs/reference/model/regularPolygon.md +1 -1
- package/dist/docs/reference/model/revolve.md +1 -1
- package/dist/docs/reference/model/solidFromMesh.md +1 -1
- package/dist/docs/reference/model/sphere.md +1 -1
- package/dist/docs/reference/model/split.md +1 -1
- package/dist/docs/reference/model/splitByPlane.md +1 -1
- package/dist/docs/reference/model/star.md +1 -1
- package/dist/docs/reference/model/stroke.md +1 -1
- package/dist/docs/reference/model/svgPathSection.md +1 -1
- package/dist/docs/reference/model/svgSection.md +5 -1
- package/dist/docs/reference/model/sweep.md +1 -1
- package/dist/docs/reference/model/textSection.md +1 -1
- package/dist/docs/reference/model/threadRidge.md +2 -1
- package/dist/docs/reference/model/threadedNut.md +2 -1
- package/dist/docs/reference/model/threadedRod.md +2 -1
- package/dist/docs/reference/model/torus.md +1 -1
- package/dist/docs/reference/model/transform2.md +14 -7
- package/dist/docs/reference/model/transform3.md +16 -7
- package/dist/docs/reference/model/tube.md +1 -1
- package/dist/docs/reference/model/union.md +1 -1
- package/dist/docs/reference/model/vector2.md +10 -2
- package/dist/docs/reference/model/vector3.md +10 -2
- package/dist/docs/reference/model.md +15 -8
- package/dist/docs/reference/text/Bounds2Data.md +34 -0
- package/dist/docs/reference/text/MAX_VECTOR_FONT_BYTES.md +1 -1
- package/dist/docs/reference/text/Vector2Data.md +7 -0
- package/dist/docs/reference/text/VectorFont.md +7 -7
- package/dist/docs/reference/text/VectorFontOptions.md +1 -1
- package/dist/docs/reference/text/VectorTextArcBaseline.md +1 -1
- package/dist/docs/reference/text/VectorTextLayout.md +1 -1
- package/dist/docs/reference/text/VectorTextLayoutOptions.md +3 -3
- package/dist/docs/reference/text/VectorTextMetrics.md +3 -3
- package/dist/docs/reference/text/VectorTextOptions.md +1 -1
- package/dist/docs/reference/text/categories/font-preparation.md +6 -4
- package/dist/docs/reference/text/prepareVectorFont.md +1 -1
- package/dist/docs/reference/text.md +4 -2
- package/dist/engine/construction-operations.js +1 -1
- package/dist/engine/extrusion-finishing.js +2 -29
- package/dist/engine/hole-cutter-operation.js +148 -0
- package/dist/engine/knuckle-hinge-operation.js +128 -0
- package/dist/engine/loft-operations.js +1 -1
- package/dist/engine/mechanical-operations.js +3 -1
- package/dist/engine/modeling-context.js +20 -1
- package/dist/engine/primitive-operations.js +19 -6
- package/dist/engine/recipe-realization.js +4 -2
- package/dist/engine/section-operations.js +2 -2
- package/dist/engine/transform-operations.js +3 -3
- package/dist/geometry/bounds-value.js +121 -0
- package/dist/geometry/bounds.js +10 -25
- package/dist/geometry/circular-sampling.js +45 -0
- package/dist/geometry/convex-offset.js +41 -0
- package/dist/geometry/curves/sampling.js +1 -2
- package/dist/geometry/errors.js +1 -0
- package/dist/geometry/heightfield.js +12 -1
- package/dist/geometry/index.js +5 -2
- package/dist/geometry/math/immutable-value.js +1 -1
- package/dist/geometry/math/vector-value.js +11 -3
- package/dist/geometry/math/vector2.js +1 -0
- package/dist/geometry/math/vector3.js +1 -0
- package/dist/geometry/mechanical/index.js +1 -0
- package/dist/geometry/mechanical/knuckle-hinge.js +110 -0
- package/dist/geometry/mechanical/thread-mesh-plan.js +7 -2
- package/dist/geometry/mechanical/thread-solids.js +29 -4
- package/dist/geometry/mesh/mesh-centroid.js +1 -0
- package/dist/geometry/mesh/mesh-solid.js +1 -0
- package/dist/geometry/paths/frames.js +1 -0
- package/dist/geometry/paths/helix.js +1 -0
- package/dist/geometry/paths/path-value.js +43 -27
- package/dist/geometry/paths/resampling.js +2 -2
- package/dist/geometry/patterns/placements.js +3 -3
- package/dist/geometry/patterns.js +3 -1
- package/dist/geometry/profiles/contour.js +1 -0
- package/dist/geometry/profiles/matched.js +1 -0
- package/dist/geometry/profiles/profiles.js +3 -23
- package/dist/geometry/profiles/rectangle.js +10 -1
- package/dist/geometry/profiles/side-profile.js +2 -0
- package/dist/geometry/svg/matrix.js +21 -0
- package/dist/geometry/svg-import.js +140 -52
- package/dist/geometry/sweeps/options.js +1 -1
- package/dist/geometry/text-fitting.js +1 -0
- package/dist/geometry/transform-matrix.js +1 -1
- package/dist/geometry/{transform-chain.js → transform-value.js} +24 -15
- package/dist/index.js +2 -1
- package/dist/model/execution-binding.js +1 -1
- package/dist/model/geometry-recipes.js +1 -1
- package/dist/model/hole-cutter.js +1 -0
- package/dist/model/immutable-generation-data.js +4 -12
- package/dist/model/knuckle-hinge.js +1 -0
- package/dist/model/operations.js +78 -3
- package/dist/model/recipe-declaration.js +11 -2
- package/package.json +1 -1
- package/dist/docs/reference/geometry/Bounds2.md +0 -39
- package/dist/docs/reference/geometry/Bounds3.md +0 -39
- package/dist/docs/reference/geometry/BoundsFromSizeOptions.md +0 -23
- package/dist/docs/reference/geometry/Transform2Matrix.md +0 -14
- package/dist/docs/reference/geometry/Transform3Matrix.md +0 -17
- package/dist/docs/reference/geometry/Vector2Tuple.md +0 -14
- package/dist/docs/reference/geometry/Vector3Tuple.md +0 -14
- package/dist/docs/reference/geometry/boundsFromSize.md +0 -83
- package/dist/docs/reference/geometry/containsBounds.md +0 -72
- package/dist/docs/reference/model/Bounds2.md +0 -39
- package/dist/docs/reference/model/Bounds3.md +0 -39
- package/dist/docs/reference/model/Transform2Matrix.md +0 -15
- package/dist/docs/reference/model/Transform3Matrix.md +0 -18
- package/dist/docs/reference/text/Bounds2.md +0 -34
- package/dist/docs/reference/text/Vector2Tuple.md +0 -7
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# Modeling fundamentals
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Combine watertight solids with Booleans and transforms, and understand geometry ownership in Studio code Projects.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
working with an arbitrary triangle soup.
|
|
5
|
+
Build parts by combining primitives, applying transforms, and removing material with cutters.
|
|
6
|
+
MetaMesh uses [Manifold](https://manifoldcad.org/docs/jsapi/), a solid-modeling kernel that works
|
|
7
|
+
with **manifold meshes**: closed, consistently oriented boundaries representing solid material.
|
|
9
8
|
|
|
10
|
-
Studio code Projects use
|
|
11
|
-
|
|
12
|
-
recipes. The engine owns the underlying kernel values.
|
|
9
|
+
Studio code Projects use `@metamesh/modeling` to construct immutable `Section` and `Solid` recipes.
|
|
10
|
+
The engine evaluates them and owns the underlying kernel values.
|
|
13
11
|
|
|
14
12
|
## Coordinates and units
|
|
15
13
|
|
|
@@ -47,9 +45,9 @@ The plate is centered about the origin. Its `4 mm` thickness occupies `Z = −2
|
|
|
47
45
|
occupies `Z = −4…4 mm`. That overtravel makes the subtraction deliberate while the hole radius
|
|
48
46
|
stays `3 mm`. Derive cutter placement from the same datum as the body when changing dimensions.
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
Name intermediate solids by their purpose. Arrange independent repeated cutters first, then
|
|
49
|
+
subtract them together where possible. Many high-resolution Boolean steps increase generation
|
|
50
|
+
time and obscure design intent.
|
|
53
51
|
|
|
54
52
|
The `union` and `intersect` functions and `shape.subtract(cutters)` also combine filled Sections
|
|
55
53
|
in XY. Choose one dimension for every operand in a call. Keep a Section native through its Boolean
|
|
@@ -109,30 +107,28 @@ The kernel can enforce solid topology, but it does not know your printer, materi
|
|
|
109
107
|
tolerance stack, minimum wall, overhang strategy, or fit target. Encode supported input limits and
|
|
110
108
|
cross-field errors in the Project, then verify the exported file in its downstream tool.
|
|
111
109
|
|
|
112
|
-
|
|
113
|
-
engineering certification.
|
|
110
|
+
Empty or zero-volume output is invalid; non-empty output still needs engineering checks.
|
|
114
111
|
|
|
115
112
|
## Geometry ownership
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
`Section` and `Solid` values are immutable recipes. Evaluating them creates native resources
|
|
115
|
+
owned and cleaned up by Studio. Do not initialize the kernel or manually delete shapes in
|
|
116
|
+
`model.ts`.
|
|
120
117
|
|
|
121
118
|
Use `inspectSection()` or `inspectSolid()` for measurements such as bounds, area, volume, and
|
|
122
119
|
`componentCount`. `components()` returns disconnected material pieces, preserving holes and
|
|
123
120
|
enclosed cavities. A sealed hollow box is one component; adding a loose ball inside its cavity
|
|
124
121
|
makes two. Recombining the pieces preserves the original material.
|
|
125
122
|
|
|
126
|
-
Snapshot `stats.partCount` counts
|
|
127
|
-
|
|
128
|
-
the result back to Studio for preview and export.
|
|
123
|
+
Snapshot `stats.partCount` counts named `part(...)` declarations; one part may contain several
|
|
124
|
+
material components. Return one declaration or an array for Studio to preview and export.
|
|
129
125
|
|
|
130
126
|
|
|
131
127
|
|
|
132
128
|
**Use the MetaMesh reference for authored code**
|
|
133
129
|
|
|
134
|
-
The upstream Manifold documentation is useful background on the underlying mathematics. Exact
|
|
135
|
-
|
|
130
|
+
The upstream Manifold documentation is useful background on the underlying mathematics. Exact code
|
|
131
|
+
Project symbols and guarantees come from the [Model API reference](../reference/model.md).
|
|
136
132
|
|
|
137
133
|
|
|
138
134
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Code Project contract
|
|
2
2
|
|
|
3
|
-
Understand
|
|
3
|
+
Understand Studio’s TypeScript source contract, computed caches, parts, resource ownership, and recovery.
|
|
4
4
|
|
|
5
5
|
An authored Project has one control definition and one TypeScript entry file. Studio supplies the
|
|
6
6
|
compiler, prepared services, modeling engine, persistence and preview.
|
|
@@ -29,9 +29,8 @@ export default generate(({ params: parameters, part }) => {
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
The helper infers `params` from **Model controls
|
|
33
|
-
|
|
34
|
-
`type Parameters` from `@metamesh/project` when a separate helper needs that explicit type.
|
|
32
|
+
The helper infers `params` from **Model controls** as readonly numbers, strings, and structured
|
|
33
|
+
values. Import `type Parameters` from `@metamesh/project` when a separate helper needs the type.
|
|
35
34
|
|
|
36
35
|
The outer callback runs for each edit. Return a single `part(...)` or a readonly array of parts;
|
|
37
36
|
`computed` is optional.
|
|
@@ -92,9 +91,10 @@ Call other computed readers inside the callback too: `computed("finished", () =>
|
|
|
92
91
|
tracks the base result automatically. In **New project → Cached panels**, changing **Gap** only
|
|
93
92
|
moves the second panel; changing **Notch width** reuses the hole pattern for the finishing cut.
|
|
94
93
|
|
|
95
|
-
An earlier read such as `const { height } = params`
|
|
96
|
-
computation does not track
|
|
97
|
-
must be prepared outside, such as a loop item, list it in the optional
|
|
94
|
+
An earlier read such as `const { height } = params` captures a snapshot. Using it inside a
|
|
95
|
+
computation does not track the parameter and can reuse stale geometry. Move the read inside the
|
|
96
|
+
callback. If a changing value must be prepared outside, such as a loop item, list it in the optional
|
|
97
|
+
third argument:
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
|
|
@@ -114,19 +114,19 @@ The same capture rule applies to an eagerly read result such as `const value = o
|
|
|
114
114
|
Select and call readers inside the callback when possible. Studio warns about common hidden captures
|
|
115
115
|
while Code is open; its advisory checks cannot prove arbitrary JavaScript correct.
|
|
116
116
|
|
|
117
|
-
Dependency entries
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
Dependency entries use `Object.is`, without comparing object or array contents. Use immutable
|
|
118
|
+
parameter values, computed results, or scalar inputs; other objects must be deeply frozen. Create
|
|
119
|
+
temporary options inside the callback, since fresh object or array dependencies prevent reuse.
|
|
120
|
+
Studio warns about obvious fresh dependencies without running generation.
|
|
121
121
|
|
|
122
122
|
IDs identify logical computations, so loops and conditions work without hook call-order rules.
|
|
123
123
|
IDs must be unique lowercase hyphen-separated alphanumeric names of at most 64 characters within
|
|
124
124
|
their namespace.
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
perform effects, or return promises
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
Keep calculations synchronous and pure: do not mutate cached values, read clocks or randomness,
|
|
127
|
+
perform effects, or return promises or functions. The physical result must remain the same after
|
|
128
|
+
cache eviction or a worker restart. Cache expensive layouts or grids; cheap arithmetic usually
|
|
129
|
+
does not need its own computation.
|
|
130
130
|
|
|
131
131
|
For cached numeric data, call [`immutableBuffer`](../reference/model/immutableBuffer.md) and use
|
|
132
132
|
its `length`, `at(index)`, or `copy()` methods. Copy once before a dense sampling callback so its
|
|
@@ -185,7 +185,7 @@ export default generate(({ params: parameters, part }) => {
|
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
|
|
188
|
-
Lengths
|
|
188
|
+
Lengths use millimetres and rotations use degrees. Coordinates are right-handed with **+Z up**.
|
|
189
189
|
Rotation applies about fixed X, then Y, then Z axes before translation. Part placement governs
|
|
190
190
|
preview, picking, measurements and all exports. Changing placement or color can reuse cached
|
|
191
191
|
geometry and renderer buffers. Studio's native part-color overrides update appearance directly.
|
|
@@ -199,13 +199,14 @@ instance limits, including cache hits. Empty output is invalid.
|
|
|
199
199
|
|
|
200
200
|
## Ownership and recovery
|
|
201
201
|
|
|
202
|
-
Solids and Sections
|
|
203
|
-
sessions
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
202
|
+
Solids and Sections are immutable deferred recipes. Ordinary recipes can be reused across
|
|
203
|
+
sessions; unspecified resolution settings inherit the evaluating host's defaults. Apply local
|
|
204
|
+
resolution explicitly to each affected constructor or Section operation.
|
|
205
|
+
|
|
206
|
+
Observations such as `inspectSolid` evaluate required geometry synchronously and return copied
|
|
207
|
+
facts. `components()` selections and recipes using them can only be evaluated in their originating
|
|
208
|
+
session because their identity depends on evaluated topology. The host cleans up native
|
|
209
|
+
allocations on success and failure. Nested or asynchronous execution rejects.
|
|
209
210
|
|
|
210
211
|
Source/control-definition changes invalidate the program session. Parameter edits reuse it.
|
|
211
212
|
Failed or stale requests retain the last valid preview; fatal failures replace the worker.
|
|
@@ -53,26 +53,31 @@ move engine initialization out of the function and reuse that engine and its mod
|
|
|
53
53
|
|
|
54
54
|
## Keep execution synchronous
|
|
55
55
|
|
|
56
|
-
Acquire assets before generation
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
56
|
+
Acquire assets before generation and supply synchronous services when creating a session.
|
|
57
|
+
Computed readers and geometry observations require active synchronous generation. They cannot
|
|
58
|
+
cross an async boundary, and sessions cannot run inside another session run in the same realm.
|
|
59
|
+
|
|
60
|
+
Recipes and evaluated geometry have different lifetimes:
|
|
61
|
+
|
|
62
|
+
- Immutable `Solid` and `Section` recipes, vectors, paths, and transforms can be created without an
|
|
63
|
+
engine and reused across sessions. Explicit resolution settings stay with a recipe; omitted
|
|
64
|
+
settings inherit the evaluating host's defaults.
|
|
65
|
+
- A session owns evaluation, optional computed caches, and native resources. Temporary native
|
|
66
|
+
allocations are cleaned after each run. Computed shapes may stay cached for later cuts or
|
|
67
|
+
Booleans; separate expensive base geometry from finishing operations to reuse it.
|
|
68
|
+
- Observed `components()` selections depend on evaluated topology and belong to their originating
|
|
69
|
+
session. Ordinary recipes remain portable.
|
|
70
|
+
|
|
71
|
+
A snapshot retains captured manufacturing buffers independently of its session:
|
|
72
|
+
|
|
73
|
+
- Reading a part's `positions` or `indices`, including through its local `geometry` resource,
|
|
74
|
+
returns a fresh owned copy. Read each field once when processing its buffer.
|
|
75
|
+
- `session.dispose()` releases caches; captured snapshots remain usable.
|
|
76
|
+
- `snapshot.dispose()` releases its references and invalidates later `parts`, `bounds`, and `stats`
|
|
77
|
+
access. Diagnostics, dependencies, and parts already obtained remain usable. Other snapshots
|
|
78
|
+
and exports already in progress are unaffected.
|
|
79
|
+
|
|
80
|
+
Dispose each snapshot when its consumer is done.
|
|
76
81
|
|
|
77
82
|
## Load WASM in a browser Worker
|
|
78
83
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Modeling recipes
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Build plates, cups, routed tubes, lofts, repeated features, SVG shapes, and lettering with complete modeling examples.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Choose a recipe, inspect its render, and copy the complete source into a Studio
|
|
6
|
+
[code Project](https://metamesh.studio/docs/develop/code-projects). Each illustrated recipe renders that same source;
|
|
7
|
+
open its interactive preview to orbit the result.
|
|
8
8
|
|
|
9
9
|
| You want to make | Start here | Main decision |
|
|
10
10
|
| ------------------------ | -------------------------------------------------------------- | --------------------------------------------------------- |
|
|
@@ -20,8 +20,8 @@ the interactive preview to orbit the result; copy the code into a Studio code Pr
|
|
|
20
20
|
|
|
21
21
|
All dimensions in these recipes are millimetres. MetaMesh uses a right-handed coordinate system
|
|
22
22
|
with +Z up, degrees for angular arguments including `rotate`, and non-duplicated contour seams.
|
|
23
|
-
The examples default-export a synchronous `generate` program. Use
|
|
24
|
-
and optional `computed` values
|
|
23
|
+
The examples default-export a synchronous `generate` program. Use assertions for constraints
|
|
24
|
+
and optional `computed` values to cache expensive shared calculations, geometry, or text layouts.
|
|
25
25
|
[Define parameters and validation](https://metamesh.studio/docs/develop/parameters-and-validation) connects
|
|
26
26
|
source values to controls.
|
|
27
27
|
|
|
@@ -47,9 +47,9 @@ Subtract the opening in 2D, offset the filled material, then extrude it into one
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
`rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
`rectangle` and `circle` take object options and return filled Sections. `section.subtract(cutters)`,
|
|
51
|
+
`union`, and `intersect` also support Solids; every operand in a call must have the same dimension.
|
|
52
|
+
`section.offset(distance)` offsets the filled material. `section.extrude({ height })` preserves
|
|
53
53
|
holes and places the bottom at zero unless `center: true` is requested.
|
|
54
54
|
|
|
55
55
|
Positive offset grows material on every boundary: this example grows the outside by `1.2 mm` and
|
|
@@ -59,8 +59,8 @@ offset the outside first and subtract the hole afterward. See
|
|
|
59
59
|
|
|
60
60
|
## SVG parameter and extrusion
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
Pass an SVG control's string value from `params` directly to `svgSection`. This example aliases
|
|
63
|
+
`params` as `parameters`:
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
|
|
@@ -76,10 +76,10 @@ export default generate(({ params: parameters, part }) => {
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
The property name
|
|
80
|
-
`parameters.logo`
|
|
79
|
+
The property name matches the ID in **Model controls**: `profile6` in this example, or
|
|
80
|
+
`parameters.logo` for a control with ID `logo`.
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
`svgSection` also accepts literal SVG documents. Here two nested subpaths make a badge
|
|
83
83
|
with a rectangular opening:
|
|
84
84
|
|
|
85
85
|
|
|
@@ -118,6 +118,34 @@ and `viewBox`, convert SVG's Y-down coordinates to MetaMesh Y-up, and center the
|
|
|
118
118
|
default. Use `svgPathSection` for path-data strings where one user unit should equal 1 mm, or pass
|
|
119
119
|
its `scale` option to choose another millimetres-per-unit conversion.
|
|
120
120
|
|
|
121
|
+
To choose the finished artwork size, pass `fit` with positioned XY bounds. Fitting preserves
|
|
122
|
+
aspect ratio and centers the painted geometry inside the target; unused SVG canvas margins do
|
|
123
|
+
not reserve space. Adaptive curve tolerance and edge spacing apply at the final millimetre size:
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
```ts
|
|
128
|
+
import { bounds2, svgSection } from "@metamesh/modeling";
|
|
129
|
+
import { generate } from "@metamesh/project";
|
|
130
|
+
|
|
131
|
+
export default generate(({ part }) => {
|
|
132
|
+
const artwork = svgSection('<svg><circle r="1"/></svg>', {
|
|
133
|
+
fit: bounds2({ size: [30, 18] }),
|
|
134
|
+
resolution: { maxChordError: 0.05 },
|
|
135
|
+
});
|
|
136
|
+
return part("artwork", artwork.extrude({ height: 0.8 }));
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
For pure preparation, `preflightSvgRegion` from `@metamesh/modeling/geometry` accepts the same
|
|
143
|
+
fit target and returns its applied `fit` alongside the final region and review metrics. The
|
|
144
|
+
scale and translation map the selected origin's SVG millimetres to model millimetres. Reuse
|
|
145
|
+
them for registered layers imported with the same document coordinate system and origin.
|
|
146
|
+
Exact circular segment counts retain precedence over adaptive sampling. Empty artwork cannot
|
|
147
|
+
be fitted, and fitting rejects a requested resolution that exceeds the sampling limits.
|
|
148
|
+
|
|
121
149
|
Visible fills and bounded strokes contribute geometry; editor metadata is ignored. Editor text is
|
|
122
150
|
outlined to visible paths on Apply. Live `<text>`, images, `<use>`, external resources, class-based
|
|
123
151
|
stylesheets, clipping, masks, filters, and percentage dimensions are rejected. To generate lettering
|
|
@@ -286,7 +314,7 @@ export const placedBody = polygon({ outer: outline, holes: [] })
|
|
|
286
314
|
.extrude({ height: 8 });
|
|
287
315
|
|
|
288
316
|
// Paths accept the same placement. Matrices and tuples remain available for interchange.
|
|
289
|
-
export const sectionMatrix = planarPlacement.
|
|
317
|
+
export const sectionMatrix = planarPlacement.toData();
|
|
290
318
|
export const placedContour = path2(outline, { closed: true }).transform(planarPlacement);
|
|
291
319
|
```
|
|
292
320
|
|
|
@@ -299,7 +327,7 @@ Fill the transformed closed path with `polygon(placedContour)` when you need mat
|
|
|
299
327
|
A negative scale factor reflects the placement. Paths retain traversal order, including closed
|
|
300
328
|
paths; filled Sections and serialized regions restore outer and hole winding. `andThen(next)`
|
|
301
329
|
composes another placement in execution order;
|
|
302
|
-
reuse the placement instead of building a chain inside each point iteration. `
|
|
330
|
+
reuse the placement instead of building a chain inside each point iteration. `toData()` is
|
|
303
331
|
available for matrix interchange.
|
|
304
332
|
|
|
305
333
|
Section path patterns consume `Path2` values directly. Tangent orientation aligns the Section's
|
|
@@ -360,13 +388,16 @@ The asymmetric section makes its transported orientation visible as the path tur
|
|
|
360
388
|
|
|
361
389
|
|
|
362
390
|
|
|
363
|
-
`section.sweep(path, options)` transports
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
391
|
+
`section.sweep(path, options)` transports a filled shape along a path:
|
|
392
|
+
|
|
393
|
+
- `orientation: { kind: "transport", initialNormal: [0, 1, 0] }` chooses the starting profile-X
|
|
394
|
+
direction. Fixed normals, directed normal guides, and discrete Frenet frames are alternatives;
|
|
395
|
+
singular selected policies reject.
|
|
396
|
+
- `twist` adds total rotation by physical path length. Set `twistBy: "stations"` to use the authored
|
|
397
|
+
station schedule instead.
|
|
398
|
+
- `scale` accepts a positive uniform size, an XY pair, or one XY pair per normalized station.
|
|
399
|
+
- `closed: true` joins an implicitly closed path without repeated endpoints. Orientation, scales,
|
|
400
|
+
and `seamProfileOffset` must describe a compatible closing seam.
|
|
370
401
|
|
|
371
402
|
Start with the open path above, inspect the first cap and the turns, then replace the rectangle
|
|
372
403
|
with a [`circle`](../reference/model/circle.md) for a round rod. A sweep follows the supplied path
|
|
@@ -413,9 +444,9 @@ move them. Tube and torus axial datums may lie over an opening; a cone has no ca
|
|
|
413
444
|
Regular polygons and stars expose only `center`. Custom `Anchor3` frames, including pure
|
|
414
445
|
`boxAnchor3` and `cylinderAnchor3` helpers, work wherever a source or target frame is required.
|
|
415
446
|
|
|
416
|
-
Primitive `attachment` uses the same source/target anchor, `alignment`, `gap
|
|
417
|
-
|
|
418
|
-
preserve the XY plane.
|
|
447
|
+
Primitive `attachment` uses the same source/target anchor, `alignment`, `gap`, and `spin`
|
|
448
|
+
options as `attach`, including a named `source`. It applies after local construction; Section
|
|
449
|
+
attachment must preserve the XY plane.
|
|
419
450
|
|
|
420
451
|
The `gap` here separates the two pieces along the target normal; it is a placement distance, not
|
|
421
452
|
a radial fit clearance. Keep separate named parts for an assembly. For one fused part, remove the
|
|
@@ -534,8 +565,8 @@ reindex also chooses a cyclic phase, while distance methods optimize ordered con
|
|
|
534
565
|
|
|
535
566
|
## Sample a heightfield
|
|
536
567
|
|
|
537
|
-
Build a relief tile from absolute Z heights over a rectangular XY grid.
|
|
538
|
-
[`heightfield`](../reference/model/heightfield.md) returns a Solid for
|
|
568
|
+
Build a relief tile from absolute Z heights over a rectangular XY grid.
|
|
569
|
+
[`heightfield`](../reference/model/heightfield.md) returns a Solid for Booleans and placement during
|
|
539
570
|
generation. Pure [`heightfieldMesh`](../reference/geometry/heightfieldMesh.md) accepts the same options
|
|
540
571
|
and returns an indexed mesh without an engine. Pass it directly as a mesh part, or wrap it in
|
|
541
572
|
[`immutableMesh`](../reference/model/immutableMesh.md) when returning it from a cached computation.
|
|
@@ -625,8 +656,8 @@ The poster uses a pinned bundled Outfit face and preserves the counters inside e
|
|
|
625
656
|
letters. Extrude that section or combine it with other sections and solids. Use `layout.metrics`
|
|
626
657
|
and its visible `bounds` to size a backing plate or reject text without visible outlines.
|
|
627
658
|
|
|
628
|
-
Check a positioned label with [`containsBounds`](../reference/geometry/
|
|
629
|
-
using [`
|
|
659
|
+
Check a positioned label with [`bounds.containsBounds()`](../reference/geometry/bounds2.md),
|
|
660
|
+
using [`bounds2({ size })`](../reference/geometry/bounds2.md) for the available rectangle.
|
|
630
661
|
Horizontal `align: "center"` centers advance width; visible ink can remain asymmetric.
|
|
631
662
|
To resize the ink uniformly and center it inside a target, use
|
|
632
663
|
[`fitTextLayout`](../reference/geometry/fitTextLayout.md) before `textSection`. It transforms
|
|
@@ -638,8 +669,7 @@ parameter-specific error messages remain model decisions.
|
|
|
638
669
|
|
|
639
670
|
```ts
|
|
640
671
|
import {
|
|
641
|
-
|
|
642
|
-
containsBounds,
|
|
672
|
+
bounds2,
|
|
643
673
|
fitTextLayout,
|
|
644
674
|
type FittedTextLayout,
|
|
645
675
|
type VectorTextLayout,
|
|
@@ -647,12 +677,12 @@ import {
|
|
|
647
677
|
|
|
648
678
|
export function labelFits(layout: VectorTextLayout): boolean {
|
|
649
679
|
const ink = layout.metrics.bounds;
|
|
650
|
-
return ink !== null &&
|
|
680
|
+
return ink !== null && bounds2({ size: [40, 12] }).containsBounds(ink);
|
|
651
681
|
}
|
|
652
682
|
|
|
653
683
|
export function fitLabel(layout: VectorTextLayout): FittedTextLayout {
|
|
654
684
|
// Fit visible ink while preserving proportions and preventing enlargement.
|
|
655
|
-
return fitTextLayout(layout,
|
|
685
|
+
return fitTextLayout(layout, bounds2({ size: [40, 12] }), { maxScale: 1 });
|
|
656
686
|
}
|
|
657
687
|
```
|
|
658
688
|
|
|
@@ -687,6 +717,8 @@ replacement. Studio does not support custom font uploads.
|
|
|
687
717
|
|
|
688
718
|
## Solid inspection
|
|
689
719
|
|
|
720
|
+
Use `inspectSolid()` during generation to check bounds, volume, and component count:
|
|
721
|
+
|
|
690
722
|
|
|
691
723
|
|
|
692
724
|
```ts
|
|
@@ -730,8 +762,8 @@ export const rowModel = generate<Record<never, never>>(({ part }) => {
|
|
|
730
762
|
|
|
731
763
|
Inspection copies supported native facts. Manufacturing finalization checks finite, closed,
|
|
732
764
|
oriented and reconstructable output before it becomes the preview or export snapshot. These
|
|
733
|
-
checks do not certify manufacturability
|
|
734
|
-
|
|
765
|
+
checks do not certify manufacturability. Keep minimum walls, overhangs, fits, and parameter
|
|
766
|
+
messages in your model's validation.
|
|
735
767
|
|
|
736
768
|
After adapting a recipe, check its default, the largest and smallest supported dimensions, and
|
|
737
769
|
every optional feature. Inspect the current result in Studio before exporting it. Continue with
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Write a standalone model
|
|
2
|
+
|
|
3
|
+
Write a TypeScript model for a plate with a hole, then check and run it with the CLI.
|
|
4
|
+
|
|
5
|
+
A standalone model uses `@metamesh/modeling` and default-exports a synchronous generation program.
|
|
6
|
+
The CLI or your application supplies the engine.
|
|
7
|
+
|
|
8
|
+
## Minimal model entry
|
|
9
|
+
|
|
10
|
+
Save this complete example as `model.ts`. It makes a 30 × 20 × 6 mm plate with a through-hole:
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
import { box, cylinder, generate } from "@metamesh/modeling";
|
|
16
|
+
|
|
17
|
+
export default generate<Record<never, never>>(({ part }) => {
|
|
18
|
+
const body = box({ size: [30, 20, 6] });
|
|
19
|
+
const bore = cylinder({ height: 8, radius: 3, sizing: "face" });
|
|
20
|
+
return part("plate", body.subtract([bore]));
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
The cutter extends beyond both faces of the centered plate. `part("plate", ...)` gives the output
|
|
27
|
+
a stable identity. This model takes an empty parameter map.
|
|
28
|
+
|
|
29
|
+
## Check and run
|
|
30
|
+
|
|
31
|
+
With [Modeling and the CLI installed](https://metamesh.studio/docs/develop/agent-authoring#install-and-discover-the-environment),
|
|
32
|
+
check the source and generate a captured result:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pnpm exec metamesh check model.ts --kind model
|
|
36
|
+
pnpm exec metamesh run model.ts --kind model
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Continue with [inspection and rendering](https://metamesh.studio/docs/develop/agent-authoring#inspect-the-captured-result),
|
|
40
|
+
or [host the program in your application](hosting.md).
|
|
41
|
+
Use the [construction chooser](concepts.md#choose-a-modeling-path) when you
|
|
42
|
+
need to select another modeling approach.
|