Python Bindings for Clipper using Boost.Python
clipper-py is a Boost.Python wrapper exposing the C++ translation of the Angus Johnson's Clipper library (6.4 Rev 495).
clipper-py is tested and built against Python 3.8 on Arch Linux.
This project is very much a work-in-progress. Please contribute.
Clipper - an open source freeware library for clipping and offsetting lines and polygons.
The Clipper library performs line & polygon clipping - intersection, union, difference & exclusive-or, and line & polygon offsetting. The library is based on Vatti's clipping algorithm.
Angus Johnson's Clipper library
- Boost.Python Headers (
libboost-python-dev) compiled against version
apt-get install libboost-python-dev
pacman -S libboost-python-dev
brew install boost-python3
pip install clipper-py
pip3 install .
Basic clipping example (based on Angus Johnson's Clipper library):
from clipper_py import Path, Paths, Clipper, IntPoint subj = Paths() subj.push(Path().push(IntPoint(180, 200)).push(IntPoint(260, 200)).push(IntPoint(260, 150)).push(IntPoint(180, 150))) subj.push(Path().push(IntPoint(215, 160)).push(IntPoint(230, 190)).push(IntPoint(200, 190))) print(subj, subj, subj) clip = Paths() clip.push(Path().push(IntPoint(190, 210)).push(IntPoint(240, 210)).push(IntPoint(240, 130)).push(IntPoint(190, 130))) print(clip, clip) clipper = Clipper(0) clipper.add_paths(subj, 'subject', True) clipper.add_paths(clip, 'clip', True) solution = clipper.execute('intersection', 'non-zero', 'non-zero') # solution: [[[240, 200], [190, 200], [190, 150], [240, 150]], [[200, 190], [230, 190], [215, 160]]]
- The Clipper library is written by Angus Johnson,
- This readme was modified from the original written by various authors of the pyclipper library
- The PyPI
setup.pyfile was modified from a CMake-based build example of the PyBind project
- clipper-py is available under a MIT license.
- Pyclipper is available under a MIT license.
- The core Clipper library is available under a Boost Software License. Freeware for both open source and commercial applications.
- cmake_example by Pybind is available under a BSD-style license
- Fix complex (
PolyTree-based) clipping to actually work kinda
- Dynamically determine version of Python for Boost.Python headers
- Minor cleanup
- Get MacOS builds working
- Make things a little bit more portable on Linux
- Publish to PyPI
Initial project setup.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.