{"id":25000069,"url":"https://github.com/tomasf/helical","last_synced_at":"2026-04-25T00:39:35.576Z","repository":{"id":230099437,"uuid":"764252510","full_name":"tomasf/Helical","owner":"tomasf","description":"A Cadova library providing customizable threads, screws, bolts, nuts and related parts.","archived":false,"fork":false,"pushed_at":"2026-03-06T16:12:50.000Z","size":36338,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-03-18T20:20:42.183Z","etag":null,"topics":["bolt","cadova","fasteners","screw","threads"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-27T18:47:44.000Z","updated_at":"2026-03-06T15:37:32.000Z","dependencies_parsed_at":"2025-07-26T02:15:07.453Z","dependency_job_id":"60251f73-67da-453a-8ab9-e4865586599a","html_url":"https://github.com/tomasf/Helical","commit_stats":null,"previous_names":["tomasf/helical"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/tomasf/Helical","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasf%2FHelical","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasf%2FHelical/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasf%2FHelical/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasf%2FHelical/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasf","download_url":"https://codeload.github.com/tomasf/Helical/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasf%2FHelical/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32246400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bolt","cadova","fasteners","screw","threads"],"created_at":"2025-02-04T19:31:10.860Z","updated_at":"2026-04-25T00:39:35.571Z","avatar_url":"https://github.com/tomasf.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helical\n\nHelical is a library for [Cadova](https://github.com/tomasf/Cadova) that simplifies the creation of threaded components and related parts. It supports widely-used metric threads, bolts, and nuts, as well as the ability to customize these components to fit specific requirements.\n\n\u003cimg src=\"https://github.com/user-attachments/assets/f4fef516-f493-4034-baa2-bf6026ed4f68\" /\u003e\n\n[Bolts demo](Sources/Demo/bolts.stl) · [Nuts and washers demo](Sources/Demo/nutsAndWashers.stl)\n\n## Installation\n\nIntegrate Helical into your project with the Swift Package Manager by adding it as a dependency in your `Package.swift` file:\n\n```swift\n.package(url: \"https://github.com/tomasf/Helical.git\", from: \"1.0.0\")\n```\n\nThen, import Helical where it's needed:\n```swift\nimport Helical\n```\n\n## Usage\n\u003cimg align=\"right\" width=\"100\" src=\"https://github.com/user-attachments/assets/6481b084-dc59-4c2d-b5a8-e32a44beb6e8\" /\u003e\n\n### Standard Components\n\nHelical simplifies the process of creating threaded shapes, making it easier to incorporate threaded holes into your models. It also provides a selection of standard bolts, nuts, and corresponding holes. Creating a typical M8x20 hex head bolt is simple:\n\n```swift\nBolt.hexHead(.m8, length: 20, unthreadedLength: 5)\n```\n\nThis generates a standard [DIN 931](https://www.fasteners.eu/standards/DIN/931/) bolt, as expected.\n\n### Customizing Components\n\n\u003cimg align=\"right\" width=\"100\" src=\"https://github.com/user-attachments/assets/728e1d80-d713-4b2f-abdf-99b5e87e20f5\" /\u003e\n\nBeyond the standard offerings, Helical allows for modifications to fit unique requirements:\n\n```swift\nBolt.hexHead(\n    .isoMetric(.m8, pitch: 0.75),\n    headWidth: 15,\n    headHeight: 6.5,\n    length: 20\n)\n```\n\nOr fully customize parts to your specific needs:\n\n\u003cimg align=\"right\" width=\"100\" src=\"https://github.com/user-attachments/assets/33a11406-b781-401a-8884-58fce44a6b8b\" /\u003e\n\n```swift\nlet thread = ScrewThread(\n    handedness: .left,\n    starts: 2,\n    pitch: 1.5,\n    majorDiameter: 6.2,\n    minorDiameter: 5.3,\n    form: .trapezoidal(angle: 90°, crestWidth: 0.25)\n)\nlet customBolt = Bolt(\n    thread: thread,\n    length: 15,\n    unthreadedLength: 3,\n    unthreadedDiameter: 5,\n    headShape: .countersunk(angle: 80°, topDiameter: 10, boltDiameter: 5),\n    socket: .slot(length: 10, width: 1, depth: 1.4)\n)\n```\n\n### Holes\n\n\u003cimg align=\"right\" width=\"200\" src=\"https://github.com/user-attachments/assets/e9c6fe05-5f06-43ec-a7a8-4d17435db0a4\" /\u003e\n\nCreating a matching countersunk clearance hole for a bolt is straightforward:\n\n```swift\nBox(13)\n    .aligned(at: .centerXY)\n    .subtracting {\n        customBolt.clearanceHole(entry: .recessedHead)\n    }\n```\n\nAs is making a threaded hole for a particular thread:\n\n\u003cimg align=\"right\" width=\"200\" src=\"https://github.com/user-attachments/assets/f5bd670a-a70b-4a02-8348-099a9c1a6330\" /\u003e\n\n```swift\nBox(13)\n    .aligned(at: .centerXY)\n    .subtracting {\n        ThreadedHole(thread: thread, depth: 13, leadIns: .both)\n    }\n```\n\n### Lead-In Chamfers\n\n`LeadIn` and `LeadInEnds` provide a unified way to add thread-entry chamfers to screws, threaded holes, and nuts. Size can be specified relative to thread depth, pitch, or cone angle, or as explicit dimensions:\n\n```swift\nScrew(thread: .isoMetric(.m6), length: 20, leadIns: .both(.standard))\n\nNut(thread: .isoMetric(.m6), shape: body, leadIns: .both(.angle(120°)))\n```\n\n## Behavior\n\n\u003cimg align=\"right\" width=\"200\" src=\"https://github.com/user-attachments/assets/8b56d947-e295-439e-96c7-04b7bec1b7fe\" /\u003e\n\nHelical uses Cadova's `tolerance` environment setting to increase the diameter of holes and decrease the diameter of bolts. Clearance holes can create overhang-safe shapes. Specify a circular overhang method (`circularOverhangMethod`) to enable this.\n\n```swift\n.withCircularOverhangMethod(.bridge)\n.withTolerance(0.5)\n```\n\u003cbr clear=\"both\"/\u003e\n\n## Contributing\n\nWe welcome contributions. Feel free to open issues for feedback or suggestions and submit pull requests for improvements to the codebase.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasf%2Fhelical","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasf%2Fhelical","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasf%2Fhelical/lists"}