{"ok":true,"resource":{"id":"sand3d--automate--automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default","sourceId":"sandflow-sand3d","sourceAssetId":"automate:90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default","name":"AUTOMATE 90Ac55A27275B426151816Cd 85093 (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":99262,"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-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_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":"73f148045061a1b5ae828451e306dc8edf8c70b99a68084f6f224cfec21edc6e","contentHash":"c2c2d7b70e7b5a54cbc4a7f1a5705732e9c7cf85053cc839a22bb335e063c6ba","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-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.usda","format":"usda","sizeBytes":50000,"sha256":"73f148045061a1b5ae828451e306dc8edf8c70b99a68084f6f224cfec21edc6e","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0006/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-automate","subcollection":"automate","totalInDataset":3169,"entryFunction":"curved_pruning_shears","nJoints":4,"fScore":1,"program":"import sand3d as s3d\nimport math\n\n\ndef curved_pruning_shears():\n    left_handle = left_handle_body()\n    pivot_carriage = carriage(left_handle, \"pivot_carriage\", x=-5.67, y=-12.44, z=53.88, rx=90, ry=-55)\n    right_handle = handle(pivot_carriage, \"right_handle\", z=-24.89)\n    return s3d.assembly(\"curved_pruning_shears\", left_handle, pivot_carriage, right_handle)\n\n\ndef carriage(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    pivot_carriage = s3d.at(pivot_carriage_body(f\"{name}\"), on=frame)\n    s3d.joint(f\"{name}_slide\", pivot_carriage, frame, kind=\"prismatic\", range=(-2.5, 2.5))\n    s3d.joint(f\"{name}_spin\", pivot_carriage, frame, kind=\"continuous\")\n    return pivot_carriage\n\n\ndef handle(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    right_handle = s3d.at(right_handle_body(f\"{name}\"), on=frame)\n    s3d.joint(f\"{name}_slide\", right_handle, frame, kind=\"prismatic\", range=(0, 12.2))\n    s3d.joint(f\"{name}_spin\", right_handle, frame, kind=\"continuous\")\n    return right_handle\n\n\ndef left_handle_body():\n    shear_arm_1 = shear_arm(\"shear_arm_1\")\n    shear_arm_1 = s3d.transform(shear_arm_1, x=-0.03, y=-5.41, z=56.88, rx=180, ry=-14.9, rz=0)\n    return s3d.group(\"left_handle\", shear_arm_1)\n\n\ndef pivot_carriage_body(name):\n    pivot_carriage_piece = pivot_pin(f\"{name}_piece\")\n    pivot_carriage_piece = s3d.transform(pivot_carriage_piece, x=0, y=0, z=-12.45, rx=90, ry=0, rz=0)\n    return s3d.group(name, pivot_carriage_piece)\n\n\ndef right_handle_body(name):\n    right_handle_piece = shear_arm(f\"{name}_piece\")\n    right_handle_piece = s3d.transform(right_handle_piece, x=-1.45, y=-6.22, z=6.35, rx=-90, ry=0, rz=-90)\n    return s3d.group(name, right_handle_piece)\n\n\ndef shear_arm(\n    name,\n    length=133.47,\n    width=12.7,\n    height=26.6,\n    blade_d=89.83,\n    blade_x=-24.9,\n    blade_z=-31.62,\n    end_d=9.86,\n    end_x=61.81,\n    end_z=-8.37,\n    hole_d=7.62,\n    heel_z=-7.49,\n    edge_z=-2.64,\n    tooth_pitch=4,\n    tooth_rise=1.34,\n):\n    top = end_z + end_d / 2\n    angle = math.degrees(math.asin((top - blade_z) / (blade_d / 2)))\n    outline = s3d.poly(\n        [\n            (-length / 2, heel_z),\n            s3d.arc(center=(blade_x, blade_z), r=blade_d / 2, start=angle + 100, end=angle),\n            (end_x, top),\n            s3d.arc(center=(end_x, end_z), r=end_d / 2, start=90, end=-100),\n            (10.5, -height / 2),\n            (3, heel_z),\n            (-12, heel_z),\n            (-18.3, 3.2),\n            (-24, edge_z),\n            (-47, edge_z),\n        ]\n    )\n    arm = s3d.extrude(name, outline, width, both=True)\n    arm = cutting_teeth(arm, width, edge_z, tooth_pitch, tooth_rise, 4, -35)\n    arm = arm_bore(arm, hole_d, -6.22, 1.45)\n    return s3d.at(arm, rx=90)\n\n\ndef cutting_teeth(arm, width, land, pitch, rise, count, center):\n    profile = s3d.poly([(-pitch / 4, land), (0, land + rise), (pitch / 4, land)])\n    tooth = s3d.extrude(\"serration\", profile, width * 2, both=True)\n    frames = s3d.grid(count, 1, pitch, on=s3d.Frame((center, 0, 0)))\n    return s3d.cut(arm, s3d.at(tooth, on=frames))\n\n\ndef arm_bore(arm, diameter, x, z):\n    return s3d.hole(arm, diameter, on=(x, z))\n\n\ndef pivot_pin(name):\n    return s3d.at(s3d.extrude(name, s3d.circle(7.62), 24.89, both=True), rx=90)","usdaPath":"usda/0006/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default.usda","programSha256":"c2c2d7b70e7b5a54cbc4a7f1a5705732e9c7cf85053cc839a22bb335e063c6ba","explorerUrl":"/resources/explorer?oid=automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_default","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/automate-90ac55a27275b426151816cd_85093c8fa024b7edb3487574_cc430b79ca19ff65b5c09b07_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 (4 articulated joints, F-score: 1)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}