{"ok":true,"resource":{"id":"sand3d--automate--automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default","sourceId":"sandflow-sand3d","sourceAssetId":"automate:e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default","name":"AUTOMATE E02041Db2C039Bef027F8C1C 80D51 (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":257762,"kind":"3d-code","license":"CC-BY-4.0","revision":"ba1baf9d89ddf57433d7c47cb461f6d8883067a1","sourceUrl":"https://huggingface.co/datasets/Sandflow/sand3d-automate","entryUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.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":"f34567d623b94b9aff84722ab5dc31cef35a63c0e2d8c54c3b0101a181cab03b","contentHash":"9e6412e63c48f67fc86143f88016bd41262ef8722c242c0c0b845cd9788203c5","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-automate/LICENSE"},"commercialPermitted":true,"notes":"Parametric 3D object from Sandflow/sand3d-automate (3,169 objects). Pinned revision 83cb3d4."},"outputFiles":[{"path":"usda/0006/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.usda","format":"usda","sizeBytes":50000,"sha256":"f34567d623b94b9aff84722ab5dc31cef35a63c0e2d8c54c3b0101a181cab03b","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-automate","subcollection":"automate","totalInDataset":3169,"entryFunction":"adjustable_rail","nJoints":2,"fScore":0.9971,"program":"import math\nimport sand3d as s3d\n\n\ndef adjustable_rail():\n    fixed_rail = fixed_rail_body()\n    sliding_rail = rail(fixed_rail, \"sliding_rail\", x=-120.1, y=10, z=41.63, rx=90)\n    return s3d.assembly(\"adjustable_rail\", fixed_rail, sliding_rail)\n\n\ndef rail(parent, name, x=0, y=0, z=0, rx=0, ry=0, rz=0):\n    frame = s3d.local(parent, x, y, z, rx, ry, rz)\n    sliding_rail = s3d.at(sliding_rail_body(name), on=frame)\n    slide_frame = s3d.local(parent, -120.1, 10, 41.63, 90, 0, 0)\n    s3d.joint(f\"{name}_slide\", sliding_rail, slide_frame, kind=\"prismatic\", range=(-8, 8))\n    spin_frame = s3d.local(parent, -120.1, 10, 41.63, 90, 0, 0)\n    s3d.joint(f\"{name}_spin\", sliding_rail, spin_frame, kind=\"continuous\")\n    return sliding_rail\n\n\ndef fixed_rail_body():\n    slotted_rail_1 = slotted_rail(\"slotted_rail_1\")\n    slotted_rail_1 = s3d.transform(slotted_rail_1, z=60.38)\n    return s3d.group(\"fixed_rail\", slotted_rail_1)\n\n\ndef sliding_rail_body(name):\n    piece = slotted_rail(f\"{name}_piece\")\n    piece = s3d.transform(piece, x=120.1, y=-18.75, z=10, rx=-90, rz=180)\n    return s3d.group(name, piece)\n\n\ndef slotted_rail(\n    name,\n    length=248.4,\n    width=80,\n    height=45.7,\n    wall=1.6,\n    end_x=117.6,\n    top_t=2,\n    bridge=6,\n    bore=25.12,\n    hinge_d=8.2,\n    hinge_bore=5,\n    hinge_length=26,\n):\n    bottom = -height / 2 + hinge_d / 2\n    wall_h = height / 2 - bottom\n    side = s3d.at(s3d.extrude(name, s3d.rect(2 * end_x, wall), wall_h), y=-(width - wall) / 2, z=bottom)\n    other = s3d.transform(s3d.copy(side), mirror=\"y\")\n    end = s3d.at(s3d.extrude(\"end\", s3d.rect(wall, width - 2 * wall), wall_h), x=end_x - wall / 2, z=bottom)\n    twin = s3d.transform(s3d.copy(end), mirror=\"x\")\n    body = s3d.join(side, other, end, twin)\n    body = end_bores(body, bore, 1.05)\n    top = s3d.at(s3d.extrude(\"lattice\", s3d.rect(2 * end_x, width), top_t), z=height / 2 - top_t)\n    top = windows(top, end_x, width, bridge, wall)\n    body = s3d.join(body, top)\n    eye_x = (length - hinge_d) / 2\n    lug = hinge_eye(eye_x, end_x, bottom, hinge_d, hinge_bore, hinge_length, wall)\n    lug = s3d.at(lug, y=23)\n    second = s3d.transform(s3d.copy(lug), mirror=\"x\", y=-31)\n    return s3d.join(body, lug, second)\n\n\ndef end_bores(ob, diameter, z):\n    return s3d.hole(ob, diameter, on=s3d.Frame((0, 0, z), normal=(1, 0, 0)))\n\n\ndef windows(ob, end_x, width, bridge, wall):\n    pitch = (2 * end_x - wall) / 4\n    opening = pitch - bridge\n    upper_depth = width / 2 - bridge / 2 - bridge\n    lower_depth = upper_depth - 8\n    s3d.pocket(\n        ob,\n        s3d.rect(opening, upper_depth),\n        on=s3d.grid(4, 1, pitch, on=ob.face(\"top\")).move(y=bridge / 2 + upper_depth / 2),\n    )\n    s3d.pocket(\n        ob,\n        s3d.rect(opening, lower_depth),\n        on=s3d.grid(4, 1, pitch, on=ob.face(\"top\")).move(y=-bridge / 2 - lower_depth / 2),\n    )\n    return ob\n\n\ndef hinge_eye(x, end_x, z, diameter, bore, length, wall):\n    eye = s3d.at(s3d.extrude(\"eye\", s3d.circle(diameter), length, both=True), rx=90, x=x, z=z)\n    web = s3d.at(\n        s3d.extrude(\n            \"flap\",\n            s3d.poly(\n                [(end_x - wall, z), (x + diameter / 2, z), (end_x, z + 3 * diameter), (end_x - wall, z + 3 * diameter)]\n            ),\n            length,\n            both=True,\n        ),\n        rx=90,\n    )\n    eye = s3d.join(eye, web)\n    return s3d.hole(eye, bore, on=s3d.Frame((x, 0, z), normal=(0, 1, 0)))","usdaPath":"usda/0006/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.usda","programSha256":"9e6412e63c48f67fc86143f88016bd41262ef8722c242c0c0b845cd9788203c5","explorerUrl":"/resources/explorer?oid=automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/automate-e02041db2c039bef027f8c1c_80d51f7cb4c5457b8cfc9e4b_665a8dd32c5e564aecc96805_default.glb"},"downloadUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/tree/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006","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 (2 articulated joints, F-score: 0.9971)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}