Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Issue with polygon merging #5

Open
edumur opened this issue Dec 13, 2023 · 2 comments
Open

Issue with polygon merging #5

edumur opened this issue Dec 13, 2023 · 2 comments

Comments

@edumur
Copy link

edumur commented Dec 13, 2023

Hi,

I am having issue with polygons merging.

If a create a bunch of polygons as:

# Make a bunch of rectangles
tot = []
tot.append(np.array([[  -5., -100.],
                     [   5., -100.],
                     [   5.,  100.],
                     [  -5.,  100.]]))

tot.append(np.array([[  45., -100.],
                     [  55., -100.],
                     [  55.,  100.],
                     [  45.,  100.]]))

tot.append(np.array([[-100.,   -5.],
                     [ 100.,   -5.],
                     [ 100.,    5.],
                     [-100.,    5.]]))

tot.append(np.array([[-100.,   45.],
                     [ 100.,   45.],
                     [ 100.,   55.],
                     [-100.,   55.]]))

I obtain this:
image

If I "merge" the polygons to have only one left as:

# Execute the  merge
pc = pyclipr.Clipper()
pc.scaleFactor = int(1000)

pc.addPaths(tot, pyclipr.Subject)

tot = pc.execute(pyclipr.Union,
                pyclipr.FillRule.EvenOdd)

I get this:
image

You can remark the holes at the intersections of the polygons.
I was expected something like this:
image

Which is something I get by using Klayout and click on: edit -> selection -> merge
image

If you can help me to get the same result as with Klayout that would be really helpful.

@josephduchesne
Copy link

You probably want FillRule.NonZero

See the docs here:
https://www.angusj.com/clipper2/Docs/Units/Clipper/Types/FillRule.htm

@edumur
Copy link
Author

edumur commented Oct 14, 2024

Unfortunately no.
When I use FillRule.NonZero, I got:
image

Is is, in fact, a known issue, see this discussion: AngusJohnson/Clipper2#820.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants