pyclipper:Crash on little case(“终止调用抛出异常”)

2024-09-26 04:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用ClipperPythonbindings来使用多边形剪裁直线。但进程在绑定或clipper库中崩溃:

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()期间终止,并将以下消息写入标准错误:

^{pr2}$

我使用的是osx10.8.5上的python3.4.3和PyPI上的pyclipper(0.9.3b0)的最新版本,它使用clipper6.2.1。在

我是不是做错了什么,或者这是Clipper或pyclipper中的bug?在


Tags: theaddptexecute进程asline多边形
1条回答
网友
1楼 · 发布于 2024-09-26 04:45:45

我在Ubuntu15.04上用Python3.4.3尝试过您的示例,得到以下错误:

terminate called after throwing an instance of 'ClipperLib::clipperException'
  what():  Error: PolyTree struct is need for open path clipping.

正如错误消息所说,当剪切打开的路径时,应该使用PolyTreestruct。在

Clipper库在Clipper类中有两个名为Execute的函数。一个接受Paths作为解决方案参数类型,另一个接受{}作为解决方案参数类型。正如错误消息所说,在您的情况下,您应该使用第二个。第二个函数在Pyclipper::Execute2函数中调用。因此,将第12行替换为以下行,以便使用正确的类型:

^{pr2}$

如果这解决了您的问题,请报告。在

相关问题 更多 >