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.
| Measurement | Value |
|---|---|
| step Bytes | 4586 |
| faces | 4 |
| has Curved Surface Entities | false |
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.
- Ten-millimetre tetrahedron; STL itself stores no unit. (STL, 284 bytes)
SHA-256
7d98ff53aa7c0ac15350e51fc0adf77ebd39df597cac09f07269e1ff3fff9aa4 - Four planar faces exported from the tetrahedron mesh, without feature history. (STEP, 4,586 bytes)
SHA-256
9ed8671d93d0c3639d9b15214d7430941a47aa466e0ed0f9134bc1f7720138f0
Use this result
Versions and reproduction
Evidence generated 2026-10-01T17:30:24.355Z. The checked-in generator rebuilds the sample collection and measurements with one command:
node --experimental-strip-types scripts/build-workbench-evidence.tsCAD 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
- @astrojs/internal-helpers
- 0.11.0
- @astrojs/markdown-satteri
- 0.4.0
- @cloudflare/containers
- 0.3.7
- astro
- 7.3.1
- fflate
- 0.8.3
- jose
- 6.2.12
- manifold-3d
- 3.5.1
- occt-import-js
- 0.0.23
- rhino3dm
- 8.32.2
- svg-pathdata
- 9.0.0
- 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/drawing/extrude.ts
- d9783121bcd43438800b1bd4ac9b75eb34dd849081e11adf6bf66c833c3cd85e
- core/drawing/pdf.ts
- 4b7da0997413f0b5aee934c14c511a88b81a26e1229b284a99fe5d407433731c
- core/drawing/raster.ts
- 86bd86f2c1f0db1fd5cdf12b2cf275036e6622ff9d813394407b8ad07386cd34
- core/drawing/registry.ts
- 817b8ab957c0846cc1a23211e7e278dcc1976cc4be0b1dd1ee541a5aedc5652e
- core/drawing/section.ts
- ce23997eecc70eaf064daa8f647928ccad56f1def3b70ce6bc5707a90a3ca56b
- core/drawing/svg-reader.ts
- 5cd1a855650a1abae5cec0fc877baaccd1240956411cd63427b2da4267b6ad7b
- core/formats.ts
- f037f0543d19f5ffebe97ea40450c5b646d6d5164ae4e816bf3dce6cf3685479
- core/index.ts
- 6dcf467a7b1952cf270fd834927404b19eb58bc6d1f2542d8c420bda90d4e3f7
- core/inspect.ts
- f32520eca54581fd26f8567d2a750c5cdc58e66cec356d1821b5916f56fbd3bc
- core/model.ts
- 2cced2cb21f7db2ef06cd5cce2d6a4cae0bf13275a00d95892e177e5d0614c98
- core/read/3dm.ts
- f26a7d22c86dc6780ce218822eafa4cc5dbf76f35289a6266f6f2161bd84127e
- core/read/3ds.ts
- 0142d9f82937566220d6616c52800ffa856fff500bab3e26e90c0cdc0c6f7e32
- core/read/3mf-package.ts
- 11ad7a82d1dc5698412479d0c6351c5b88cfbc308ebee4a5d91fdc71d969af51
- core/read/3mf.ts
- bed001e05c55dbf8724b8a8e81eb4fc07dd03a659a7137cf8b614076d3877a9d
- 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
- 7475b850aaf367526252c2d8afb7fbebf1b40ea3be83eeafc5c9f043944abcb6
- core/read/occt.ts
- 1c129dc8ffb4f03bc992dd8940681acb92a4ed03271ce47485f3ac1533182117
- core/read/ply.ts
- 3cac9da6d62be20ae016cef751b01c14c0ebccd67d921107c56e8297835d2933
- core/read/scene-validation.ts
- a7cd6199a331523523a86d6e80acb9bc06668a35254704d523199a08dd9dcfb0
- 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
- 0be0ccc02c1372e7f12fc0771be392f3cd69c723464ce891ea6417cef39aea99
- core/workbench/geometry.ts
- aea92798f6daadb03a68b6cbb38f6129e06f3b85d673c552f7bab47d8af59a85
- core/workbench/svg-transform.ts
- e7b5db26184c007c77d2b69cab2fb4f24182e8d064577ed06b89ee206c83155c
- core/workbench/tessellation.ts
- f0b644e54709887e5651cdd6264e8678ed56fb9c3aebf1bd4f20124ca8cc4aea
- core/workbench/workbench-artwork.ts
- 99cfce181072866f870dea1c8ab2873e42a63dd5a5588f13cade5654c014bfe6
- core/workbench/workbench-capability-report.ts
- 4f06ec57789c96892f7691c8c691867364ce80822f5cfc97bdcbe896f47e45d4
- core/workbench/workbench-drawing.ts
- f455d413ef177cca3306ee5df034543e053f23833a3126022f5c33801797b926
- core/workbench/workbench-editing.ts
- 70ed7301f9efb7d8eaac89f32ec9927bb2cc00c5603f7e322a54d50325c69b30
- core/workbench/workbench-solid-kernel.ts
- 18167fc0d57af7403cad04f6653a1de0aab84ee3771e01b4a4686b7ccb092e72
- core/write/3mf.ts
- ee969777f4c9b59b55d504367e04f099dcb9746f0abe309d60665fe8e3173aae
- core/write/gltf.ts
- f650b65a62d81b2c617448053726e89b4a6e0beb27955dea8e1d413d4156c0a0
- core/write/obj.ts
- 12870b5ae825f2db76b1c3ceb74052281cd390bbed2421c976c449fe4a90201b
- core/write/ply.ts
- de1dc40bb00c2b2f8f04c0fc4449836f1437a818904bb4408fea89017004a9fc
- 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
- 3e966d851c64f6e3c20afd443095cc5ecebb68417703c5789cea0e78e5a7e54e
- package.json
- 1643472fef9d5a82276ebc9acfde372be7d17f9c6d54bf54e8e48b41a74c97a4
- 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
- bbb9be41eb65f6ef30e9cebc337da8a6ad996742a53c71813450a544eb457a80
- 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
- bcd160dc3b89be74f1bb977f0e9d8a3c8c5d275dd02df8961a8349f168895cfe
- test/fixtures/writer-transforms.ts
- 42848e9870398b7858285e1b3450147d71a2c2dc91d4c614f950cd4ac6327555