mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 03:51:08 +00:00
8630a3f0e5
* claim: #1397 * External STEP corpus: nightly import checks on real-world files (#1397) tests/external-corpus.toml pins 20 real-world NIST PMI STEP files (AP203 geometry-only and AP242 editions from several vendor exporters, public domain) by archive and per-file SHA-256 with the licence recorded. cargo xtask external-corpus downloads each source once into the gitignored corpus/external/, verifies every hash, imports each file headless (file.insert_step + inspect.measure) and checks body count, total volume (0.1 %) and area (0.5 %) within tolerances and time and memory budgets. A file whose upstream hash changed is reported as 'source changed', never as our failure. --bless "why" re-records expectations in the manifest with a dated reason. The External corpus workflow runs it nightly. assets: skip corpus/ when scanning for attribution (downloaded case data is never committed). --------- Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
238 lines
9.0 KiB
TOML
238 lines
9.0 KiB
TOML
# External STEP corpus: nightly import checks on real-world files (#1397).
|
|
#
|
|
# Real-world STEP files from many exporters find bugs our own designs never hit.
|
|
# `cargo xtask external-corpus` downloads each source (cached under corpus/external/,
|
|
# gitignored), verifies its hash, imports every file headless with solidcraft-cli, and
|
|
# checks the expected results below within tolerances: import succeeds with no panic,
|
|
# the body count, total volume and area, and time and memory budgets.
|
|
#
|
|
# Import results should improve over time (healing, edge merging, meshing), so
|
|
# expectations are tolerance-based and re-recorded with a reason:
|
|
#
|
|
# cargo xtask external-corpus --bless "why the numbers moved"
|
|
#
|
|
# A file whose hash no longer matches upstream is reported as "source changed" and is
|
|
# never counted as our failure. Everything here is redistributable: never vendor
|
|
# catalogue models or scraped datasets whose licence forbids redistribution or
|
|
# automated download.
|
|
#
|
|
# Expected values are recorded by --bless; until a file has them the run only records.
|
|
|
|
[[source]]
|
|
name = "nist-pmi"
|
|
url = "https://www.nist.gov/document/nist-pmi-step-files"
|
|
archive = "zip"
|
|
archive_sha256 = "8fa78429e6d8d9b0d7681d223b6aa9ec98c3772185c55b1a0e3679b21c181911"
|
|
licence = "US Government work (NIST), public domain; acknowledgement appreciated, the NIST logo may not be used in promotion"
|
|
note = """STEP AP242 and AP203 files of the FTC / CTC / STC test cases of the NIST MBE PMI
|
|
Validation and Conformance Testing Project, generated by the CAx implementor forums' CAD
|
|
systems (CATIA, NX, Inventor, Creo, SolidWorks): the same real parts exported by several
|
|
exporters, some with graphical and semantic PMI.
|
|
https://www.nist.gov/ctl/smart-connected-systems-division/smart-connected-manufacturing-systems-group/mbe-pmi-0"""
|
|
|
|
# AP203, geometry only (no PMI): the plain solid each test case is.
|
|
|
|
[[file]]
|
|
name = "nist_ctc_01_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ctc_01_asme1_rd.stp"
|
|
sha256 = "e081d518484d5c708c6729353237f94a7d97da2b74a10d60d4c0d146d67a5855"
|
|
bodies = 1
|
|
volume_mm3 = 14643075.947
|
|
area_mm2 = 807956.848
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_02_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ctc_02_asme1_rc.stp"
|
|
sha256 = "e6df6d0ed68fd8a91bd3f8360c7047f2af3d61068b89050d84423fe8ddb93bcf"
|
|
bodies = 2
|
|
volume_mm3 = 48296408.737
|
|
area_mm2 = 2486223.950
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_03_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ctc_03_asme1_rc.stp"
|
|
sha256 = "95a775b1acdbc34de11319cb83b4cf6c6fdd7de8cbfc4af2d0afe5d3565cfdf8"
|
|
bodies = 1
|
|
volume_mm3 = 331925.227
|
|
area_mm2 = 354976.434
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_04_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ctc_04_asme1_rd.stp"
|
|
sha256 = "cdb59a085a3364941b881f96b511265a7cb5f6e94180c4426bdc3025481f405a"
|
|
bodies = 4
|
|
volume_mm3 = 21304707.061
|
|
area_mm2 = 1072273.103
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_05_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ctc_05_asme1_rd.stp"
|
|
sha256 = "5140b8f41fa1d0a069ea978e28c92a597f47220d0a11e667b79ff5f7c7243b86"
|
|
bodies = 2
|
|
volume_mm3 = 12836438.150
|
|
area_mm2 = 862844.712
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_06_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_06_asme1_rd.stp"
|
|
sha256 = "5e30f0903f9470c14a98e70395ca005fe90bcd3fb704c381a80a69958838f169"
|
|
bodies = 1
|
|
volume_mm3 = 3323529.788
|
|
area_mm2 = 283412.727
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_07_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_07_asme1_rd.stp"
|
|
sha256 = "a0bc551656780b26d7a0ee1beedbc07d43f41efa092f74f3c2d8383417f04481"
|
|
bodies = 1
|
|
volume_mm3 = 1726252.351
|
|
area_mm2 = 391367.944
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_08_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_08_asme1_rc.stp"
|
|
sha256 = "4b7011b0b86cf6301058aa954b76a9587d23478b6dee2660f4a80caf0dfe8b73"
|
|
bodies = 1
|
|
volume_mm3 = 503592.920
|
|
area_mm2 = 191685.454
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_09_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_09_asme1_rd.stp"
|
|
sha256 = "e29c09bd2d454601ff1a0d77c4c4ffaf2ed78eee71031ce49f7b7bb5a6d1d4e8"
|
|
bodies = 1
|
|
volume_mm3 = 136446.459
|
|
area_mm2 = 96614.973
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_10_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_10_asme1_rb.stp"
|
|
sha256 = "2bd726f9fe86aeb96ab517ce876e5696e7951310df5c4fbca36276d65879067b"
|
|
bodies = 1
|
|
volume_mm3 = 188340.847
|
|
area_mm2 = 48526.769
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_11_ap203"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/AP203 geometry only/nist_ftc_11_asme1_rb.stp"
|
|
sha256 = "a5abfea460499dc31bc812aca68917948a117565fea4f5a080e36eb32f39650d"
|
|
bodies = 1
|
|
volume_mm3 = 5127.593
|
|
area_mm2 = 5473.582
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
# AP242 with PMI, from the different implementors' editions (e1, e2, e3: exports of
|
|
# different vendor CAD systems): bigger files, PMI entities the reader must skip, and
|
|
# assemblies (CTC-02 and CTC-04 fit together).
|
|
|
|
[[file]]
|
|
name = "nist_ctc_01_ap242_e1"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ctc_01_asme1_ap242-e1.stp"
|
|
sha256 = "85a5752da05f53c456ca3a9e038c90358e1d5a3141d1f0d6e5f0970f2356e821"
|
|
bodies = 1
|
|
volume_mm3 = 14644830.531
|
|
area_mm2 = 807074.879
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_02_ap242_e2"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ctc_02_asme1_ap242-e2.stp"
|
|
sha256 = "99a0a2079ddeb64d05c2432cbe931fa17c89da60d8b0bcb0b11bd0ed94fa2e68"
|
|
bodies = 3
|
|
volume_mm3 = 44375748.567
|
|
area_mm2 = 2490680.661
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ctc_04_ap242_e1"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ctc_04_asme1_ap242-e1.stp"
|
|
sha256 = "20b43b54ce25d4ed17cff794084c406e831c687f5b62471d3371eef33669e355"
|
|
bodies = 2
|
|
volume_mm3 = 17524327.897
|
|
area_mm2 = 1023445.779
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_06_ap242_e2"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ftc_06_asme1_ap242-e2.stp"
|
|
sha256 = "b87afb7f25adc0d44d12e182209d50f0b085b533c0742fb8ffd58f4c87403447"
|
|
bodies = 1
|
|
volume_mm3 = 3323542.680
|
|
area_mm2 = 283410.930
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_07_ap242_e2"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ftc_07_asme1_ap242-e2.stp"
|
|
sha256 = "aa8115c12e12a99cc439477cbfd222916f9ec629fbb3c9002b18e0c264c9a892"
|
|
bodies = 3
|
|
volume_mm3 = 1726451.665
|
|
area_mm2 = 391325.164
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_08_ap242_e2"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ftc_08_asme1_ap242-e2.stp"
|
|
sha256 = "7b9283b4288d152fd181d76c39285d7c79fbba34fda1e14a41ac4a983f6d68b3"
|
|
bodies = 1
|
|
volume_mm3 = 503633.752
|
|
area_mm2 = 191703.522
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_ftc_09_ap242_e1"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_ftc_09_asme1_ap242-e1.stp"
|
|
sha256 = "f1215fe15a78085a9fa78dd81714caf774b59071be92580b04ebfdc19f52a1bd"
|
|
bodies = 6
|
|
volume_mm3 = 138057.658
|
|
area_mm2 = 96761.979
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_stc_06_ap242_e3"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_stc_06_asme1_ap242-e3.stp"
|
|
sha256 = "71777c28da76da0e8a667e4cbe792d5f72c09b5c56440c9744d3d50ca96ecc8d"
|
|
bodies = 1
|
|
volume_mm3 = 1790506.036
|
|
area_mm2 = 98796.999
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|
|
|
|
[[file]]
|
|
name = "nist_stc_07_ap242_e3"
|
|
source = "nist-pmi"
|
|
path = "NIST-PMI-STEP-Files/nist_stc_07_asme1_ap242-e3.stp"
|
|
sha256 = "2dddf9b8894bc241f7ffddf3dc4502baa3d49c374e8784039d14b86473d54832"
|
|
bodies = 3
|
|
volume_mm3 = 1726318.102
|
|
area_mm2 = 391382.797
|
|
blessed = "2026-10-25: initial recording: NIST PMI corpus, first run on upstream/main 7e24f0e3"
|