OpenPySCAD
Python library to generate OpenSCAD source code. This library provides intuitive interface when you handle 3D data. OpenPySCAD supports python3(3.5+).
Install
pip install openpyscad
How to use
- Write python code as follows:
import openpyscad as ops
c1 = ops.Cube([10, 20, 10])
c2 = ops.Cube([20, 10, 10])
(c1 + c2).write("sample.scad")
- Generated code will be written in the "sample.scad".
- For automatic reload and preview, you need to turn on "Design > Automatic Reload and Preview" in OpenSCAD
union(){
cube([10, 20, 10]);
cube([20, 10, 10]);
};
Generated code examples
3D Shapes
Python:
Sphere(r=10, _fn=100)
Cube([10, 10, 10])
Cylinder(h=10, r=10)
p = Polyhedron(
points=[
[10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10]
],
faces=[
[0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3]
]
)
Generated OpenSCAD code:
sphere(r=10, $fn=100);
cube(size=[10, 10, 10]);
cylinder(h=10, r=10);
polyhedron(points=[[10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10]], faces=[[0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3]]);
Boolean Operations
Python:
# Union
Cube([20, 10, 10]) + Cube([10, 20, 10])
# You can also write like this
u = Union()
u.append(Cube[20, 10, 10])
u.append(Cube[10, 20, 10])
# Difference
Cube([20, 10, 10]) - Cube([10, 20, 10])
# You can also write like this
i = Difference()
i.append(Cube[20, 10, 10])
i.append(Cube[10, 20, 10])
# Intersection
Cube([20, 10, 10]) & Cube([10, 20, 10])
# You can also write like this
i = Intersection()
i.append(Cube[20, 10, 10])
i.append(Cube[10, 20, 10])
Generated OpenSCAD code:
// Union
union(){
cube([20, 10, 10])
cube([10, 20, 10])
};
// Difference
difference(){
cube([20, 10, 10]);
cube([10, 20, 10]);
};
// Intersection
intersection(){
cube([20, 10, 10]);
cube([10, 20, 10]);
};
Transformations
Python:
# Translate
Cube([20, 10, 10]).translate([10, 10, 10])
# Rotate
Cube([20, 10, 10]).rotate([0, 0, 45])
# Scale
Cube([20, 10, 10]).scale([2, 1, 1])
# Resize
Cube([20, 10, 10]).resize([2, 1, 1])
# Mirror
Cube([20, 10, 10]).mirror([1, 1, 1])
# Color
Cube([20, 10, 10]).color("Red")
# Offset
Circle(10).offset(10)
Generated OpenSCAD code:
// Translate
translate(v=[10, 10, 10]){
cube([20, 10, 10]);
};
// Rotate
rotate(v=[0, 0, 45]){
cube([20, 10, 10]);
};
// Scale
scale(v=[2, 1, 1]){
cube([20, 10, 10]);
};
// Resize
resize(newsize=[2, 1, 1]){
cube(size=[20, 10, 10]);
};
// Mirror
mirror([1, 1, 1]){
cube(size=[20, 10, 10]);
};
// Color
color("Red"){
cube(size=[20, 10, 10]);
};
// Offset
offset(r=10){
circle(r=10);
};
Modifiers
OpenPySCAD provides modifiers interfaces ("*", "!", "#" and "%").
Python:
c1 = Cube(10)
c1.disable() # add "*" character
c1.show_only() # add "!" character
c1.is_debug() # add "#" character
c1.is_transparent() # add "&" character
Interested in contribution?
Please read CONTRIBUTING.md.
Metadata
Release files for openpyscad 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| openpyscad-0.5.0.tar.gz | 9.1 kB | Without provenance | Details for openpyscad-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openpyscad-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for openpyscad-0.5.0-py3-none-any.whl |
Total release size: 18.8 kB
Release files / openpyscad-0.5.0.tar.gz
| Download URL | openpyscad-0.5.0.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2e1ea8eb10fe9e9c31c8bc5941c1ef6294e3400e4ae4b23133ce2275124d1c9b
|
|
BLAKE2b-256 checksum How to use checksums |
964c536b7bacb6df08943d2da6fe4fcb6ccb1e7c7a196eb15d3c40b8cd4624c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.6 CPython/3.5.10 Linux/4.15.0-1077-gcp
|
Release files / openpyscad-0.5.0-py3-none-any.whl
| Download URL | openpyscad-0.5.0-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ce23ffdb1a3d41ca0589ca813ba8d96063f4faaf0bfb0d902f5cd5df54f899c
|
|
BLAKE2b-256 checksum How to use checksums |
e788c845e63950670a56b00ef6873aa9aae327a0d73f59714d682a2c3ea81d8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.6 CPython/3.5.10 Linux/4.15.0-1077-gcp
|
Security for openpyscad 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.