An implicit surface based functional CAD system
Project description
Update - 30th June 2024
- some optimizations to speed up
Update - 22nd June 2024
-
Triangle Lookup Table implemented - no defective surfaces anymore
-
nearly all functions compiled with Numba - faster operation
Update - 27th November 2022
A new, much faster version is available. It uses more numba jit compiled python code and more parallelization.
The first run may be slower due to compilation time.
xyzCad - functional cad software
xyzCad is an ease to use marching cubes based cad software generating 3d printable stl files from a function f(x, y, z) = {True : False}.
x, y and z are the coordinates in 3d space in mm. The function f(x, y, z) returns True or False depending on the arguments x, y and z. True means, there should be solid. False means, there is nothing.
Theory of operation
It looks like the software iterates over alle points in the 3d raster space. But this would be very slow. So the algorithm is a bit more optimized.
-
At first it searches for two points, one inside the solid (=True), one outside (=False).
-
Now the surface is searched on a line between the two points.
-
Rasterization is done over the surface only.
That means only one solid can be created. If two solids without contact to each other are created, only the one found at first will be rendered.
Usage example
Let us create a sphere:
#!/usr/bin/env python3
from numba import njit
from xyzcad import render
@njit
def f(x,y,z):
r = 10
return r**2 > x**2 + y**2 + z**2
render.renderAndSave(f, 'sphere.stl', 0.3)
numba just in time compiler makes it a bit faster. render is the xyzcad renderer/compiler. We want a resolution of 0.3
mm. The output file should be sphere.stl
. Our sphere will have a radius of r = 10
mm.
Want to Support the project?
Buy your 3d printer filament or parts using my affiliate link:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file xyzcad-0.4.11.tar.gz
.
File metadata
- Download URL: xyzcad-0.4.11.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e015df98cb4d3b35f548b50f8a6c771490c0dcad90bd1e89436dfde2b451c6e |
|
MD5 | fd1476f35f0d6ef2ecf4d4b5c52fe04a |
|
BLAKE2b-256 | 4c38a4e9243f7cc943af11b181675786ce02a76d86e3931fad33bd2628018868 |
File details
Details for the file xyzcad-0.4.11-py3-none-any.whl
.
File metadata
- Download URL: xyzcad-0.4.11-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be2336b7cf4482d722aa473b45e42fd770e16033c23c8480e3620ea77be7a0f4 |
|
MD5 | fef55745988cdcaabe8883ae405afb05 |
|
BLAKE2b-256 | 40e5369cd4bb74bd68ee970c7a96b880a80950615ee92a090e3f35f725b5e82d |