brepjs 18.128.0 → 18.129.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/dist/brepjs.cjs +76 -13
- package/dist/brepjs.js +76 -13
- package/dist/csg/builders.d.ts +8 -1
- package/dist/csg/evaluators/color.d.ts +5 -0
- package/dist/csg/index.d.ts +2 -2
- package/dist/csg/serialize.d.ts +1 -1
- package/dist/csg/types.d.ts +7 -1
- package/dist/{drawFns-DNekh4DS.js → drawFns-BFktlDIi.js} +1 -1
- package/dist/{drawFns-CQYR1jpa.cjs → drawFns-CP82Xdma.cjs} +1 -1
- package/dist/{healingFns-Digw1d6D.js → healingFns-BptGY1Th.js} +1 -1
- package/dist/{healingFns-CfSU0G7V.cjs → healingFns-DTr6cgTb.cjs} +1 -1
- package/dist/operations.cjs +1 -1
- package/dist/operations.js +1 -1
- package/dist/{primitiveFns-5E__ejiB.js → primitiveFns-BSMbMRf1.js} +1 -1
- package/dist/{primitiveFns-CBxF87wn.cjs → primitiveFns-C6Trlz8m.cjs} +1 -1
- package/dist/sketching.cjs +2 -2
- package/dist/sketching.js +2 -2
- package/dist/{solidBuilders-BWLoWRk1.cjs → solidBuilders-CgW7Ge_s.cjs} +8 -0
- package/dist/{solidBuilders-BSIOdrR5.js → solidBuilders-Devga1Vk.js} +3 -1
- package/dist/text.cjs +2 -2
- package/dist/text.js +2 -2
- package/dist/{textBlueprints-Cv-lkXnr.cjs → textBlueprints-BMvBJ79v.cjs} +1 -1
- package/dist/{textBlueprints-C1aMaWLc.js → textBlueprints-myJW6Fzl.js} +1 -1
- package/dist/{textMetrics-DQauYgh5.cjs → textMetrics-Byfb_37y.cjs} +1 -1
- package/dist/{textMetrics-DH3YPwVC.js → textMetrics-CPFqh2a1.js} +1 -1
- package/dist/{threadFns-B027FAdl.js → threadFns-B6-3UeCZ.js} +2 -2
- package/dist/{threadFns-CY1DC7fY.cjs → threadFns-BQIE5dO9.cjs} +2 -2
- package/dist/topology/metadata/colorFns.d.ts +3 -0
- package/dist/topology.cjs +3 -3
- package/dist/topology.js +3 -3
- package/package.json +1 -1
package/dist/brepjs.cjs
CHANGED
|
@@ -12,28 +12,28 @@ const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
|
12
12
|
const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
|
|
13
13
|
const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
|
|
14
14
|
const require_originTrackingFns = require("./originTrackingFns-CKKmLIUH.cjs");
|
|
15
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
16
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
15
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
16
|
+
const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
|
|
17
17
|
const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
|
|
18
18
|
const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
|
|
19
19
|
const require_meshFns = require("./meshFns-CB7HsxzB.cjs");
|
|
20
20
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
21
21
|
const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
|
|
22
|
-
const require_healingFns = require("./healingFns-
|
|
23
|
-
const require_threadFns = require("./threadFns-
|
|
22
|
+
const require_healingFns = require("./healingFns-DTr6cgTb.cjs");
|
|
23
|
+
const require_threadFns = require("./threadFns-BQIE5dO9.cjs");
|
|
24
24
|
const require_blueprintSketcher = require("./blueprintSketcher-B5UqD0FO.cjs");
|
|
25
25
|
const require_helpers = require("./helpers-DLZUxawd.cjs");
|
|
26
26
|
const require_blueprint = require("./blueprint-BgbVmx4L.cjs");
|
|
27
|
-
const require_drawFns = require("./drawFns-
|
|
27
|
+
const require_drawFns = require("./drawFns-CP82Xdma.cjs");
|
|
28
28
|
const require_measureFns = require("./measureFns-CaEuNAZO.cjs");
|
|
29
29
|
const require_cornerFinder = require("./cornerFinder-DIe6pMPU.cjs");
|
|
30
30
|
const require_boolean2D = require("./boolean2D-p7RMNFtG.cjs");
|
|
31
31
|
const require_blueprintFns = require("./blueprintFns-oatmkSjh.cjs");
|
|
32
32
|
const require_importFns = require("./importFns-ncp_0vEl.cjs");
|
|
33
33
|
const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
|
|
34
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
34
|
+
const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
|
|
35
35
|
const require_cameraFns = require("./cameraFns-i1otOZ0V.cjs");
|
|
36
|
-
const require_textMetrics = require("./textMetrics-
|
|
36
|
+
const require_textMetrics = require("./textMetrics-Byfb_37y.cjs");
|
|
37
37
|
const require_adjacencyFns = require("./adjacencyFns-BhdfZany.cjs");
|
|
38
38
|
const require_refResolveFns = require("./refResolveFns-c7RWIsZy.cjs");
|
|
39
39
|
const require_workerPool = require("./workerPool-D30NsiIW.cjs");
|
|
@@ -1794,6 +1794,23 @@ function extrude$1(profile, vector) {
|
|
|
1794
1794
|
freeParams: depsOf(profile, ve)
|
|
1795
1795
|
};
|
|
1796
1796
|
}
|
|
1797
|
+
/** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
|
|
1798
|
+
* the evaluated result of `target`. Metadata rides beside the geometry: the
|
|
1799
|
+
* evaluator re-tags the shared target materialization with an independent
|
|
1800
|
+
* handle before coloring, so plain consumers of the same subtree stay
|
|
1801
|
+
* metadata-free. */
|
|
1802
|
+
function color(target, input) {
|
|
1803
|
+
const rgba = require_solidBuilders.parseColor(input).map((c) => Math.min(1, Math.max(0, c)));
|
|
1804
|
+
let h = mix(startHash("Color"), target);
|
|
1805
|
+
for (const c of rgba) h = fnvMixNumber(h, c);
|
|
1806
|
+
return {
|
|
1807
|
+
kind: "Color",
|
|
1808
|
+
target,
|
|
1809
|
+
color: rgba,
|
|
1810
|
+
structuralHash: h,
|
|
1811
|
+
freeParams: target.freeParams
|
|
1812
|
+
};
|
|
1813
|
+
}
|
|
1797
1814
|
/** Planar face from a closed outline contour with optional first-class holes.
|
|
1798
1815
|
* Contours auto-close at evaluation when the final segment does not return
|
|
1799
1816
|
* to the start point. */
|
|
@@ -1923,7 +1940,8 @@ function outputKindOf(node) {
|
|
|
1923
1940
|
case "Translate":
|
|
1924
1941
|
case "Rotate":
|
|
1925
1942
|
case "Scale":
|
|
1926
|
-
case "Mirror":
|
|
1943
|
+
case "Mirror":
|
|
1944
|
+
case "Color": return outputKindOf(node.target);
|
|
1927
1945
|
case "Extrude":
|
|
1928
1946
|
case "Revolve":
|
|
1929
1947
|
case "Loft":
|
|
@@ -2913,6 +2931,27 @@ function evalProfile(node, ctx) {
|
|
|
2913
2931
|
}
|
|
2914
2932
|
}
|
|
2915
2933
|
//#endregion
|
|
2934
|
+
//#region src/csg/evaluators/color.ts
|
|
2935
|
+
function evalColor(node, ctx) {
|
|
2936
|
+
const t = ctx.evalNode(node.target);
|
|
2937
|
+
if (!t.ok) return t;
|
|
2938
|
+
const kernel = require_shapeTypes.getKernel();
|
|
2939
|
+
const { handle, dispose } = kernel.composeTransform([{
|
|
2940
|
+
type: "translate",
|
|
2941
|
+
x: 0,
|
|
2942
|
+
y: 0,
|
|
2943
|
+
z: 0
|
|
2944
|
+
}]);
|
|
2945
|
+
let moved;
|
|
2946
|
+
try {
|
|
2947
|
+
moved = require_shapeTypes.castResultShape(kernel.locate(t.value.wrapped, handle));
|
|
2948
|
+
} finally {
|
|
2949
|
+
dispose();
|
|
2950
|
+
}
|
|
2951
|
+
if (require_solidBuilders.hasAnyMetadata(t.value)) require_solidBuilders.propagateMetadataThroughRelocation(t.value, moved);
|
|
2952
|
+
return require_errors.ok(require_solidBuilders.colorShape(moved, [...node.color]));
|
|
2953
|
+
}
|
|
2954
|
+
//#endregion
|
|
2916
2955
|
//#region src/csg/evaluate.ts
|
|
2917
2956
|
function dispatch(node, ctx) {
|
|
2918
2957
|
switch (node.kind) {
|
|
@@ -2943,6 +2982,7 @@ function dispatch(node, ctx) {
|
|
|
2943
2982
|
case "Path": return evalPath(node, ctx);
|
|
2944
2983
|
case "Sweep": return evalSweep(node, ctx);
|
|
2945
2984
|
case "Profile": return evalProfile(node, ctx);
|
|
2985
|
+
case "Color": return evalColor(node, ctx);
|
|
2946
2986
|
}
|
|
2947
2987
|
}
|
|
2948
2988
|
function hashExprValue(h, v) {
|
|
@@ -3352,7 +3392,7 @@ function withEvaluator(options, fn) {
|
|
|
3352
3392
|
var MIN_CSG_VERSION = 1;
|
|
3353
3393
|
function toJSON(node) {
|
|
3354
3394
|
return {
|
|
3355
|
-
csgVersion:
|
|
3395
|
+
csgVersion: 4,
|
|
3356
3396
|
root: nodeToJson(node)
|
|
3357
3397
|
};
|
|
3358
3398
|
}
|
|
@@ -3577,6 +3617,11 @@ function nodeToJson(n) {
|
|
|
3577
3617
|
outline: contourToJson(n.outline),
|
|
3578
3618
|
holes: n.holes.map(contourToJson)
|
|
3579
3619
|
};
|
|
3620
|
+
if (n.kind === "Color") return {
|
|
3621
|
+
kind: "Color",
|
|
3622
|
+
target: nodeToJson(n.target),
|
|
3623
|
+
color: [...n.color]
|
|
3624
|
+
};
|
|
3580
3625
|
if (n.kind === "Compound") return {
|
|
3581
3626
|
kind: "Compound",
|
|
3582
3627
|
children: n.children.map(nodeToJson)
|
|
@@ -3620,7 +3665,7 @@ function readVec2(v, where) {
|
|
|
3620
3665
|
function fromJSON(envelope) {
|
|
3621
3666
|
if (!isObj(envelope)) return bad("input is not an object");
|
|
3622
3667
|
const v = envelope["csgVersion"];
|
|
3623
|
-
if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v >
|
|
3668
|
+
if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 4) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..4)`);
|
|
3624
3669
|
const root = envelope["root"];
|
|
3625
3670
|
return readNode(root);
|
|
3626
3671
|
}
|
|
@@ -3734,6 +3779,7 @@ function readNode(j) {
|
|
|
3734
3779
|
case "Path": return readPath(j);
|
|
3735
3780
|
case "Sweep": return readSweep(j);
|
|
3736
3781
|
case "Profile": return readProfile(j);
|
|
3782
|
+
case "Color": return readColor(j);
|
|
3737
3783
|
default: return bad(`unknown node kind: ${String(kind)}`);
|
|
3738
3784
|
}
|
|
3739
3785
|
}
|
|
@@ -3983,6 +4029,18 @@ function readContour(j, where) {
|
|
|
3983
4029
|
}
|
|
3984
4030
|
return require_errors.ok(contour(start.value, segments));
|
|
3985
4031
|
}
|
|
4032
|
+
function readColor(j) {
|
|
4033
|
+
const target = readNode(j["target"]);
|
|
4034
|
+
if (!target.ok) return target;
|
|
4035
|
+
const c = j["color"];
|
|
4036
|
+
if (!Array.isArray(c) || c.length !== 4 || !c.every((v) => isNumber$1(v) && v >= 0 && v <= 1)) return bad("Color.color: expected an RGBA array of 4 numbers in [0, 1]");
|
|
4037
|
+
return require_errors.ok(color(target.value, [
|
|
4038
|
+
c[0],
|
|
4039
|
+
c[1],
|
|
4040
|
+
c[2],
|
|
4041
|
+
c[3]
|
|
4042
|
+
]));
|
|
4043
|
+
}
|
|
3986
4044
|
function readProfile(j) {
|
|
3987
4045
|
const outline = readContour(j["outline"], "Profile.outline");
|
|
3988
4046
|
if (!outline.ok) return outline;
|
|
@@ -4134,7 +4192,8 @@ function optimizeNode(n) {
|
|
|
4134
4192
|
case "Loft":
|
|
4135
4193
|
case "Sweep":
|
|
4136
4194
|
case "Profile":
|
|
4137
|
-
case "Path":
|
|
4195
|
+
case "Path":
|
|
4196
|
+
case "Color": return optimizeFeature(n);
|
|
4138
4197
|
}
|
|
4139
4198
|
}
|
|
4140
4199
|
function optimizeFeature(n) {
|
|
@@ -4148,6 +4207,7 @@ function optimizeFeature(n) {
|
|
|
4148
4207
|
case "Sweep": return sweep$2(optimizeNode(n.profile), optimizeNode(n.spine), { frenet: n.frenet });
|
|
4149
4208
|
case "Profile": return profile(foldContour(n.outline, foldExpr), n.holes.map((hole) => foldContour(hole, foldExpr)));
|
|
4150
4209
|
case "Path": return path(foldExpr(n.start), n.segments.map((s) => foldSegment(s, foldExpr)));
|
|
4210
|
+
case "Color": return color(optimizeNode(n.target), [...n.color]);
|
|
4151
4211
|
}
|
|
4152
4212
|
}
|
|
4153
4213
|
function optimizeFuse(a, b, tol) {
|
|
@@ -4247,6 +4307,7 @@ function rebuildChildren(n, pred, repl) {
|
|
|
4247
4307
|
});
|
|
4248
4308
|
case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl)), { ruled: n.ruled });
|
|
4249
4309
|
case "Sweep": return sweep$2(walk(n.profile, pred, repl), walk(n.spine, pred, repl), { frenet: n.frenet });
|
|
4310
|
+
case "Color": return color(walk(n.target, pred, repl), [...n.color]);
|
|
4250
4311
|
}
|
|
4251
4312
|
}
|
|
4252
4313
|
function forEachNode(root, fn) {
|
|
@@ -4275,7 +4336,8 @@ function childrenOf(n) {
|
|
|
4275
4336
|
case "Translate":
|
|
4276
4337
|
case "Rotate":
|
|
4277
4338
|
case "Scale":
|
|
4278
|
-
case "Mirror":
|
|
4339
|
+
case "Mirror":
|
|
4340
|
+
case "Color": return [n.target];
|
|
4279
4341
|
case "Compound": return n.children;
|
|
4280
4342
|
case "Instance": return [n.source];
|
|
4281
4343
|
case "Extrude":
|
|
@@ -8286,7 +8348,7 @@ var patterns_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
|
8286
8348
|
//#endregion
|
|
8287
8349
|
//#region src/ns/csg.ts
|
|
8288
8350
|
var csg_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
8289
|
-
CSG_VERSION: () =>
|
|
8351
|
+
CSG_VERSION: () => 4,
|
|
8290
8352
|
Evaluator: () => Evaluator,
|
|
8291
8353
|
add: () => add$1,
|
|
8292
8354
|
arbitraryClosedProfile: () => arbitraryClosedProfile,
|
|
@@ -8304,6 +8366,7 @@ var csg_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
|
8304
8366
|
circle: () => circle$1,
|
|
8305
8367
|
circleHollowProfile: () => circleHollowProfile,
|
|
8306
8368
|
circularProfile: () => circularProfile,
|
|
8369
|
+
color: () => color,
|
|
8307
8370
|
component: () => component,
|
|
8308
8371
|
compound: () => compound$1,
|
|
8309
8372
|
cone: () => cone$2,
|
package/dist/brepjs.js
CHANGED
|
@@ -10,28 +10,28 @@ import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane,
|
|
|
10
10
|
import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CQahLrCx.js";
|
|
11
11
|
import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, p as removeHolesFromFace, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-CaBQNffu.js";
|
|
12
12
|
import { i as setShapeOrigin, t as getFaceOrigins } from "./originTrackingFns-JxAlPJXX.js";
|
|
13
|
-
import { A as
|
|
14
|
-
import { A as locate$1, C as threePointArc, D as wireLoop, E as wire, F as transformCopy$1, I as translate$2, M as resize, N as rotate$2, O as applyMatrix$1, P as scale$3, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, j as mirror$2, k as composeTransforms, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-
|
|
13
|
+
import { A as parseColor, D as colorShape, E as colorFaces, F as tagFaces, M as getFaceTags, N as getTagMetadata, O as getFaceColor, P as setTagMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, j as findFacesByTag, k as getShapeColor, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-Devga1Vk.js";
|
|
14
|
+
import { A as locate$1, C as threePointArc, D as wireLoop, E as wire, F as transformCopy$1, I as translate$2, M as resize, N as rotate$2, O as applyMatrix$1, P as scale$3, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, j as mirror$2, k as composeTransforms, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-BSMbMRf1.js";
|
|
15
15
|
import { a as isSameShape, i as isEqualShape, n as getHashCode, o as simplify$1, r as isEmpty$2, s as toBREP$1, t as clone$1 } from "./shapeFns-DyDRpo6K.js";
|
|
16
16
|
import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-Bh_PHl9N.js";
|
|
17
17
|
import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-CpfeEN1b.js";
|
|
18
18
|
import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
19
19
|
import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, p as makeEllipseArc, r as makeFace, s as assembleWire, u as makeBezierCurve } from "./surfaceBuilders-B7WlmoVr.js";
|
|
20
|
-
import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-
|
|
21
|
-
import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, G as quatFromAxisAngle, H as circularPattern, I as createAssemblyNode, J as quatRotate, K as quatFromTo, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as quatMultiply, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-
|
|
20
|
+
import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-BptGY1Th.js";
|
|
21
|
+
import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, G as quatFromAxisAngle, H as circularPattern, I as createAssemblyNode, J as quatRotate, K as quatFromTo, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as quatMultiply, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-B6-3UeCZ.js";
|
|
22
22
|
import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-yZiAeqft.js";
|
|
23
23
|
import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BiqV-wPK.js";
|
|
24
24
|
import { g as approximateAsSvgCompatibleCurve } from "./blueprint-DRvc1LOz.js";
|
|
25
|
-
import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-
|
|
25
|
+
import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-BFktlDIi.js";
|
|
26
26
|
import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, i as measureCurvatureAtMid, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, r as measureCurvatureAt, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-9-1Ng0wR.js";
|
|
27
27
|
import { t as cornerFinder } from "./cornerFinder-CiHpo7kU.js";
|
|
28
28
|
import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BuM5xJSa.js";
|
|
29
29
|
import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, n as createCompoundBlueprint, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-COSD5yZH.js";
|
|
30
30
|
import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-BId6d2pt.js";
|
|
31
31
|
import { a as multiSectionSweep, c as twistExtrude, i as guidedSweep, n as loftAll, o as supportExtrude, r as complexExtrude, s as sweep$1, t as loft$2 } from "./loftFns-m7LoJWE2.js";
|
|
32
|
-
import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-
|
|
32
|
+
import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-myJW6Fzl.js";
|
|
33
33
|
import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-VVI0cWLa.js";
|
|
34
|
-
import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-
|
|
34
|
+
import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-CPFqh2a1.js";
|
|
35
35
|
import { a as facesOfVertex, c as verticesOfFace, i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-CwcdjOsT.js";
|
|
36
36
|
import { _ as createRef, a as isVertexRef, b as defaultScorer, c as resolveRefParams, d as createVertexRef, f as resolveVertexRef, g as captureHint, h as assignRoles, i as isLineageRef, l as createDerivedFaceRef, m as resolveEdgeRef, n as isEdgeRef, o as resolveLineageRef, p as createEdgeRef, r as isFaceRef, s as resolveRefIn, t as isDerivedFaceRef, u as resolveDerivedFaceRef, v as resolveRef, y as updateRoles } from "./refResolveFns-DcyIQSDi.js";
|
|
37
37
|
import { _ as isSuccessResponse, a as createWorkerClient, c as enqueueTask, d as rejectAll, f as isBatchRequest, g as isOperationRequest, h as isInitRequest, i as registerHandler, l as isEmpty$1, m as isErrorResponse, n as createOperationRegistry, o as createTaskQueue, p as isDisposeRequest, r as createWorkerHandler, s as dequeueTask, t as createWorkerPool, u as pendingCount } from "./workerPool-XcYX2UZ0.js";
|
|
@@ -1804,6 +1804,23 @@ function extrude$1(profile, vector) {
|
|
|
1804
1804
|
freeParams: depsOf(profile, ve)
|
|
1805
1805
|
};
|
|
1806
1806
|
}
|
|
1807
|
+
/** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
|
|
1808
|
+
* the evaluated result of `target`. Metadata rides beside the geometry: the
|
|
1809
|
+
* evaluator re-tags the shared target materialization with an independent
|
|
1810
|
+
* handle before coloring, so plain consumers of the same subtree stay
|
|
1811
|
+
* metadata-free. */
|
|
1812
|
+
function color(target, input) {
|
|
1813
|
+
const rgba = parseColor(input).map((c) => Math.min(1, Math.max(0, c)));
|
|
1814
|
+
let h = mix(startHash("Color"), target);
|
|
1815
|
+
for (const c of rgba) h = fnvMixNumber(h, c);
|
|
1816
|
+
return {
|
|
1817
|
+
kind: "Color",
|
|
1818
|
+
target,
|
|
1819
|
+
color: rgba,
|
|
1820
|
+
structuralHash: h,
|
|
1821
|
+
freeParams: target.freeParams
|
|
1822
|
+
};
|
|
1823
|
+
}
|
|
1807
1824
|
/** Planar face from a closed outline contour with optional first-class holes.
|
|
1808
1825
|
* Contours auto-close at evaluation when the final segment does not return
|
|
1809
1826
|
* to the start point. */
|
|
@@ -1933,7 +1950,8 @@ function outputKindOf(node) {
|
|
|
1933
1950
|
case "Translate":
|
|
1934
1951
|
case "Rotate":
|
|
1935
1952
|
case "Scale":
|
|
1936
|
-
case "Mirror":
|
|
1953
|
+
case "Mirror":
|
|
1954
|
+
case "Color": return outputKindOf(node.target);
|
|
1937
1955
|
case "Extrude":
|
|
1938
1956
|
case "Revolve":
|
|
1939
1957
|
case "Loft":
|
|
@@ -2923,6 +2941,27 @@ function evalProfile(node, ctx) {
|
|
|
2923
2941
|
}
|
|
2924
2942
|
}
|
|
2925
2943
|
//#endregion
|
|
2944
|
+
//#region src/csg/evaluators/color.ts
|
|
2945
|
+
function evalColor(node, ctx) {
|
|
2946
|
+
const t = ctx.evalNode(node.target);
|
|
2947
|
+
if (!t.ok) return t;
|
|
2948
|
+
const kernel = getKernel();
|
|
2949
|
+
const { handle, dispose } = kernel.composeTransform([{
|
|
2950
|
+
type: "translate",
|
|
2951
|
+
x: 0,
|
|
2952
|
+
y: 0,
|
|
2953
|
+
z: 0
|
|
2954
|
+
}]);
|
|
2955
|
+
let moved;
|
|
2956
|
+
try {
|
|
2957
|
+
moved = castResultShape(kernel.locate(t.value.wrapped, handle));
|
|
2958
|
+
} finally {
|
|
2959
|
+
dispose();
|
|
2960
|
+
}
|
|
2961
|
+
if (hasAnyMetadata(t.value)) propagateMetadataThroughRelocation(t.value, moved);
|
|
2962
|
+
return ok(colorShape(moved, [...node.color]));
|
|
2963
|
+
}
|
|
2964
|
+
//#endregion
|
|
2926
2965
|
//#region src/csg/evaluate.ts
|
|
2927
2966
|
function dispatch(node, ctx) {
|
|
2928
2967
|
switch (node.kind) {
|
|
@@ -2953,6 +2992,7 @@ function dispatch(node, ctx) {
|
|
|
2953
2992
|
case "Path": return evalPath(node, ctx);
|
|
2954
2993
|
case "Sweep": return evalSweep(node, ctx);
|
|
2955
2994
|
case "Profile": return evalProfile(node, ctx);
|
|
2995
|
+
case "Color": return evalColor(node, ctx);
|
|
2956
2996
|
}
|
|
2957
2997
|
}
|
|
2958
2998
|
function hashExprValue(h, v) {
|
|
@@ -3362,7 +3402,7 @@ function withEvaluator(options, fn) {
|
|
|
3362
3402
|
var MIN_CSG_VERSION = 1;
|
|
3363
3403
|
function toJSON(node) {
|
|
3364
3404
|
return {
|
|
3365
|
-
csgVersion:
|
|
3405
|
+
csgVersion: 4,
|
|
3366
3406
|
root: nodeToJson(node)
|
|
3367
3407
|
};
|
|
3368
3408
|
}
|
|
@@ -3587,6 +3627,11 @@ function nodeToJson(n) {
|
|
|
3587
3627
|
outline: contourToJson(n.outline),
|
|
3588
3628
|
holes: n.holes.map(contourToJson)
|
|
3589
3629
|
};
|
|
3630
|
+
if (n.kind === "Color") return {
|
|
3631
|
+
kind: "Color",
|
|
3632
|
+
target: nodeToJson(n.target),
|
|
3633
|
+
color: [...n.color]
|
|
3634
|
+
};
|
|
3590
3635
|
if (n.kind === "Compound") return {
|
|
3591
3636
|
kind: "Compound",
|
|
3592
3637
|
children: n.children.map(nodeToJson)
|
|
@@ -3630,7 +3675,7 @@ function readVec2(v, where) {
|
|
|
3630
3675
|
function fromJSON(envelope) {
|
|
3631
3676
|
if (!isObj(envelope)) return bad("input is not an object");
|
|
3632
3677
|
const v = envelope["csgVersion"];
|
|
3633
|
-
if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v >
|
|
3678
|
+
if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 4) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..4)`);
|
|
3634
3679
|
const root = envelope["root"];
|
|
3635
3680
|
return readNode(root);
|
|
3636
3681
|
}
|
|
@@ -3744,6 +3789,7 @@ function readNode(j) {
|
|
|
3744
3789
|
case "Path": return readPath(j);
|
|
3745
3790
|
case "Sweep": return readSweep(j);
|
|
3746
3791
|
case "Profile": return readProfile(j);
|
|
3792
|
+
case "Color": return readColor(j);
|
|
3747
3793
|
default: return bad(`unknown node kind: ${String(kind)}`);
|
|
3748
3794
|
}
|
|
3749
3795
|
}
|
|
@@ -3993,6 +4039,18 @@ function readContour(j, where) {
|
|
|
3993
4039
|
}
|
|
3994
4040
|
return ok(contour(start.value, segments));
|
|
3995
4041
|
}
|
|
4042
|
+
function readColor(j) {
|
|
4043
|
+
const target = readNode(j["target"]);
|
|
4044
|
+
if (!target.ok) return target;
|
|
4045
|
+
const c = j["color"];
|
|
4046
|
+
if (!Array.isArray(c) || c.length !== 4 || !c.every((v) => isNumber$1(v) && v >= 0 && v <= 1)) return bad("Color.color: expected an RGBA array of 4 numbers in [0, 1]");
|
|
4047
|
+
return ok(color(target.value, [
|
|
4048
|
+
c[0],
|
|
4049
|
+
c[1],
|
|
4050
|
+
c[2],
|
|
4051
|
+
c[3]
|
|
4052
|
+
]));
|
|
4053
|
+
}
|
|
3996
4054
|
function readProfile(j) {
|
|
3997
4055
|
const outline = readContour(j["outline"], "Profile.outline");
|
|
3998
4056
|
if (!outline.ok) return outline;
|
|
@@ -4144,7 +4202,8 @@ function optimizeNode(n) {
|
|
|
4144
4202
|
case "Loft":
|
|
4145
4203
|
case "Sweep":
|
|
4146
4204
|
case "Profile":
|
|
4147
|
-
case "Path":
|
|
4205
|
+
case "Path":
|
|
4206
|
+
case "Color": return optimizeFeature(n);
|
|
4148
4207
|
}
|
|
4149
4208
|
}
|
|
4150
4209
|
function optimizeFeature(n) {
|
|
@@ -4158,6 +4217,7 @@ function optimizeFeature(n) {
|
|
|
4158
4217
|
case "Sweep": return sweep$2(optimizeNode(n.profile), optimizeNode(n.spine), { frenet: n.frenet });
|
|
4159
4218
|
case "Profile": return profile(foldContour(n.outline, foldExpr), n.holes.map((hole) => foldContour(hole, foldExpr)));
|
|
4160
4219
|
case "Path": return path(foldExpr(n.start), n.segments.map((s) => foldSegment(s, foldExpr)));
|
|
4220
|
+
case "Color": return color(optimizeNode(n.target), [...n.color]);
|
|
4161
4221
|
}
|
|
4162
4222
|
}
|
|
4163
4223
|
function optimizeFuse(a, b, tol) {
|
|
@@ -4257,6 +4317,7 @@ function rebuildChildren(n, pred, repl) {
|
|
|
4257
4317
|
});
|
|
4258
4318
|
case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl)), { ruled: n.ruled });
|
|
4259
4319
|
case "Sweep": return sweep$2(walk(n.profile, pred, repl), walk(n.spine, pred, repl), { frenet: n.frenet });
|
|
4320
|
+
case "Color": return color(walk(n.target, pred, repl), [...n.color]);
|
|
4260
4321
|
}
|
|
4261
4322
|
}
|
|
4262
4323
|
function forEachNode(root, fn) {
|
|
@@ -4285,7 +4346,8 @@ function childrenOf(n) {
|
|
|
4285
4346
|
case "Translate":
|
|
4286
4347
|
case "Rotate":
|
|
4287
4348
|
case "Scale":
|
|
4288
|
-
case "Mirror":
|
|
4349
|
+
case "Mirror":
|
|
4350
|
+
case "Color": return [n.target];
|
|
4289
4351
|
case "Compound": return n.children;
|
|
4290
4352
|
case "Instance": return [n.source];
|
|
4291
4353
|
case "Extrude":
|
|
@@ -8295,7 +8357,7 @@ var patterns_exports = /* @__PURE__ */ __exportAll({
|
|
|
8295
8357
|
//#endregion
|
|
8296
8358
|
//#region src/ns/csg.ts
|
|
8297
8359
|
var csg_exports = /* @__PURE__ */ __exportAll({
|
|
8298
|
-
CSG_VERSION: () =>
|
|
8360
|
+
CSG_VERSION: () => 4,
|
|
8299
8361
|
Evaluator: () => Evaluator,
|
|
8300
8362
|
add: () => add$1,
|
|
8301
8363
|
arbitraryClosedProfile: () => arbitraryClosedProfile,
|
|
@@ -8313,6 +8375,7 @@ var csg_exports = /* @__PURE__ */ __exportAll({
|
|
|
8313
8375
|
circle: () => circle$1,
|
|
8314
8376
|
circleHollowProfile: () => circleHollowProfile,
|
|
8315
8377
|
circularProfile: () => circularProfile,
|
|
8378
|
+
color: () => color,
|
|
8316
8379
|
component: () => component,
|
|
8317
8380
|
compound: () => compound$1,
|
|
8318
8381
|
cone: () => cone$2,
|
package/dist/csg/builders.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ScalarInput, Vec2Input, Vec3Input } from './expressions.js';
|
|
2
2
|
import { Contour, Segment2D } from './segments.js';
|
|
3
3
|
import { Matrix4x4 } from '../core/types.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ColorInput } from '../topology/metadata/colorFns.js';
|
|
5
|
+
import { BoxNode, SphereNode, CylinderNode, ConeNode, TorusNode, PolygonNode, CircleNode, LineNode, VertexLitNode, EmptyNode, FuseNode, CutNode, IntersectNode, FuseAllNode, CutAllNode, TranslateNode, RotateNode, ScaleNode, MirrorNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, ColorNode, CompoundNode, InstanceNode, IRNode, SolidNode, FaceNode, EdgeNode, VertexNode } from './types.js';
|
|
5
6
|
export declare function box(x: ScalarInput, y: ScalarInput, z: ScalarInput): BoxNode;
|
|
6
7
|
export declare function sphere(radius: ScalarInput): SphereNode;
|
|
7
8
|
export declare function cylinder(radius: ScalarInput, height: ScalarInput): CylinderNode;
|
|
@@ -35,6 +36,12 @@ export interface MirrorOptions {
|
|
|
35
36
|
}
|
|
36
37
|
export declare function mirror(target: IRNode, options?: MirrorOptions): MirrorNode;
|
|
37
38
|
export declare function extrude(profile: FaceNode, vector: Vec3Input): ExtrudeNode;
|
|
39
|
+
/** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
|
|
40
|
+
* the evaluated result of `target`. Metadata rides beside the geometry: the
|
|
41
|
+
* evaluator re-tags the shared target materialization with an independent
|
|
42
|
+
* handle before coloring, so plain consumers of the same subtree stay
|
|
43
|
+
* metadata-free. */
|
|
44
|
+
export declare function color(target: IRNode, input: ColorInput): ColorNode;
|
|
38
45
|
/** Planar face from a closed outline contour with optional first-class holes.
|
|
39
46
|
* Contours auto-close at evaluation when the final segment does not return
|
|
40
47
|
* to the start point. */
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Result } from '../../core/result.js';
|
|
2
|
+
import { AnyShape, Dimension } from '../../core/shapeTypes.js';
|
|
3
|
+
import { ColorNode } from '../types.js';
|
|
4
|
+
import { EvalContext } from './context.js';
|
|
5
|
+
export declare function evalColor(node: ColorNode, ctx: EvalContext): Result<AnyShape<Dimension>>;
|
package/dist/csg/index.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* parameterize via named expression bindings; evaluate against the active
|
|
6
6
|
* kernel with subtree-level cache reuse for incremental parametric edits.
|
|
7
7
|
*/
|
|
8
|
-
export { box, sphere, cylinder, cone, torus, polygon, circle, line, vertex, emptySolid, emptyFace, emptyWire, fuse, cut, intersect, fuseAll, cutAll, translate, rotate, scale, mirror, extrude, revolve, loft, sweep, profile, path, compound, instance, type RevolveOptions, type LoftOptions, type SweepNodeOptions, type RotateOptions, type ScaleOptions, type MirrorOptions, } from './builders.js';
|
|
8
|
+
export { box, sphere, cylinder, cone, torus, polygon, circle, line, vertex, emptySolid, emptyFace, emptyWire, fuse, cut, intersect, fuseAll, cutAll, translate, rotate, scale, mirror, extrude, revolve, loft, sweep, profile, path, color, compound, instance, type RevolveOptions, type LoftOptions, type SweepNodeOptions, type RotateOptions, type ScaleOptions, type MirrorOptions, } from './builders.js';
|
|
9
9
|
export { numLit, vec3Lit, vec2Lit, param, binOp, unaryOp, component, buildVec, add, mul, asScalarExpr, asVec3Expr, asVec2Expr, type Expr, type ExprValue, type Env, type ScalarInput, type Vec3Input, type Vec2Input, type BinaryOp, type UnaryOp, } from './expressions.js';
|
|
10
|
-
export type { IRNode, NodeKind, OutputKind, PrimitiveNode, BooleanNode, TransformIRNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, InstanceNode, SolidNode, FaceNode, EdgeNode, VertexNode, AnyNode, } from './types.js';
|
|
10
|
+
export type { IRNode, NodeKind, OutputKind, PrimitiveNode, BooleanNode, TransformIRNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, ColorNode, InstanceNode, SolidNode, FaceNode, EdgeNode, VertexNode, AnyNode, } from './types.js';
|
|
11
11
|
export { outputKindOf } from './types.js';
|
|
12
12
|
export { lineTo, arcTo, bezierTo, ellipseArcTo, contour, type Contour, type Segment2D, type SegmentOptions, type EllipseArcOptions, } from './segments.js';
|
|
13
13
|
export { rectangularProfile, circularProfile, iBeamProfile, asymmetricIProfile, lShapeProfile, tShapeProfile, uShapeProfile, zShapeProfile, cShapeProfile, ellipseProfile, trapeziumProfile, rectangleHollowProfile, circleHollowProfile, arbitraryClosedProfile, arbitraryProfileWithVoids, type IBeamParams, type AsymmetricIParams, type LShapeParams, type TShapeParams, type UShapeParams, type ZShapeParams, type CShapeParams, type TrapeziumParams, type RectangleHollowParams, type CircleHollowParams, } from './profiles.js';
|
package/dist/csg/serialize.d.ts
CHANGED
package/dist/csg/types.d.ts
CHANGED
|
@@ -124,6 +124,12 @@ export interface RevolveNode extends IRNodeBase {
|
|
|
124
124
|
readonly axis?: Expr | undefined;
|
|
125
125
|
readonly at?: Expr | undefined;
|
|
126
126
|
}
|
|
127
|
+
export interface ColorNode extends IRNodeBase {
|
|
128
|
+
readonly kind: 'Color';
|
|
129
|
+
readonly target: IRNode;
|
|
130
|
+
/** Canonical RGBA, each component in [0, 1]. */
|
|
131
|
+
readonly color: readonly [number, number, number, number];
|
|
132
|
+
}
|
|
127
133
|
export interface ProfileNode extends IRNodeBase {
|
|
128
134
|
readonly kind: 'Profile';
|
|
129
135
|
/** Closed outline in the XY plane (auto-closed at evaluation). */
|
|
@@ -170,7 +176,7 @@ export interface InstanceNode extends IRNodeBase {
|
|
|
170
176
|
export type PrimitiveNode = BoxNode | SphereNode | CylinderNode | ConeNode | TorusNode | PolygonNode | CircleNode | LineNode | VertexLitNode | EmptyNode;
|
|
171
177
|
export type BooleanNode = FuseNode | CutNode | IntersectNode | FuseAllNode | CutAllNode;
|
|
172
178
|
export type TransformIRNode = TranslateNode | RotateNode | ScaleNode | MirrorNode;
|
|
173
|
-
export type IRNode = PrimitiveNode | BooleanNode | TransformIRNode | ExtrudeNode | RevolveNode | LoftNode | SweepNode | ProfileNode | PathNode | CompoundNode | InstanceNode;
|
|
179
|
+
export type IRNode = PrimitiveNode | BooleanNode | TransformIRNode | ExtrudeNode | RevolveNode | LoftNode | SweepNode | ProfileNode | PathNode | ColorNode | CompoundNode | InstanceNode;
|
|
174
180
|
export type NodeKind = IRNode['kind'];
|
|
175
181
|
export type AnyNode = IRNode;
|
|
176
182
|
/** Nodes that produce a 3D solid. */
|
|
@@ -15,7 +15,7 @@ import { _ as samePoint$1, b as subtract2d, c as add2d, s as PRECISION_OFFSET, y
|
|
|
15
15
|
import { _ as Curve2D, a as edgeToCurve, b as BoundingBox2d, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D } from "./blueprint-DRvc1LOz.js";
|
|
16
16
|
import { t as cornerFinder } from "./cornerFinder-CiHpo7kU.js";
|
|
17
17
|
import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BuM5xJSa.js";
|
|
18
|
-
import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-
|
|
18
|
+
import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-myJW6Fzl.js";
|
|
19
19
|
import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-VVI0cWLa.js";
|
|
20
20
|
//#region src/2d/lib/stitching.ts
|
|
21
21
|
/**
|
|
@@ -15,7 +15,7 @@ const require_helpers = require("./helpers-DLZUxawd.cjs");
|
|
|
15
15
|
const require_blueprint = require("./blueprint-BgbVmx4L.cjs");
|
|
16
16
|
const require_cornerFinder = require("./cornerFinder-DIe6pMPU.cjs");
|
|
17
17
|
const require_boolean2D = require("./boolean2D-p7RMNFtG.cjs");
|
|
18
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
18
|
+
const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
|
|
19
19
|
const require_cameraFns = require("./cameraFns-i1otOZ0V.cjs");
|
|
20
20
|
//#region src/2d/lib/stitching.ts
|
|
21
21
|
/**
|
|
@@ -3,7 +3,7 @@ import { E as ok, b as isErr, d as validationError, g as err, i as kernelError,
|
|
|
3
3
|
import { c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-CwYkfE3v.js";
|
|
4
4
|
import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
|
|
5
5
|
import { y as downcast } from "./faceFns-CaBQNffu.js";
|
|
6
|
-
import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-
|
|
6
|
+
import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-Devga1Vk.js";
|
|
7
7
|
import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
8
8
|
//#region src/topology/threeHelpers.ts
|
|
9
9
|
/**
|
|
@@ -3,7 +3,7 @@ const require_errors = require("./errors-RHkKO5bZ.cjs");
|
|
|
3
3
|
const require_topologyQueryFns = require("./topologyQueryFns-BtLGfXgL.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
5
|
const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
|
|
6
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
6
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
7
7
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
8
8
|
//#region src/topology/threeHelpers.ts
|
|
9
9
|
/**
|
package/dist/operations.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_threadFns = require("./threadFns-
|
|
2
|
+
const require_threadFns = require("./threadFns-BQIE5dO9.cjs");
|
|
3
3
|
const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
|
|
4
4
|
exports.addChild = require_threadFns.addChild;
|
|
5
5
|
exports.addJoint = require_threadFns.addJoint;
|
package/dist/operations.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, H as circularPattern, I as createAssemblyNode, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-
|
|
1
|
+
import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, H as circularPattern, I as createAssemblyNode, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-B6-3UeCZ.js";
|
|
2
2
|
import { c as twistExtrude, o as supportExtrude, r as complexExtrude, s as sweep } from "./loftFns-m7LoJWE2.js";
|
|
3
3
|
export { addChild, addJoint, addStep, circularPattern, collectShapes, complexExtrude, countNodes, createAssembly, createAssemblyNode, createHistory, createRegistry, cylindricalJoint, exportAssemblySTEP, exportURDF, findNode, findStep, forwardKinematics, getShape as getHistoryShape, gridPattern, importURDF, inverseKinematics, jointTrajectory, jointTransform, jointsFromDH, linearPattern, mechanismDOF, modifyStep, planarJoint, prismaticJoint, registerOperation, registerShape, removeChild, replayFrom, replayHistory, revoluteJoint, setJointValue, setJointValues, sphericalJoint, stepCount, stepsFrom, supportExtrude, sweep, thread, twistExtrude, undoLast, updateNode, walkAssembly };
|
|
@@ -2,7 +2,7 @@ import { K as getKernel, W as _usingCtx, d as createSolid, n as castResultShape
|
|
|
2
2
|
import { E as ok, d as validationError, g as err, m as andThen, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
|
|
3
3
|
import { n as isClosedWire } from "./validityTypes-Bl3adWZb.js";
|
|
4
4
|
import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
|
|
5
|
-
import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-
|
|
5
|
+
import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-Devga1Vk.js";
|
|
6
6
|
import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-B7WlmoVr.js";
|
|
7
7
|
//#region src/topology/transformFns.ts
|
|
8
8
|
/**
|
|
@@ -2,7 +2,7 @@ const require_shapeTypes = require("./shapeTypes-DVExh1xP.cjs");
|
|
|
2
2
|
const require_errors = require("./errors-RHkKO5bZ.cjs");
|
|
3
3
|
const require_validityTypes = require("./validityTypes-C2nklkrH.cjs");
|
|
4
4
|
const require_constants = require("./constants-BOVyEYGH.cjs");
|
|
5
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
5
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
6
6
|
const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
|
|
7
7
|
//#region src/topology/transformFns.ts
|
|
8
8
|
/**
|
package/dist/sketching.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_blueprintSketcher = require("./blueprintSketcher-B5UqD0FO.cjs");
|
|
3
|
-
const require_drawFns = require("./drawFns-
|
|
4
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
3
|
+
const require_drawFns = require("./drawFns-CP82Xdma.cjs");
|
|
4
|
+
const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
|
|
5
5
|
//#region src/sketching.ts
|
|
6
6
|
/**
|
|
7
7
|
* brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
|
package/dist/sketching.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as BaseSketcher2d, t as BlueprintSketcher } from "./blueprintSketcher-yZiAeqft.js";
|
|
2
|
-
import { A as sketchEllipse, C as DrawingPen, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, T as Drawing, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-
|
|
3
|
-
import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-
|
|
2
|
+
import { A as sketchEllipse, C as DrawingPen, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, T as Drawing, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-BFktlDIi.js";
|
|
3
|
+
import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-myJW6Fzl.js";
|
|
4
4
|
//#region src/sketching.ts
|
|
5
5
|
/**
|
|
6
6
|
* brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
|
|
@@ -147,6 +147,8 @@ function getFaceColorMap(shape) {
|
|
|
147
147
|
}
|
|
148
148
|
return map;
|
|
149
149
|
}
|
|
150
|
+
/** Parse any accepted color input into canonical RGBA (exported so content-
|
|
151
|
+
* addressed consumers can canonicalize before hashing). */
|
|
150
152
|
function parseColor(input) {
|
|
151
153
|
if (typeof input === "string") {
|
|
152
154
|
let hex = input.startsWith("#") ? input.slice(1) : input;
|
|
@@ -1105,6 +1107,12 @@ Object.defineProperty(exports, "makeVertex", {
|
|
|
1105
1107
|
return makeVertex;
|
|
1106
1108
|
}
|
|
1107
1109
|
});
|
|
1110
|
+
Object.defineProperty(exports, "parseColor", {
|
|
1111
|
+
enumerable: true,
|
|
1112
|
+
get: function() {
|
|
1113
|
+
return parseColor;
|
|
1114
|
+
}
|
|
1115
|
+
});
|
|
1108
1116
|
Object.defineProperty(exports, "propagateAllMetadata", {
|
|
1109
1117
|
enumerable: true,
|
|
1110
1118
|
get: function() {
|
|
@@ -147,6 +147,8 @@ function getFaceColorMap(shape) {
|
|
|
147
147
|
}
|
|
148
148
|
return map;
|
|
149
149
|
}
|
|
150
|
+
/** Parse any accepted color input into canonical RGBA (exported so content-
|
|
151
|
+
* addressed consumers can canonicalize before hashing). */
|
|
150
152
|
function parseColor(input) {
|
|
151
153
|
if (typeof input === "string") {
|
|
152
154
|
let hex = input.startsWith("#") ? input.slice(1) : input;
|
|
@@ -961,4 +963,4 @@ function makeSolid(facesOrShells) {
|
|
|
961
963
|
}
|
|
962
964
|
}
|
|
963
965
|
//#endregion
|
|
964
|
-
export {
|
|
966
|
+
export { parseColor as A, propagateAllMetadata as C, colorShape as D, colorFaces as E, tagFaces as F, getFaceTags as M, getTagMetadata as N, getFaceColor as O, setTagMetadata as P, hasAnyMetadata as S, propagateMetadataThroughRelocation as T, section as _, makeOffset as a, split as b, makeTorus as c, booleanPipeline as d, cut as f, intersect as g, fuseAll as h, makeEllipsoid as i, findFacesByTag as j, getShapeColor as k, makeVertex as l, fuse as m, makeCone as n, makeSolid as o, cutAll as p, makeCylinder as r, makeSphere as s, makeCompound as t, weldShellsAndFaces as u, sectionToFace as v, propagateMetadataByHash as w, collectInputFaceHashes as x, slice as y };
|
package/dist/text.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
3
|
-
const require_textMetrics = require("./textMetrics-
|
|
2
|
+
const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
|
|
3
|
+
const require_textMetrics = require("./textMetrics-Byfb_37y.cjs");
|
|
4
4
|
exports.fontMetrics = require_textMetrics.fontMetrics;
|
|
5
5
|
exports.getFont = require_textBlueprints.getFont;
|
|
6
6
|
exports.loadFont = require_textBlueprints.loadFont;
|
package/dist/text.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as getFont, r as loadFont, t as textBlueprints } from "./textBlueprints-
|
|
2
|
-
import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-
|
|
1
|
+
import { n as getFont, r as loadFont, t as textBlueprints } from "./textBlueprints-myJW6Fzl.js";
|
|
2
|
+
import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-CPFqh2a1.js";
|
|
3
3
|
export { fontMetrics, getFont, loadFont, sketchText, textBlueprints, textMetrics };
|
|
@@ -6,7 +6,7 @@ const require_types = require("./types-KjA8tY4Y.cjs");
|
|
|
6
6
|
const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
7
7
|
const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
|
|
8
8
|
const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
|
|
9
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
9
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
10
10
|
const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
|
|
11
11
|
const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
|
|
12
12
|
const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
|
|
@@ -5,7 +5,7 @@ import { r as toVec3 } from "./types-D24Y27N0.js";
|
|
|
5
5
|
import { c as vecLength, d as vecNormalize, h as vecScale, r as vecCross } from "./vecOps-SKPRvPH-.js";
|
|
6
6
|
import { n as createPlane } from "./planeOps-CQahLrCx.js";
|
|
7
7
|
import { v as copyShape } from "./faceFns-CaBQNffu.js";
|
|
8
|
-
import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-
|
|
8
|
+
import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-Devga1Vk.js";
|
|
9
9
|
import { l as curveStartPoint, u as curveTangentAt } from "./curveFns-Bh_PHl9N.js";
|
|
10
10
|
import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
|
|
11
11
|
import { i as makeNewFaceWithinFace, r as makeFace, t as addHolesInFace } from "./surfaceBuilders-B7WlmoVr.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_errors = require("./errors-RHkKO5bZ.cjs");
|
|
2
|
-
const require_textBlueprints = require("./textBlueprints-
|
|
2
|
+
const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
|
|
3
3
|
//#region src/text/sketchText.ts
|
|
4
4
|
/**
|
|
5
5
|
* Render text as 3D sketch outlines on a plane.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
|
|
2
|
-
import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-
|
|
2
|
+
import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-myJW6Fzl.js";
|
|
3
3
|
//#region src/text/sketchText.ts
|
|
4
4
|
/**
|
|
5
5
|
* Render text as 3D sketch outlines on a plane.
|
|
@@ -2,8 +2,8 @@ import { K as getKernel, M as DisposalScope, P as createKernelHandle, W as _usin
|
|
|
2
2
|
import { E as ok, d as validationError, g as err, n as computationError, r as ioError, t as BrepErrorCode, x as isOk } from "./errors-MHLiNE-C.js";
|
|
3
3
|
import { d as vecNormalize, s as vecIsZero } from "./vecOps-SKPRvPH-.js";
|
|
4
4
|
import { b as fromBREP } from "./faceFns-CaBQNffu.js";
|
|
5
|
-
import { h as fuseAll } from "./solidBuilders-
|
|
6
|
-
import { E as wire, h as line } from "./primitiveFns-
|
|
5
|
+
import { h as fuseAll } from "./solidBuilders-Devga1Vk.js";
|
|
6
|
+
import { E as wire, h as line } from "./primitiveFns-BSMbMRf1.js";
|
|
7
7
|
import { s as toBREP } from "./shapeFns-DyDRpo6K.js";
|
|
8
8
|
import { t as loft } from "./loftFns-m7LoJWE2.js";
|
|
9
9
|
import { c as resolveRefParams } from "./refResolveFns-DcyIQSDi.js";
|
|
@@ -2,8 +2,8 @@ const require_shapeTypes = require("./shapeTypes-DVExh1xP.cjs");
|
|
|
2
2
|
const require_errors = require("./errors-RHkKO5bZ.cjs");
|
|
3
3
|
const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
|
|
4
4
|
const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
|
|
5
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
6
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
5
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
6
|
+
const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
|
|
7
7
|
const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
|
|
8
8
|
const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
|
|
9
9
|
const require_refResolveFns = require("./refResolveFns-c7RWIsZy.cjs");
|
|
@@ -6,6 +6,9 @@ export type Color = [number, number, number, number];
|
|
|
6
6
|
export type ColorInput = string | [number, number, number] | [number, number, number, number];
|
|
7
7
|
/** O(1) check whether a shape has any color metadata (shape or face level). */
|
|
8
8
|
export declare function hasColorMetadata(shape: AnyShape<Dimension>): boolean;
|
|
9
|
+
/** Parse any accepted color input into canonical RGBA (exported so content-
|
|
10
|
+
* addressed consumers can canonicalize before hashing). */
|
|
11
|
+
export declare function parseColor(input: ColorInput): Color;
|
|
9
12
|
/**
|
|
10
13
|
* Set a whole-shape color (stored externally via WeakMap).
|
|
11
14
|
* Returns the same shape reference.
|
package/dist/topology.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_topologyQueryFns = require("./topologyQueryFns-BtLGfXgL.cjs");
|
|
3
3
|
const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
|
|
4
|
-
const require_solidBuilders = require("./solidBuilders-
|
|
5
|
-
const require_primitiveFns = require("./primitiveFns-
|
|
4
|
+
const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
|
|
5
|
+
const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
|
|
6
6
|
const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
|
|
7
7
|
const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
|
|
8
8
|
const require_meshFns = require("./meshFns-CB7HsxzB.cjs");
|
|
9
|
-
const require_healingFns = require("./healingFns-
|
|
9
|
+
const require_healingFns = require("./healingFns-DTr6cgTb.cjs");
|
|
10
10
|
const require_adjacencyFns = require("./adjacencyFns-BhdfZany.cjs");
|
|
11
11
|
exports.addHoles = require_primitiveFns.addHoles;
|
|
12
12
|
exports.adjacentFaces = require_adjacencyFns.adjacentFaces;
|
package/dist/topology.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { C as vertexPosition, _ as iterFaces, b as iterVertices, c as getFaces, f as getVertices, g as iterEdges, m as invalidateShapeCache, n as getBounds, p as getWires, s as getEdges, x as iterWires } from "./topologyQueryFns-CwYkfE3v.js";
|
|
2
2
|
import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-CaBQNffu.js";
|
|
3
|
-
import { h as fuseAll, p as cutAll } from "./solidBuilders-
|
|
4
|
-
import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus, x as subFace, y as solid } from "./primitiveFns-
|
|
3
|
+
import { h as fuseAll, p as cutAll } from "./solidBuilders-Devga1Vk.js";
|
|
4
|
+
import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus, x as subFace, y as solid } from "./primitiveFns-BSMbMRf1.js";
|
|
5
5
|
import { a as isSameShape, i as isEqualShape, n as getHashCode } from "./shapeFns-DyDRpo6K.js";
|
|
6
6
|
import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-Bh_PHl9N.js";
|
|
7
7
|
import { d as createMeshCache, n as exportSTEP, r as exportSTL, t as exportIGES, u as clearMeshCache } from "./meshFns-CpfeEN1b.js";
|
|
8
|
-
import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, g as variableFillet, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, n as fixSelfIntersection, o as healSolid, r as fixShape, s as healWire, t as autoHeal, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-
|
|
8
|
+
import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, g as variableFillet, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, n as fixSelfIntersection, o as healSolid, r as fixShape, s as healWire, t as autoHeal, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-BptGY1Th.js";
|
|
9
9
|
import { i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-CwcdjOsT.js";
|
|
10
10
|
export { addHoles, adjacentFaces, approximateCurve, asTopo, autoHeal, bezier, box, bsplineApprox, cast, chamferDistAngle as chamferDistAngleShape, chamferWithEvolution, checkBoolean, circle, classifyPointOnFace, clearMeshCache, compound, cone, createMeshCache, curveAxis, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cutAll, cutAllBisect, cutWithEvolution, cylinder, fromBREP as deserializeShape, downcast, edgesOfFace, ellipse, ellipseArc, ellipsoid, exportIGES, exportSTEP, exportSTL, face, faceAxis, faceCenter, faceGeomType, faceOrientation, facesOfEdge, filledFace, filletWithEvolution, fixSelfIntersection, fixShape, flipFaceOrientation, flipOrientation, fuseAll, fuseAllBisect, fuseWithEvolution, getBounds, getCurveType, getEdges, getFaces, getHashCode, getNurbsCurveData, getNurbsSurfaceData, getOrientation, getSurfaceType, getVertices, getWires, healFace, healSolid, healWire, helix, innerWires, interpolateCurve, intersectWithEvolution, invalidateShapeCache, isCompSolid, isEqualShape, isSameShape, iterEdges, iterFaces, iterTopo, iterVertices, iterWires, line, normalAt, offsetFace, offsetWire2D, outerWire, pointOnSurface, polygon, positionOnCurve, projectPointOnFace, sewShells, shapeType, sharedEdges, shellWithEvolution, solid, solidFromShell, sphere, subFace, tangentArc, threePointArc, toBufferGeometryData, toGroupedBufferGeometryData, toLineGeometryData, torus, uvBounds, uvCoordinates, variableFillet, vertex, vertexPosition, verticesOfEdge, wire, wireLoop, wiresOfFace };
|