Skip to content

PaulDL-RS/spyrrow

Repository files navigation

Spyrrow

spyrrow is a Python wrapper on the Rust project sparrow. It enables to solve 2D Strip packing problems.

The documentation is hosted here.

Installation

Spyrrow is hosted on PyPI.

You can install with the package manager of your choice, using the PyPI package index.

For example, with pip, the default Python package:

pip install spyrrow

Examples

import spyrrow

rectangle1 = spyrrow.Item(
    "rectangle", [(0, 0), (1, 0), (1, 1), (0, 1), (0, 0)], demand=4, allowed_orientations=[0]
)
triangle1 = spyrrow.Item(
    "triangle",
    [(0, 0), (1, 0), (1, 1), (0, 0)],
    demand=6,
    allowed_orientations=[0, 90, 180, -90],
)

instance = spyrrow.StripPackingInstance(
    "test", strip_height=2.001, items=[rectangle1, triangle1]
)
config = spyrrow.StripPackingConfig(early_termination=False,total_computation_time=60,num_wokers=3,seed=0)
sol = instance.solve(config)
print(sol.width) # 4.0 +/- 5%
print(sol.density)
print("\n")
for pi in sol.placed_items:
    print(pi.id)
    print(pi.rotation)
    print(pi.translation)
    print("\n")

Contributing

Spyrrow is open to contributions. The first target should be to reach Python open sources packages standards and practices. Second, a easier integration with the package shapely is envsionned.

Please use GitHub issues to request features. They will be considered relative to what is already implemented in the parent library sparrow. If necessary, they can be forwarded to it.