{"ok":true,"resource":{"id":"sand3d--automate--automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default","sourceId":"sandflow-sand3d","sourceAssetId":"automate:39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default","name":"AUTOMATE 39E95A4520310Aa1E474B936 A5Acf (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":3544777,"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-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_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":"a4ba959556bfc68f1ae7b27e28f469f10c784babe068b62f1cc2f759d1786513","contentHash":"5b54b3e243d6e7caec30c1f68b4280e769715bfcff69e1e714e7743b43ef968d","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-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.usda","format":"usda","sizeBytes":50000,"sha256":"a4ba959556bfc68f1ae7b27e28f469f10c784babe068b62f1cc2f759d1786513","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-automate","subcollection":"automate","totalInDataset":3169,"entryFunction":"cream_jar_pair","nJoints":1,"fScore":1,"program":"import math\nimport sand3d as s3d\n\n\ndef cream_jar_pair():\n    jar_pair = jar_pair_body()\n    turning_lid = lid(jar_pair, \"turning_lid\", x=-42.48, y=0.04, z=50.93)\n    return s3d.assembly(\"cream_jar_pair\", jar_pair, turning_lid)\n\n\ndef lid(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    turning_lid = s3d.at(turning_lid_body(f\"{name}\"), on=frame)\n    s3d.joint(f\"{name}_spin\", turning_lid, frame, kind=\"continuous\")\n    return turning_lid\n\n\ndef jar_pair_body():\n    jar_lid_1 = s3d.transform(jar_lid(\"jar_lid_1\"), x=41.02, y=0.04, z=52.98, rx=0, ry=0, rz=0)\n    cream_jar_1 = s3d.transform(cream_jar(\"cream_jar_1\"), x=-42.48, y=0.04, z=27.53, rx=0, ry=0, rz=0)\n    cream_jar_2 = s3d.transform(cream_jar(\"cream_jar_2\"), x=42.52, y=0.04, z=27.53, rx=0, ry=0, rz=0)\n    return s3d.group(\"jar_pair\", jar_lid_1, cream_jar_1, cream_jar_2)\n\n\ndef turning_lid_body(name):\n    turning_lid_piece = s3d.transform(jar_lid(f\"{name}_piece\"), x=0, y=0, z=2.05, rx=0, ry=0, rz=0)\n    return s3d.group(name, turning_lid_piece)\n\n\ndef jar_lid(\n    name,\n    d=62,\n    h=5.5,\n    t=0.7,\n    crest_r=19.23,\n    inner_r=21.12,\n    trough_r=24.515,\n    rim_r=27.41,\n    small_r=0.5,\n    draft=5,\n):\n    return s3d.revolve(name, lid_section(d / 2, h / 2, t, crest_r, inner_r, trough_r, rim_r, small_r, draft))\n\n\ndef lid_section(radius, half_h, t, crest, inner, trough, rim, fillet_r, draft):\n    center_top = 0.25\n    center_bottom = center_top - t\n    inner_z = -half_h + t + fillet_r\n    trough_z = -half_h + t + 1.5\n    rim_z = half_h - fillet_r\n    lower_inner = inner - 0.18\n    lower_trough = trough + 0.18\n    lower_rim = rim - 0.185\n    top_center_r = 17.545\n    lower_center_r = top_center_r + 0.18\n    upper_c = (top_center_r, center_top + fillet_r)\n    lower_c = (lower_center_r, center_bottom + 1)\n    bead_c = (crest, center_top)\n    upper_tangent = bead_tangent(upper_c, fillet_r, bead_c, fillet_r + t)\n    lower_tangent = bead_tangent(lower_c, 1, bead_c, fillet_r)\n    return [\n        (0, center_top),\n        (top_center_r, center_top),\n        s3d.arc(center=upper_c, r=fillet_r, start=-90, end=upper_tangent),\n        s3d.arc(center=bead_c, r=fillet_r + t, start=upper_tangent + 180, end=draft),\n        s3d.arc(center=(inner, inner_z), r=fillet_r, start=180 + draft, end=270),\n        (trough, -half_h + t),\n        s3d.arc(center=(trough, trough_z), r=1.5, start=270, end=360 - draft),\n        s3d.arc(center=(rim, rim_z), r=fillet_r, start=180 - draft, end=90),\n        (radius, half_h),\n        (radius, half_h - t),\n        (lower_rim, half_h - t),\n        s3d.arc(center=(lower_rim, half_h - t - 1), r=1, start=90, end=180 - draft),\n        s3d.arc(center=(lower_trough, -half_h + 2), r=2, start=360 - draft, end=270),\n        (lower_inner, -half_h),\n        s3d.arc(center=(lower_inner, -half_h + 1), r=1, start=270, end=180 + draft),\n        s3d.arc(center=bead_c, r=fillet_r, start=draft, end=lower_tangent + 180),\n        s3d.arc(center=lower_c, r=1, start=lower_tangent, end=-90),\n        (0, center_bottom),\n    ]\n\n\ndef bead_tangent(concave, concave_r, convex, convex_r):\n    dx = convex[0] - concave[0]\n    dz = convex[1] - concave[1]\n    return math.degrees(math.atan2(dz, dx) - math.acos((concave_r + convex_r) / math.hypot(dx, dz)))\n\n\ndef cream_jar(name, diameter=62.5, height=55, wall=3.5, floor=5.5):\n    r = diameter / 2\n    z = height / 2\n    inner = r - wall\n    outline = [\n        (0, -z),\n        (r - 7, -z),\n        (r - 5, -z + 1),\n        (r - 3, -z + 4),\n        (r - 1, -z + 8),\n        (r, -z + 10),\n        (r, z - 1),\n        (r - 1, z),\n        (inner + 1, z),\n        (inner, z - 1),\n        (inner, -z + floor + 8),\n        (inner - 1, -z + floor + 4),\n        (inner - 4, -z + floor + 1),\n        (inner - 8, -z + floor),\n        (0, -z + floor),\n    ]\n    return s3d.revolve(name, outline)","usdaPath":"usda/0006/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default.usda","programSha256":"5b54b3e243d6e7caec30c1f68b4280e769715bfcff69e1e714e7743b43ef968d","explorerUrl":"/resources/explorer?oid=automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_default","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/automate-39e95a4520310aa1e474b936_a5acffc7cc9b0d858bf95d8e_ca694851c71810aa8965dc3d_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: 1)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}