Skip to main content

BUild123d Mutables Objects

Project description

Bumo

BUild123d Mutables Objects

An experimental package used to manage Build123d objects by applying mutations on them.

It can be used:

  • just out of curiosity, because it's just a new way to build things;
  • as a debug tool, using colors and debug mode;
  • as a higher-level interface for Build123d;
  • as a more object-oriented approach to build CAD parts.

Installation

poetry install bumo

or using pip:

pip install bumo

Usage

Bumo is not a cad library on its own and does not aim to replace Build123d, you should take a look at the Build123d docs before using it.

Note: In the following examples we will use ocp vscode, but any other viewer should work.

Instantiating the builder

First things first, let's instanciate a Bumo builder and pass a Build123d part into it. Note that we must call the object (obj()) when passing it to the show function.

import build123d as _
from ocp_vscode import show_object
from bumo import Builder

obj = Builder(_.Box(12, 12, 2))

show_object(obj())

Adding mutations

When applying an operation, instead of returning a copy of the modified object, the builder mutates the object:

obj = Builder(_.Box(12, 12, 2))
obj.add(_.Box(8, 8, 4))
obj.sub(_.Cylinder(3, 4))

Adding colors

On each mutation you can pass a color, because coloring object faces is useful and funny:

obj = Builder(_.Box(12, 12, 2), "orange")
obj.add(_.Box(8, 8, 4), "green")
obj.sub(_.Cylinder(3, 4), "violet")

Setting debug mode

You could also turn one or several mutations in debug mode, so all the other faces will be translucent:

obj = Builder(_.Box(12, 12, 2), "orange")
obj.add(_.Box(8, 8, 4), "green")
obj.sub(_.Cylinder(3, 4), "violet", debug=True)

Moving objects

You can move objects with move(), all colors will be preserved. Note that you can still use the Build123d * operator before passing the object to the builder.

obj = Builder(_.Box(12, 12, 2), "orange")
obj.add(_.Box(8, 8, 4), "green")
obj.move(_.Location([-5, 2, 0]))
obj.sub(_.Rotation(25, 25, 0) * _.Cylinder(2.5, 10), "violet")

Reusing mutations

Instead of returning a copy of the object, mutations return a Mutation object that can be used to retrieve the altered faces and edges. This is useful with fillets and chamfers:

obj = Builder(_.Box(12, 12, 2), "orange")
top_box = obj.add(_.Box(8, 8, 4), "green")
obj.fillet(top_box.edges_added(), 0.4, color="yellow")
hole = obj.sub(_.Cylinder(3, 4), "violet")
obj.chamfer(hole.edges_added()[0], 0.3, color="blue")

You may notice that the "top box" is not green anymore: this is because the yellow part produced by the fillet shares no edge with the top box, so the part is considered to be new and not just altered. In the other hand, the hole kept its pink color, because the bottom circular edge is still connected to the box.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bumo-0.0.1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bumo-0.0.1-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file bumo-0.0.1.tar.gz.

File metadata

  • Download URL: bumo-0.0.1.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.10.12 Linux/6.8.0-51-generic

File hashes

Hashes for bumo-0.0.1.tar.gz
Algorithm Hash digest
SHA256 9a70e3af5da9bf4c85f48ef3d3de95ca9d9afd998b9ea528a415dd99974e3135
MD5 9815f307351738596f71f49cd508ee96
BLAKE2b-256 374d0f54f13de833552ad2d8dd0af54e2cc6c747762e86ab27ac032c99e68ab8

See more details on using hashes here.

File details

Details for the file bumo-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: bumo-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.10.12 Linux/6.8.0-51-generic

File hashes

Hashes for bumo-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0f24979a460c84f062362f097e0dc5eb28610d864d4eb42e461fe521f36edf6
MD5 e526a820ad0a43d756efe07a9ad92fe7
BLAKE2b-256 14c9ffd76e92fc315f91eedcdc456e4a98d5e21d60fb84381ef20d6288c62656

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page