{"ok":true,"resource":{"id":"sand3d--automate--automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default","sourceId":"sandflow-sand3d","sourceAssetId":"automate:1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default","name":"AUTOMATE 1Dc9C6F3B08Ca179Bf1E8F82 41Bdd (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":2556301,"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-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_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":"059b47b79653255c854310f2c1340c8d1abf676333fa479fee8202fbe7b5200c","contentHash":"3cf521bb8878af4b09c168d963afa6d08d687892ccd0802f1508d3343cd84441","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-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.usda","format":"usda","sizeBytes":50000,"sha256":"059b47b79653255c854310f2c1340c8d1abf676333fa479fee8202fbe7b5200c","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-automate","subcollection":"automate","totalInDataset":3169,"entryFunction":"hex_head_bolt_and_nut","nJoints":1,"fScore":0.9975,"program":"import math\nimport sand3d as s3d\n\n\ndef hex_head_bolt_and_nut():\n    bolt_anchor = bolt_anchor_body()\n    nut_rotor = rotor(bolt_anchor, \"nut_rotor\", x=0.03, y=-48.82, z=57.74, rx=90, ry=-45)\n    return s3d.assembly(\"hex_head_bolt_and_nut\", bolt_anchor, nut_rotor, nut_rotor=nut_rotor)\n\n\ndef rotor(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    nut_rotor = s3d.at(nut_rotor_body(f\"{name}\"), on=frame)\n    s3d.joint(f\"{name}_spin\", nut_rotor, frame, kind=\"continuous\")\n    return nut_rotor\n\n\ndef bolt_anchor_body():\n    hex_head_bolt_piece = hex_head_bolt(\"hex_head_bolt_piece\")\n    hex_head_bolt_piece = s3d.transform(hex_head_bolt_piece, x=0.03, y=0.27, z=57.74)\n    return s3d.group(\"bolt_anchor\", hex_head_bolt_piece)\n\n\ndef nut_rotor_body(name):\n    nut_rotor_piece = hex_nut(f\"{name}_piece\")\n    nut_rotor_piece = s3d.transform(nut_rotor_piece, z=-12.65)\n    return s3d.group(name, nut_rotor_piece)\n\n\ndef hex_head_bolt(\n    name,\n    head_w=78.87,\n    head_h=75,\n    length=100,\n    head_t=25,\n    shaft_d=37,\n    shaft_l=25,\n    thread_d=36.5,\n    neck_l=4.2,\n    head_y=38.41,\n    pitch=3,\n):\n    slope = 2 * head_h / head_w - math.sqrt(3)\n    angle = math.degrees(math.atan(slope))\n    diameter = head_w * math.sqrt(1 + slope * slope)\n    head = s3d.extrude(name, s3d.polygon(6, diameter), head_t, both=True)\n    head = s3d.at(head, rz=-angle)\n    head = s3d.transform(head, rx=90, y=head_y)\n    base = head_y - head_t / 2\n    shoulder = s3d.at(s3d.cylinder(\"shoulder\", shaft_d, shaft_l), rx=90, y=base)\n    neck = s3d.at(s3d.cylinder(\"neck\", thread_d, neck_l), rx=90, y=base - shaft_l)\n    threaded = threaded_shank(thread_d, length - head_t - shaft_l - neck_l, pitch, base - shaft_l - neck_l)\n    return s3d.join(head, shoulder, neck, threaded)\n\n\ndef threaded_shank(diameter, length, pitch, end_y):\n    shank = s3d.thread(\"threaded\", diameter, length, pitch)\n    return s3d.at(shank, rx=90, y=end_y)\n\n\ndef hex_nut(name, across_flats=69.28, height=25, bore_d=36.5, pitch=3.5, mouth_d=40.5):\n    corner_d = across_flats * 2 / 3**0.5\n    outer_r = corner_d / 2\n    end_r = across_flats / 2\n    bevel_h = (outer_r - end_r) / 3**0.5\n    blank = s3d.at(s3d.extrude(name, s3d.polygon(6, corner_d), height, both=True), rz=30)\n    profile = [\n        (0, -height / 2),\n        (end_r, -height / 2),\n        (outer_r, -height / 2 + bevel_h),\n        (outer_r, height / 2 - bevel_h),\n        (end_r, height / 2),\n        (0, height / 2),\n    ]\n    body = s3d.intersect(blank, s3d.revolve(\"chamfer_limit\", profile))\n    body = threaded_bore(body, bore_d, mouth_d, height, pitch)\n    return body\n\n\ndef threaded_bore(body, bore_d, mouth_d, height, pitch):\n    s3d.hole(body, bore_d, on=s3d.bbox(body, \"+Z\"), csk=(mouth_d, 90))\n    tool = s3d.at(s3d.thread(\"thread\", mouth_d, height + 2 * pitch, pitch), z=-height / 2 - pitch)\n    return s3d.cut(body, tool)","usdaPath":"usda/0006/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default.usda","programSha256":"3cf521bb8878af4b09c168d963afa6d08d687892ccd0802f1508d3343cd84441","explorerUrl":"/resources/explorer?oid=automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_default","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/automate-1dc9c6f3b08ca179bf1e8f82_41bddc52bfbada6c3cb0a3f3_0c2ac16343160636d116bcc8_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 (1 articulated joints, F-score: 0.9975)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}