Python library to generate OpenSCAD source code
Project description
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.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openpyscad-0.5.0.tar.gz.
File metadata
- Download URL: openpyscad-0.5.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.5.10 Linux/4.15.0-1077-gcp
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e1ea8eb10fe9e9c31c8bc5941c1ef6294e3400e4ae4b23133ce2275124d1c9b
|
|
| MD5 |
dfbe8c500d7b74f71947b3c264e053e0
|
|
| BLAKE2b-256 |
964c536b7bacb6df08943d2da6fe4fcb6ccb1e7c7a196eb15d3c40b8cd4624c3
|
File details
Details for the file openpyscad-0.5.0-py3-none-any.whl.
File metadata
- Download URL: openpyscad-0.5.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.5.10 Linux/4.15.0-1077-gcp
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ce23ffdb1a3d41ca0589ca813ba8d96063f4faaf0bfb0d902f5cd5df54f899c
|
|
| MD5 |
496edd206c099a5281ce0c4fb2a91cea
|
|
| BLAKE2b-256 |
e788c845e63950670a56b00ef6873aa9aae327a0d73f59714d682a2c3ea81d8a
|