我正在尝试使用Clipper(一个开源多边形裁剪库)来剪切带有闭合多边形的开放多边形。
我正在使用pyclipper的python包装器。我的代码如下:
import pyclipper
subj = [[-10, 5], [20, 5]]
clip = [[0, 0], [0, 10], [10, 10], [10, 0]]
pc = pyclipper.Pyclipper()
pc.AddPath(clip, pyclipper.PT_CLIP, True)
pc.AddPath(subj, pyclipper.PT_SUBJECT, False)
solution = pc.Execute(pyclipper.CT_INTERSECTION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD)
print(solution)
它似乎一直运行到Execute函数,然后它就退出而没有错误消息。我做错了什么?
答案 0 :(得分:0)
尝试更改元组列表列表,最重要的是,如果没有类型错误,请使用Pyclipper::Execute2
:
import pyclipper
subj = [(-10, 5), (20, 5)]
clip = [(0, 0), (0, 10), (10, 10), (10, 0)]
pc = pyclipper.Pyclipper()
pc.AddPath(clip, pyclipper.PT_CLIP, True)
pc.AddPath(subj, pyclipper.PT_SUBJECT, False)
solution = pc.Execute2(pyclipper.CT_INTERSECTION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO)
print([i.Contour for i in solution.Childs])
[[[10,5],[0,5]]]
在你的情况下,最后一行是等同于:
solution = pc.Execute2(pyclipper.CT_INTERSECTION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD)