2017-06-21 5 views
1

Ich versuche Clipper zu verwenden, eine Open-Source-Polygon-Clipping-Bibliothek, um ein offenes Polygon mit einem geschlossenen Polygon zu schneiden.Clipper: Absturz beim Clipping geöffneter Polygone

Ich benutze die Python-Wrapper von Pyclipper. Mein Code ist wie folgt:

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) 

Es scheint, bis die Funktion ausführen zu laufen, dann ist es beendet gerade ohne Fehlermeldung. Was mache ich falsch?

Antwort

0

versuchen die Liste der Liste für Tupeln zu ändern, und das wichtigste ist, keinen Typ Fehler haben, verwenden Sie 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]]]

die letzte Zeile entspricht, in Ihrem Fall zu:

solution = pc.Execute2(pyclipper.CT_INTERSECTION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD) 
+0

Nein, funktioniert immer noch nicht ... :-( –

+0

@AdamCavender Ich habe eine Bearbeitung vorgenommen –

+0

AddPaths ist es, mehrere Pfade gleichzeitig hinzuzufügen, ich füge nur einen Pfad hinzu ... Ich habe es trotzdem getestet und habe einen Fehler bekommen. –