{"id":17412813,"url":"https://github.com/ondratu/bitbeam-lib","last_synced_at":"2026-01-06T23:08:04.412Z","repository":{"id":91109898,"uuid":"150117718","full_name":"ondratu/bitbeam-lib","owner":"ondratu","description":"Openscad Bitbeam library","archived":false,"fork":false,"pushed_at":"2025-01-06T09:04:09.000Z","size":329,"stargazers_count":26,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-02T01:25:27.532Z","etag":null,"topics":["bitbeam","lego-technic","openscad"],"latest_commit_sha":null,"homepage":null,"language":"OpenSCAD","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ondratu.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"ondratu","custom":["https://paypal.me/mcbigcz"]}},"created_at":"2018-09-24T14:40:59.000Z","updated_at":"2025-01-06T09:04:13.000Z","dependencies_parsed_at":"2024-10-18T20:04:21.678Z","dependency_job_id":"675e84e7-ba73-4897-89aa-2a29d92cd3a8","html_url":"https://github.com/ondratu/bitbeam-lib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ondratu%2Fbitbeam-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ondratu%2Fbitbeam-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ondratu%2Fbitbeam-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ondratu%2Fbitbeam-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ondratu","download_url":"https://codeload.github.com/ondratu/bitbeam-lib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245938230,"owners_count":20697008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bitbeam","lego-technic","openscad"],"created_at":"2024-10-17T00:08:42.216Z","updated_at":"2026-01-06T23:08:04.406Z","avatar_url":"https://github.com/ondratu.png","language":"OpenSCAD","funding_links":["https://github.com/sponsors/ondratu","https://paypal.me/mcbigcz"],"categories":[],"sub_categories":[],"readme":"Bitbeam-lib\n===========\nOpenscad Bitbeam library for easy create `BitBeam \u003chttps://bitbeam.cc/\u003e`_,  `m-BITBEAM \u003chttp://www.tfsoft.cz/m-bitbeam/\u003e`_, LEGO® Technic, Clementoni®, Merkur® or Meccano® compatible parts.\n\nI create this library because some other libraries don't have all what i want. First I create my own extends, that i create one library with full functionality which I want.\n\nVariables\n---------\n:unit:  Is size of one bit in millimeters, which is **8** for Bitbeam or LEGO® by default. Clementoni® parts have **9**. Merkur® and Meccano® parts have **10**.\n:hole:  Hole diameter in millimeters, which is **4.8** for LEGO® and Clementoni®. Merkur® and Meccano® parts have **4**.\n:rim:   When is set to ``true``, all holes have rim, like LEGO® Technic parts. Default value is **false**.\n:rim_h: Rim height in millimeters, which is **1**.\n:rim_d: Rim diameter in millimeters which is **6**.\n:edge: Edge (rounding) for all beams which is **0.5** by default.\n:$fn:   Openscad number of fragments used by holes and ``cylinder_`` parts. Library set this to **25**.\n\nParts\n-----\nAll parts have some required parameters, and some optional name parameters. There are one parametres for all parts ``h``.\n\nh : float\n  Height multiplier for part. Default value is **1**. When value is less then 1, side holes are never generated. When value is less then 0.27, rim are never generated.\nside_holes : bool\n  Some parts, could have side_holes, which is **true** by default. When parameter is set to false, no side holes are generated.\nskip, skip_side: vector\n  Some parts, could have easy way to skip some holes. This parameters are vector of indexes, start from zero, which holes could be skipped.\n\nThere are tho groups of parts, one with prefix ``cube_`` and one with prefix ``cylinder_``. The difference is with starts and stops of parts. Cylinder looks more like LEGO® Technic parts.\n\nholes\n`````\n.. figure:: img/rim.png\n  :alt: holes with rim example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  holes(size, h=1, skip=[]);\n\nHoles module is used in parts. Holes start from center with ``unit`` space. For more details about height, rim and skip, see `parts`_ start.\n\narm\n```\n.. figure:: img/arm.png\n  :alt: arm example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_arm(size, h=1, side_holes=true, skip=[], skip_side=[]);\n  cylinder_arm(size, h=1, side_holes=true, skip=[], skip_side=[]);\n  mix_arm(holes, h=1, side_holes=true, skip=[], skip_side=[]);\n\nArm modules are the base modules. They generate plain part with long ``site*unit`` with holes. Center of arm is in center of first bit. Special ``mix_arm`` start as a ``cube`` but end as ``cylinder``.\n\nsize : number\n  Length of part in units.\nh : float number\n  Height multiplier for part, that means Z value.\nside_holes : bool\n  When is false, no side_holes will be generated.\nskip : vector\n  Vector of holes indexes from 0, which will be not generated.\nskip_side : vector\n  Like skip, but for side holes.\n\nangle\n`````\n.. figure:: img/angle.png\n  :alt: angle example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_angle(left, right, angle=45, h=1, side_holes=true);\n  cylinder_angle(left, right, angle=45, h=1, side_holes=true);\n\nAngle modules create parts from two arms ``left`` and ``right``, which are in ``180-angle`` angle. That is standard for tube nodes. Center of arm is in center of middle bit. As you can see in example, middle bit are shared of both left, and right arm. This middle bit never have side hole.\n\nleft : number\n  Length of left part arm.\nright : number\n  Length of right part arm.\nangle : number\n  Degrees of angle between arms.\n\nframe\n`````\n.. figure:: img/frame.png\n  :alt: frame example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_frame(x, y, h=1, side_holes=true);\n  cylinder_frame(x, y, h=1, side_holes=true);\n\nFrame modules crate frame from four arms without side hole in corners.\n\nbase\n````\n.. figure:: img/base.png\n  :alt: bae example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_base(x, y, x2=0, h=1, fill_holes=true);\n  cylinder_base(x, y, x2=0, h=1, fill_holes=true);\n\nBase modules can create two type of base parts. First is like frame with fill, second is trapezoid.\n\nx2 : number\n  If is **0**, which is default, that will create cuboid with parallel sides, but when is another than x, that create trapezoid.\nfill_holes : bool\n  If is set to **true**, which is default, base will be full of holes. Otherwise only squared arms will have holes. Side holes are not in trapezoidal side, and all holes ends in front of this side.\n\nplate\n`````\n.. figure:: img/plate.png\n  :alt: bae example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_plate(x, y, x2=0, h=1, holes=[0, 1, 2, 3]);\n  cylinder_plate(x, y, x2=0, h=1, holes=[0, 1, 2, 3]);\n\nPlate modules are similar to `base`_ modules but with other interface and other functionality. Modules create block with size ``x`` and ``y``. And could be create triangle with ``x2=1`` value.\n\nx2 : number\n  If is **0**, which is default, that will create cuboid with parallel sides, but when is another than x, that create trapezoid.\nholes : vector\n  Holes are index of sides, start with zero, where holes will be generated. Default value is **[0, 1, 2, 3]** which holes on all sides. Holes on last trapezoidal side are rotated.\n\nT (tee)\n```````\n.. figure:: img/tee.png\n  :alt: T example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_t(x, y, h=1);\n  cylinder_t(x, y, h=1);\n\nT (tee from plumbing naming) generates Bitbeam T parts as you want.\n\nx: number\n  Size of \"base\" arm. Skipped side holes are set automatically by length.\ny: number\n  size of arm, which is plumb to \"base\" arm in the middle of it's length.\n\nX (ex)\n``````\n.. figure:: img/ex.png\n  :alt: X example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_x(x, y, h=1);\n  cylinder_x(x, y, h=1);\n\nX (ex) generates Bitbeam X or + parts as you want.\n\nx: number\n  Size of \"base\" arm. Skipped holes are set automatically by length.\ny: number\n  size of arm, which is cross to \"base\" arm in the middle of it's length. As in base arm, holes are skipped automatically by length.\n\nH (aitch)\n`````````\n.. figure:: img/aitch.png\n  :alt: H example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_h(x, y, shift=1, h=1);\n  cylinder_h(x, y, shift=1, h=1);\n\nH (aitch) generates generates H look like objects.\n\nx: number\n  Width of H part. Side holes opposite to plumb arms are skipped automatically.\ny: number\n  Depth of H part. These arms are shifted from ends.\nshift: number\n  Default value is 1, if is set to 0, the `frame`_ part is generated.\n\nY (wye)\n```````\n.. figure:: img/wye.png\n  :alt: H example\n  :align: center\n  :figwidth: 100%\n\n.. code:: c++\n\n  cube_y(x, y, z, h=1);\n  cylinder_y(x, y, z, h=1);\n\nY (wye) generates corner type part, which looks from some angles like Y. When\nyou set difference h, the external units are still right.\n\nx: number\n  Size of arm in X axis.\ny: number\n  Size of arm in Y axis.\nz: number\n  Size of arm in Z axis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fondratu%2Fbitbeam-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fondratu%2Fbitbeam-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fondratu%2Fbitbeam-lib/lists"}