pyclipper:在普通情况下崩溃 ("terminate called throwing an exception")
pyclipper: Crash on trivial case ("terminate called throwing an exception")
我正在尝试使用 Clipper Python bindings 通过多边形裁剪一条线。但是进程在绑定或裁剪器库中崩溃:
import pyclipper
pc = pyclipper.Pyclipper()
# Add a single line as the subject.
pc.AddPath([(-1, -1), (2, 1)], pyclipper.PT_SUBJECT, False)
# Add a square as the clipping region.
pc.AddPath([(0, 0), (1, 0), (1, 1), (0, 1)], pyclipper.PT_CLIP, True)
# Clip the line using the rectangle.
solution = pc.Execute(pyclipper.CT_INTERSECTION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO)
print(solution)
当我 运行 上述代码时,进程在调用 pc.Execute()
期间终止,并向标准错误写入以下消息:
libc++abi.dylib: terminate called throwing an exception
我在 OS X 10.8.5 上使用 Python 3.4.3,在 PyPI 上使用最新版本的 pyclipper (0.9.3b0),它使用 Clipper 6.2.1。
我是不是做错了什么,或者这是 Clipper 或 pyclipper 中的错误?
我在 Ubuntu 15.04 上使用 Python 3.4.3 尝试了您的示例,但出现以下错误:
terminate called after throwing an instance of 'ClipperLib::clipperException'
what(): Error: PolyTree struct is need for open path clipping.
正如错误消息所说,PolyTree
struct should be used when clipping paths that are open.
Clipper 库在 Clipper class 中有 2 个名为 Execute
的函数。一个接受 Paths
作为解参数类型,另一个接受 PolyTree
作为解参数类型。正如错误消息所说,在您的情况下,您应该使用第二个。第二个函数在Pyclipper::Execute2
函数中被调用。因此,将第 12 行替换为以下行,以便使用正确的类型:
solution = pc.Execute2(pyclipper.CT_INTERSECTION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO)
如果这能解决您的问题,请报告。
我正在尝试使用 Clipper Python bindings 通过多边形裁剪一条线。但是进程在绑定或裁剪器库中崩溃:
import pyclipper
pc = pyclipper.Pyclipper()
# Add a single line as the subject.
pc.AddPath([(-1, -1), (2, 1)], pyclipper.PT_SUBJECT, False)
# Add a square as the clipping region.
pc.AddPath([(0, 0), (1, 0), (1, 1), (0, 1)], pyclipper.PT_CLIP, True)
# Clip the line using the rectangle.
solution = pc.Execute(pyclipper.CT_INTERSECTION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO)
print(solution)
当我 运行 上述代码时,进程在调用 pc.Execute()
期间终止,并向标准错误写入以下消息:
libc++abi.dylib: terminate called throwing an exception
我在 OS X 10.8.5 上使用 Python 3.4.3,在 PyPI 上使用最新版本的 pyclipper (0.9.3b0),它使用 Clipper 6.2.1。
我是不是做错了什么,或者这是 Clipper 或 pyclipper 中的错误?
我在 Ubuntu 15.04 上使用 Python 3.4.3 尝试了您的示例,但出现以下错误:
terminate called after throwing an instance of 'ClipperLib::clipperException'
what(): Error: PolyTree struct is need for open path clipping.
正如错误消息所说,PolyTree
struct should be used when clipping paths that are open.
Clipper 库在 Clipper class 中有 2 个名为 Execute
的函数。一个接受 Paths
作为解参数类型,另一个接受 PolyTree
作为解参数类型。正如错误消息所说,在您的情况下,您应该使用第二个。第二个函数在Pyclipper::Execute2
函数中被调用。因此,将第 12 行替换为以下行,以便使用正确的类型:
solution = pc.Execute2(pyclipper.CT_INTERSECTION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO)
如果这能解决您的问题,请报告。