{"ok":true,"resource":{"id":"sand3d--articraft--articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39","sourceId":"sandflow-sand3d","sourceAssetId":"articraft:rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39","name":"ARTICRAFT Rec Fidget Toy 235Ee38B285A4D1 (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":267605,"kind":"3d-code","license":"CC-BY-4.0","revision":"ba1baf9d89ddf57433d7c47cb461f6d8883067a1","sourceUrl":"https://huggingface.co/datasets/Sandflow/sand3d-articraft","entryUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.png","capabilities":["Sand3D (Code)","UsdPhysics","Kinematics Joint Articulation","Parametric Reconstruction"],"capabilityEvidence":"sand3d-program-analysis","runtimeValidation":"not-tested","classificationEvidence":"family-taxonomy-mapping","storageStatus":"hf-mirror-tree-verified","packageHash":"669c4013334c52c231cb529c8f71f924fa00882478ab94cdaa639ac3f776bb2e","contentHash":"0bdca64568fd6181596987e8f015294843dc35dc1d14a97bf99bfe55a58705ed","checkedAt":"2026-11-06T14:00:00.000Z","aiGenerated":false,"attribution":"Sandflow Sand3D Library; CC-BY-4.0","evidence":{"license":{"spdx":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/","location":"datasets/Sandflow/sand3d-articraft/LICENSE"},"commercialPermitted":true,"notes":"Parametric 3D object from Sandflow/sand3d-articraft (9,209 objects). Pinned revision 1d07bda."},"outputFiles":[{"path":"usda/0002/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.usda","format":"usda","sizeBytes":50000,"sha256":"669c4013334c52c231cb529c8f71f924fa00882478ab94cdaa639ac3f776bb2e","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-articraft","subcollection":"articraft","totalInDataset":9209,"entryFunction":"flipper_ring_fidget","nJoints":4,"fScore":0.9737,"program":"import sand3d as s3d\n\n\ndef flipper_ring_fidget():\n    body = ring_body()\n    f = s3d.local(body, 0, 9.2, 3.4)\n    north = s3d.at(north_tab(), on=f)\n    s3d.joint(\"ring_to_north_tab\", north, f, kind=\"revolute\", axis=\"+X\", range=(0, 77.349))\n    f = s3d.local(body, 0, -9.2, 3.4)\n    south = s3d.at(south_tab(), on=f)\n    s3d.joint(\"ring_to_south_tab\", south, f, kind=\"revolute\", axis=\"-X\", range=(0, 77.349))\n    f = s3d.local(body, 11.2, 0, 3.4)\n    east = s3d.at(east_tab(), on=f)\n    s3d.joint(\"ring_to_east_tab\", east, f, kind=\"revolute\", axis=\"-Y\", range=(0, 77.349))\n    f = s3d.local(body, -11.2, 0, 3.4)\n    west = s3d.at(west_tab(), on=f)\n    s3d.joint(\"ring_to_west_tab\", west, f, kind=\"revolute\", axis=\"+Y\", range=(0, 77.349))\n    return s3d.assembly(\"flipper_ring_fidget\", body, north, south, east, west)\n\n\ndef ring_body():\n    shell = s3d.extrude(\"ring_shell\", s3d.superellipse(38, 30, n=2.35), 4.8, both=True)\n    parts = [s3d.material(shell, \"steel\", color=\"#30363d\")]\n    for prefix, coord, axis in [\n        (\"north_hinge\", 9.2, \"x\"),\n        (\"south_hinge\", -9.2, \"x\"),\n        (\"east_hinge\", 11.2, \"y\"),\n        (\"west_hinge\", -11.2, \"y\"),\n    ]:\n        if axis == \"x\":\n            for side, sgn in [(\"left\", -1), (\"right\", 1)]:\n                x = sgn * 4.1\n                parts += [\n                    s3d.material(\n                        s3d.at(\n                            s3d.extrude(\n                                prefix + \"_\" + side + \"_pad\", s3d.rect(4.2, 2.2), 1.8, both=True\n                            ),\n                            x=x,\n                            y=coord,\n                            z=3.0,\n                        ),\n                        \"steel\",\n                        color=\"#30363d\",\n                    ),\n                    s3d.material(\n                        s3d.at(\n                            s3d.extrude(\n                                prefix + \"_\" + side + \"_lug\", s3d.circle(2), 3.6, both=True\n                            ),\n                            x=x,\n                            y=coord,\n                            z=3.4,\n                            ry=90,\n                        ),\n                        \"steel\",\n                        color=\"#30363d\",\n                    ),\n                ]\n        else:\n            for side, sgn in [(\"lower\", -1), (\"upper\", 1)]:\n                y = sgn * 4.1\n                parts += [\n                    s3d.material(\n                        s3d.at(\n                            s3d.extrude(\n                                prefix + \"_\" + side + \"_pad\", s3d.rect(2.2, 4.2), 1.8, both=True\n                            ),\n                            x=coord,\n                            y=y,\n                            z=3.0,\n                        ),\n                        \"steel\",\n                        color=\"#30363d\",\n                    ),\n                    s3d.material(\n                        s3d.at(\n                            s3d.extrude(\n                                prefix + \"_\" + side + \"_lug\", s3d.circle(2), 3.6, both=True\n                            ),\n                            x=coord,\n                            y=y,\n                            z=3.4,\n                            rx=90,\n                        ),\n                        \"steel\",\n                        color=\"#30363d\",\n                    ),\n                ]\n    return s3d.group(\"ring_body\", *parts)\n\n\ndef north_tab():\n    return tab(\"north_tab\", \"y\", 1)\n\n\ndef south_tab():\n    return tab(\"south_tab\", \"y\", -1)\n\n\ndef east_tab():\n    return tab(\"east_tab\", \"x\", 1)\n\n\ndef west_tab():\n    return tab(\"west_tab\", \"x\", -1)\n\n\ndef tab(name, axis, sign):\n    barrel = s3d.material(\n        s3d.at(\n            s3d.extrude(\"barrel\", s3d.circle(2), 4.6, both=True),\n            ry=90 if axis == \"y\" else 0,\n            rx=0 if axis == \"y\" else 90,\n        ),\n        \"steel\",\n        color=\"#c5cacf\",\n    )\n    if axis == \"y\":\n        plate = s3d.at(\n            s3d.extrude(\"paddle\", s3d.rect(6.4, 5, r=1.15), 1.8, both=True), y=sign * 3.3, z=-0.1\n        )\n        rib = s3d.at(\n            s3d.extrude(\"grip_rib\", s3d.rect(4.608, 0.8), 0.6, both=True), y=sign * 5.04, z=0.62\n        )\n    else:\n        plate = s3d.at(\n            s3d.extrude(\"paddle\", s3d.rect(5, 6.4, r=1.15), 1.8, both=True), x=sign * 3.3, z=-0.1\n        )\n        rib = s3d.at(\n            s3d.extrude(\"grip_rib\", s3d.rect(0.8, 4.608), 0.6, both=True), x=sign * 5.04, z=0.62\n        )\n    return s3d.group(\n        name,\n        barrel,\n        s3d.material(plate, \"aluminium\", color=\"#c5cacf\"),\n        s3d.material(rib, \"aluminium\", color=\"#c5cacf\"),\n    )","usdaPath":"usda/0002/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.usda","programSha256":"0bdca64568fd6181596987e8f015294843dc35dc1d14a97bf99bfe55a58705ed","explorerUrl":"/resources/explorer?oid=articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/articraft-rec_fidget_toy_235ee38b285a4d19bad2b2c808e78b39.glb"},"downloadUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/tree/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002","mirror":{"repository":"SZFSPC/techidaily-resources","revision":"ba1baf9d89ddf57433d7c47cb461f6d8883067a1","checkedAt":"2026-11-06T14:00:00.000Z","verification":"official-huggingface-dataset-parquet-manifest"}},"analysis":{"suitability":"candidate-needs-runtime-validation","useCase":"scene-building","evidence":{"formats":"sand3d-python-program-and-openusd-manifest","capabilities":"sand3d-program-analysis","category":"family-taxonomy-mapping"},"limitations":["Runtime compatibility and physical behavior have not been tested by TechIDaily.","Sand3D programs export OpenUSD with UsdPhysics joints; requires sand3d library and Python 3.13 for direct execution.","Mirror verification checks Git tree identity and sampled delivery, not an independent rehash of every payload.","Follow source-specific licensing and attribution. Other rights may apply; no endorsement is implied.","Parametric Python reconstruction available (4 articulated joints, F-score: 0.9737)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}