Mesh-to-STEP keeps planar faces

A STEP file can contain planar faces reconstructed from a mesh. This example writes a tetrahedron and inspects the resulting entities to distinguish a successful container conversion from recovery of a CAD design. The source shape is already planar, so no curved surface is needed.

How this was measured

Generate the four-triangle, ten-millimetre tetrahedron and run the local core STEP writer. Count the reported faces and output bytes, then inspect the text for cylindrical, spherical, and B-spline surface entities. The output has four planar faces. These project-created bytes were generated locally without invoking the hosted upload endpoint.

Recorded output from this experiment
MeasurementValue
step Bytes4586
faces4
has Curved Surface Entitiesfalse

What the result does not establish

A tetrahedron cannot demonstrate recovery of curves because it has none. Converting a tessellated cylinder with a faceted writer would retain planar approximations, not recover its source sketch, dimensions, constraints, or modeling history. The hosted STL-to-STEP route has a separate consent and limits boundary.

Try these files

These samples were created by this project and released under CC0. They contain no visitor files. Sizes and SHA-256 hashes identify the exact bytes measured in this experiment.

Use this result

Versions and reproduction

Evidence generated 2026-09-05T21:13:29.140Z. The checked-in generator rebuilds the sample collection and measurements with one command:

node --experimental-strip-types scripts/build-workbench-evidence.ts

CAD source generation: scripts/build-workbench-cad.py with cadquery-ocp 7.9.3.1.1; checked-in analytic cylinder outputs. The STEP and IGES outputs are checked in so ordinary evidence rebuilds do not require Python.

@astrojs/cloudflare
14.3.0
@cloudflare/containers
0.3.7
astro
7.3.1
fflate
0.8.3
jose
6.2.12
occt-import-js
0.0.23
rhino3dm
8.32.2
three
0.185.1

Geometry source and generator SHA-256 hashes:

core/affine.ts
cff986695025f835e54c530ef654a3b7b19862d5f5feba08a361f2db708fbe65
core/bytes.ts
850a1863a411549bbaf73e85d339dd3109fb57aca4e89e1cbeb0a06cdb3cc924
core/convert.ts
e9e96ecbb498338b85bc122a7e328ae9d96666b2dadce581e4f86e8b7b59689d
core/deflate-validation.ts
7427464082422b2a484cb4b845e21a41dbb015ffddb83a4d1f938b6c32cb40f1
core/detect.ts
4c64ca45732c4339749fed372b20e6996f17e1f4d307046ad71e047723ccf3e9
core/formats.ts
f037f0543d19f5ffebe97ea40450c5b646d6d5164ae4e816bf3dce6cf3685479
core/index.ts
6dcf467a7b1952cf270fd834927404b19eb58bc6d1f2542d8c420bda90d4e3f7
core/inspect.ts
44100ac51622e986e3ab63e49d6704dde539141454e273b76d5be70b5115a1ec
core/model.ts
bef860184a185c098d72d30a12cfaa7fe3199b96dbde0e65428b8f3bfe6c79a5
core/read/3dm.ts
f26a7d22c86dc6780ce218822eafa4cc5dbf76f35289a6266f6f2161bd84127e
core/read/3ds.ts
0142d9f82937566220d6616c52800ffa856fff500bab3e26e90c0cdc0c6f7e32
core/read/3mf-package.ts
11ad7a82d1dc5698412479d0c6351c5b88cfbc308ebee4a5d91fdc71d969af51
core/read/3mf.ts
9378aa3156d5b908d4ce2ac551b76500247762de75a21b29ae0b2feb341a950e
core/read/amf.ts
b68b2de1c27d3c374ce4e2ce4215c8a6edcfbccac3e9a7ed0f623956cfe4afde
core/read/dae.ts
acf671ba4ea931ca4e958a67886978e61da9c7cb936cb835265f86d3b271b2c5
core/read/fbx-scene.ts
89bb4fa1718fafa1e8dd8ec27197e83752fe8af7bf0c04b5d49586f611d9812d
core/read/fbx.ts
33c87b835bf7ba11a2dd937fd78ff21a094076e9b9d95e7d24e40ea859c16bf3
core/read/gltf.ts
23296adfe9591efb9a7179413bf5a1ffe9a47acffa3daf997055c20ebd249c6c
core/read/obj.ts
86fe1097ed8c07d052753255a17adcd746d3ccd847351a5632f78ecb7b8f8605
core/read/occt.ts
1c129dc8ffb4f03bc992dd8940681acb92a4ed03271ce47485f3ac1533182117
core/read/ply.ts
3cac9da6d62be20ae016cef751b01c14c0ebccd67d921107c56e8297835d2933
core/read/scene-validation.ts
62e1f08faf9a9253e3b5d6c15395cbc97bc093e3867ce1aab87a3af8db704ebc
core/read/stl.ts
ac53b792bd9cb8bff4366331fa0bb49844c7d6fcf9df47819cc75544e812dec9
core/read/usdz.ts
caded369def6d998931378c616c271c565840ad280e5d797d4674f2ab1222fcb
core/read/workbench-3mf-reader.ts
5f5ec69531981e06ef5246debe02b89323b065c928988bdc85c5d4f7675660da
core/read/wrl-preflight.ts
2a4ef48b020ef98b381ab33aa34266bb5c43de716e2e38256598d69996d235ac
core/read/wrl.ts
ad3d6869874f7a3ac51ca09d885af0dec0376249f395bc083f5d8961d8c228af
core/report.ts
3758e6ea6f7453b23bb21682caa8828464add92d839c0cc8ae30fe46c4ca54fa
core/three-bridge.ts
84d16dd2834354c360a85453499abfbc462cc616714fe7a04992ab18ab5037ff
core/units.ts
f5367c6aa2932463c90769fd0ac080e8a42aec71facf63ae32b0b08337020963
core/wasm.ts
5022bce9c3bfcf438525245373c798ff153c5ba716203ce1224318f1093da739
core/workbench/export.ts
cd663d1787eb8b97268bf12c9967e598223b98a9701fcd5bc948913b39725f62
core/workbench/geometry.ts
7228ab0996857e68d69ccb5575be641f07159bc340bbc9b660d31d39f7deea31
core/workbench/tessellation.ts
f0b644e54709887e5651cdd6264e8678ed56fb9c3aebf1bd4f20124ca8cc4aea
core/workbench/workbench-capability-report.ts
4f06ec57789c96892f7691c8c691867364ce80822f5cfc97bdcbe896f47e45d4
core/write/3mf.ts
bf9afa50480b3cb71a2a768897b7dfd5347cafa6f4d3d59550c19edf4c80446a
core/write/gltf.ts
f650b65a62d81b2c617448053726e89b4a6e0beb27955dea8e1d413d4156c0a0
core/write/obj.ts
cb0b5571284c4fe9b217a82057fd0758d406bba0fd50815313fe4ca4d4f0248c
core/write/ply.ts
cd71a26936091a3619cd67f9dc609101aea8a1ee84bc7b5c7fafcc551a328797
core/write/step.ts
05b888318d999a952aa5d9b2bddc47a79ef9d361b6828058df4b834c6ca886fd
core/write/stl.ts
bed130d62ee6a645d79ea8fdd70441e9abb0962354963798387601f458167323
core/write/usdz.ts
4cd8d9bf0d1aa1755c374980e5fb863b3045979e8201f8d79fc8e0857c09e962
core/xml-namespaces.ts
10820125e1331ee730f577319faea4f279f1dd5a7b29a4bb7ec56475b7a9b0d8
core/xml.ts
b1b9e09cda3013013956dd0c0ad915dc17d6ee499d9d0ec7cd6298aa5c625184
core/zip-strict.ts
76bdd9135e717129fa130c5597134b96056e77dbe2f3b4ed493dacd98a1ba972
core/zip-write.ts
4db10ba581fe543ff7b3330276c8843a6ca709884b570444ab523d49aa642771
core/zip.ts
71749962d39fec82ede645be7d9193edaaec800b3de71527c2e32a80ad54f529
corpus/workbench/cylinder.iges
81274edc6d86ea10fe439b7077d4a0451159d16bc9802d4c778556425631a507
corpus/workbench/cylinder.step
0004159d7b2a121deb50aeba379c153ed27b412a8a38782a65513b3a58583a1e
package-lock.json
af6a2e949a477492e6adfcc9042705c4a785cff25715acf2ed4e85578a304627
package.json
f506303de4ba20f6ad49a2e862be535b1374ac2d6485f1875b01c04fc1426b8f
scripts/build-workbench-cad.py
6498bdf6347ba27e6d12d3818b5793113c2e74d0d227c68ba9fab7d22dba97b1
scripts/build-workbench-evidence.ts
68716afd03c0d6e79a051eac57cc7a37a26218b9b119857f35dfb1663ac8770a
test/core/workbench-3mf-baseline.test.ts
486b840aae41494b9a501d1403cb98f8c991725327e40132d96d2e53788ae4de
test/core/workbench-3mf-integration.test.ts
7486085c9367e2a543f321d63a49dc621670141812a90b46e7651a718a0e165c
test/core/workbench-3mf-package.test.ts
6a44fe9c9c5e79b026155a3d25bcfd31e41a588fcd5b0cfddb9de9f370fe444d
test/core/workbench-3mf-reader.test.ts
41b8112430e7a77b34e15e7bbe081f8548d4d686c5a98ac42dc72b7d651ddb40
test/core/workbench-collada-transforms.test.ts
a3a0191626f4f1603d8d393437312609cdd7b32e620a77e30965bb739eb03c70
test/core/workbench-fbx-transforms.test.ts
3601ac964baaae9eecda62c2301babd740a850f7e6c0d6a7569545a412105cdb
test/core/workbench-writer-transforms.test.ts
03e8b9524d2b952f94c2ffef015d3e9b6d3a2f1882f16cb2138e96eeb5b85af0
test/core/workbench-wrl.test.ts
eb2f2188c418080e14a4695f3b3025aaeb507a7ab5ea11be55cd7e17c4af76e4
test/core/workbench-xml-namespaces.test.ts
de2661f4bd9414972a916eb9616c3b4f2baf4ff2a71de8268ee3a77fe8e271f5
test/core/workbench-zip-strict.test.ts
36b56e2b3b46c3e0fbeba5ee022057a33b3dd91a68af83e58c388af028fe4a6c
test/fixtures/3mf-reader-baseline.json
91ebcb16f07e8154612d02724e55282727fec77f831535400b294ec9b61655ff
test/fixtures/collada-transforms-baseline.json
aaaeeb63ed51414e8a8e44e7d8fb0b5341cc3d9f96a6107c4fe4d3ef9a407150
test/fixtures/workbench-3mf.ts
1b81c046312396e774bbf4c5ee7199c2eabc02ec4253d4fa2501ba8635b1a026
test/fixtures/workbench-challenges.ts
1d452755c74fed6b00b607f3b794a7213dc3c82011471b33721dafefe69715ba
test/fixtures/workbench-rhino.ts
2dc0df1e0ae5bdd1142d3ffadcedc767c613fe59fb66cf59e8a9067e253461f3
test/fixtures/workbench-scene-readers.ts
e2c424f846248286392ff58a6d7c01a4ecf251e4dc69a32c31e4bd59dc0cd950
test/fixtures/workbench-wrl.ts
808710bd63fa0d1b2cec322184cf916ffaaa21152190e62b4f723d419fa6e5fa
test/fixtures/workbench.ts
06a23ec65d5e9aaf663aca6ec65a5f2005f52d4e76d7cb8f77f088cdd1b992a5
test/fixtures/writer-transforms-baseline.json
f421c74d527e73d00cd191611ccc0beebc0f8c37899969418446724f84fb8172
test/fixtures/writer-transforms.ts
42848e9870398b7858285e1b3450147d71a2c2dc91d4c614f950cd4ac6327555