{"ok":true,"resource":{"id":"sand3d--articraft--articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663","sourceId":"sandflow-sand3d","sourceAssetId":"articraft:rec_wheelchair_8101602294734dc69b2f75d91101d663","name":"ARTICRAFT Rec Wheelchair 8101602294734Dc (Sand3D Program)","category":"industrial","publisher":"Sandflow","formats":["py","usda","glb"],"fileCount":2,"sizeBytes":2221649,"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_wheelchair_8101602294734dc69b2f75d91101d663.usda","thumbnailUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.png","detailImageUrl":"https://sandflow-sand3d-explorer.hf.space/r/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.png","sourcePreviewUrl":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.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":"2dffd0f5530646c6c871c6c508c8b9dff06bbcd68c8da70209b14816f6bf8827","contentHash":"dc57e1b32fa07bb9d73b2eb7372d6da55384f5d8005846ce4d81628de8b0e486","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_wheelchair_8101602294734dc69b2f75d91101d663.usda","format":"usda","sizeBytes":50000,"sha256":"2dffd0f5530646c6c871c6c508c8b9dff06bbcd68c8da70209b14816f6bf8827","url":"https://huggingface.co/datasets/SZFSPC/techidaily-resources/resolve/ba1baf9d89ddf57433d7c47cb461f6d8883067a1/usda/0002/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.usda"}],"sand3d":{"datasetRepo":"Sandflow/sand3d-articraft","subcollection":"articraft","totalInDataset":9209,"entryFunction":"manual_wheelchair","nJoints":6,"fScore":0.997,"program":"import sand3d as s3d\nimport math\n\n\ndef manual_wheelchair():\n    frame = wheelchair_frame()\n    lrear = rear_wheel(1)\n    rrear = rear_wheel(-1)\n    lfork = caster_fork()\n    rfork = caster_fork()\n    lcw = caster_wheel()\n    rcw = caster_wheel()\n    f1 = s3d.local(frame, -90, 305, 305)\n    lrear = s3d.at(lrear, on=f1)\n    s3d.joint(\"left_rear_wheel_spin\", lrear, f1, kind=\"continuous\", axis=\"+Y\")\n    f2 = s3d.local(frame, -90, -305, 305)\n    rrear = s3d.at(rrear, on=f2)\n    s3d.joint(\"right_rear_wheel_spin\", rrear, f2, kind=\"continuous\", axis=\"+Y\")\n    f3 = s3d.local(frame, 280, 200, 380)\n    lfork = s3d.at(lfork, on=f3)\n    s3d.joint(\"left_caster_swivel\", lfork, f3, kind=\"continuous\", axis=\"+Z\")\n    f4 = s3d.local(frame, 280, -200, 380)\n    rfork = s3d.at(rfork, on=f4)\n    s3d.joint(\"right_caster_swivel\", rfork, f4, kind=\"continuous\", axis=\"+Z\")\n    f5 = s3d.local(lfork, -28, 0, -190)\n    lcw = s3d.at(lcw, on=f5)\n    s3d.joint(\"left_caster_wheel_spin\", lcw, f5, kind=\"continuous\", axis=\"+Y\")\n    f6 = s3d.local(rfork, -28, 0, -190)\n    rcw = s3d.at(rcw, on=f6)\n    s3d.joint(\"right_caster_wheel_spin\", rcw, f6, kind=\"continuous\", axis=\"+Y\")\n    return s3d.assembly(\"manual_wheelchair\", frame, lrear, rrear, lfork, rfork, lcw, rcw)\n\n\ndef mat(ob, kind, color):\n    return s3d.material(ob, kind, color=color)\n\n\ndef box(name, dims, xyz=(0, 0, 0), rpy=(0, 0, 0), kind=\"steel\", color=\"#babfc8\"):\n    o = s3d.extrude(name, s3d.rect(dims[0], dims[1]), dims[2], both=True)\n    o = s3d.at(\n        o,\n        x=xyz[0],\n        y=xyz[1],\n        z=xyz[2],\n        rx=math.degrees(rpy[0]),\n        ry=math.degrees(rpy[1]),\n        rz=math.degrees(rpy[2]),\n    )\n    return mat(o, kind, color)\n\n\ndef cyl(name, r, l, xyz=(0, 0, 0), rpy=(0, 0, 0), kind=\"steel\", color=\"#babfc8\"):\n    o = s3d.extrude(name, s3d.circle(2 * r), l, both=True)\n    o = s3d.at(\n        o,\n        x=xyz[0],\n        y=xyz[1],\n        z=xyz[2],\n        rx=math.degrees(rpy[0]),\n        ry=math.degrees(rpy[1]),\n        rz=math.degrees(rpy[2]),\n    )\n    return mat(o, kind, color)\n\n\ndef wheelchair_frame():\n    steel = \"#babfc8\"\n    fabric = \"#1a1f29\"\n    black = \"#242628\"\n    pieces = []\n    # tube paths are smooth approximations of the welded frame rails\n    pts = [\n        (340, 230, 930),\n        (260, 230, 820),\n        (-160, 230, 800),\n        (-160, 230, 540),\n        (80, 230, 540),\n        (280, 230, 460),\n    ]\n    pieces.append(mat(s3d.wire(\"left_side_frame\", s3d.spline(pts), 24), \"steel\", steel))\n    pts = [\n        (340, -230, 930),\n        (260, -230, 820),\n        (-160, -230, 800),\n        (-160, -230, 540),\n        (80, -230, 540),\n        (280, -230, 460),\n    ]\n    pieces.append(mat(s3d.wire(\"right_side_frame\", s3d.spline(pts), 24), \"steel\", steel))\n    for n, x, z, l in [\n        (\"front_seat_crossbar\", 30, 540, 460),\n        (\"rear_seat_crossbar\", -120, 540, 460),\n        (\"front_lower_crossbar\", 280, 460, 500),\n        (\"push_handle_bar\", 320, 930, 500),\n        (\"rear_lower_crossbar\", -80, 540, 480),\n    ]:\n        pieces.append(cyl(n, 12, l, (x, 0, z), (math.pi / 2, 0, 0)))\n    pieces += [\n        cyl(\"left_axle_support\", 12, 300, (-120, 245, 420), (0, 0, 0)),\n        cyl(\"right_axle_support\", 12, 300, (-120, -245, 420), (0, 0, 0)),\n    ]\n    pieces += [\n        cyl(\"left_axle_stub\", 14, 30, (-90, 260, 305), (math.pi / 2, 0, 0)),\n        cyl(\"right_axle_stub\", 14, 30, (-90, -260, 305), (math.pi / 2, 0, 0)),\n    ]\n    pieces += [\n        box(\"seat_sling\", (360, 400, 14), (100, 0, 521), kind=\"fabric\", color=fabric),\n        box(\"backrest_sling\", (30, 440, 340), (-165, 0, 710), kind=\"fabric\", color=fabric),\n    ]\n    for side, y in [(\"left\", 220), (\"right\", -220)]:\n        pieces.append(cyl(side + \"_backrest_sleeve\", 13, 220, (-160, y, 650)))\n    for side, y in [(\"left\", 120), (\"right\", -120)]:\n        pieces.append(cyl(side + \"_footrest_hanger\", 10, 260, (300, y, 330)))\n        pieces.append(cyl(side + \"_footrest_support\", 9, 80, (340, y, 230), (0, math.pi / 2, 0)))\n        pieces.append(\n            box(side + \"_footplate\", (120, 100, 10), (400, y, 230), kind=\"plastic\", color=black)\n        )\n    for side, y in [(\"left\", 200), (\"right\", -200)]:\n        pieces.append(cyl(side + \"_caster_receiver\", 13, 80, (280, y, 420)))\n    return s3d.group(\"frame\", *pieces)\n\n\ndef rear_wheel(side):\n    rubber = \"#141416\"\n    metal = \"#d1d6de\"\n    steel = \"#babfc8\"\n    y = 30 * side\n    p = [\n        cyl(\"tire\", 305, 35, (0, 0, 0), (math.pi / 2, 0, 0), \"rubber\", rubber),\n        cyl(\"rim\", 270, 22, (0, 0, 0), (math.pi / 2, 0, 0), \"aluminium\", metal),\n        cyl(\"hub\", 36, 60, (0, 0, 0), (math.pi / 2, 0, 0)),\n    ]\n    for i, a in enumerate((0, math.pi / 3, 2 * math.pi / 3)):\n        p.append(box(\"spoke_\" + str(i), (470, 6, 12), (0, 0, 0), (0, a, 0), \"aluminium\", metal))\n    p.append(cyl(\"pushrim\", 288, 6, (0, y, 0), (math.pi / 2, 0, 0)))\n    for i, a in enumerate((0, 2 * math.pi / 3, 4 * math.pi / 3)):\n        p.append(\n            box(\n                \"pushrim_standoff_\" + str(i),\n                (50, 6, 6),\n                (205 * math.cos(a), y * 0.5, 205 * math.sin(a)),\n                (0, a, 0),\n            )\n        )\n    return s3d.group(\"rear_wheel\", *p)\n\n\ndef caster_fork():\n    p = [\n        cyl(\"stem\", 10, 100, (0, 0, -50)),\n        cyl(\"crown\", 15, 18, (0, 0, -105)),\n        box(\"fork_bridge\", (55, 40, 12), (-28, 0, -105)),\n        box(\"outer_leg\", (12, 10, 78), (-28, 20, -150)),\n        box(\"inner_leg\", (12, 10, 78), (-28, -20, -150)),\n    ]\n    return s3d.group(\"caster_fork\", *p)\n\n\ndef caster_wheel():\n    p = [\n        cyl(\"tire\", 70, 30, (0, 0, 0), (math.pi / 2, 0, 0), \"rubber\", \"#141416\"),\n        cyl(\"rim\", 52, 20, (0, 0, 0), (math.pi / 2, 0, 0), \"aluminium\", \"#d1d6de\"),\n        cyl(\"hub\", 16, 18, (0, 0, 0), (math.pi / 2, 0, 0)),\n        box(\"spoke_bar\", (90, 6, 10), kind=\"aluminium\", color=\"#d1d6de\"),\n    ]\n    return s3d.group(\"caster_wheel\", *p)","usdaPath":"usda/0002/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.usda","programSha256":"dc57e1b32fa07bb9d73b2eb7372d6da55384f5d8005846ce4d81628de8b0e486","explorerUrl":"/resources/explorer?oid=articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663","glbUrl":"https://sandflow-sand3d-explorer.hf.space/glb/articraft-rec_wheelchair_8101602294734dc69b2f75d91101d663.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 (6 articulated joints, F-score: 0.997)."],"requiredNextSteps":["Check materials, scale, performance and required file conversion in your target renderer."]}}