2017-06-21 192 views
1

我想使用Clipper,一个开放源代码多边形剪裁库来剪裁一个封闭多边形的打开多边形。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) 

它似乎运行直到执行功能,然后它只是退出没有错误信息。我究竟做错了什么?

回答

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) 
+0

不,仍然无法正常工作... :-( –

+0

@AdamCavender我做了一个编辑 –

+0

AddPaths是一次添加多条路径,我只添加一条路径......我无论如何都测试了它,并得到一个错误。 –