Skip to main content

Topax - A Full Stack Implicit Geometry CAD Package for Python

Project description

Topax - A Full Stack Implicit Geometry CAD Package for Python

License

Topax is a CAD package specifically designed for working with implicit geometry and programmatic CAD generation. It pulls a lot of ideas from previous work such as libfive.

What makes this tool special is that it comes with a live viewer/editor that updates in real-time as python code is changed. Objects are rendered using direct ray-marching and JIT compiled OpenGL shaders.

This tool is under active development! Please consider contributing if you find this interesting and would like to help out.

Quick start

For now, this package needs to be installed by cloning the repo. You can clone the repo with git clone https://github.com/andycate/topax.git and then install the package by running pip install -e . inside the cloned directory.

You can check out the examples in the examples/ folder by running topax examples/. Once the shell has opened up, type target("<example_file_name>.py") with one of the example file names and the example should appear. Now, try changing some of the parameters in that file. When you save the file, you'll notice that the model is instantly updated.

The vision + Resources

Not really sure where I'm going with this project, but I found it interesting to build! I think it would be cool to do a few different things:

  1. Optimize the shaders that are generated to increase rendering performance
  2. Add a way to make assemblies of single parts
  3. Add lots more standard SDFs to the library
  4. Add a way to specify variable parameters, and have those parameters adjustable as sliders or buttons on the CAD viewer window
  5. Add some kind of interactive manipulation of objects in the CAD viewer window
  6. Maybe add a way to run simulations and then use generated fields to manipulate geometry?
  7. Some kind of geometry optimization???

Inigo Quilez has written lots of great articles about implicit modeling on his website. So has Matt Keeter, who also developed libfive. Also, there is a commercial CAD package called nTop, which I believe is built on top of libfive.

Disclaimer

I know that there are certain tools that already exist which do these things, and I'm not trying to replace them, I'm mostly doing this as a learning experience! And maybe some people will find it useful along the way.

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

topax-0.0.2.tar.gz (43.4 kB view details)

Uploaded Source

Built Distribution

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

topax-0.0.2-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file topax-0.0.2.tar.gz.

File metadata

  • Download URL: topax-0.0.2.tar.gz
  • Upload date:
  • Size: 43.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for topax-0.0.2.tar.gz
Algorithm Hash digest
SHA256 ef0c13c3f851f2ccdc773a414b44a12dbaf76bffad457e8f3f85cc059d8fc637
MD5 aa8ebec4a2525ff47f7ebb2d64925cf2
BLAKE2b-256 48d515c7a48d0305051cb592b231739a314f7991febc7d9a00892b321c65e4d9

See more details on using hashes here.

File details

Details for the file topax-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: topax-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for topax-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 13594411cb7b3c6d01ef88fbd7754b2f10fac18110af13c234b41d4aa1a4c724
MD5 b966d83a31f7f5f9a8a714c2f3323272
BLAKE2b-256 0b62475216ec3528cfa42b9948bd83e85d1f91e83938126026df755e30e91c9e

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