Jump to content

Recommended Posts

Posted (edited)

I was trying to subtract two simple shapes from each other in Affinity Designer (version 1.9.3 on macOS). The result is not what I expected. See the screenshots below. I also attached the original file. Why does subtract not work as expected in this example? When increasing the size of the document and shapes, subtract actually gives the expected result.

PS I already found a workaround in another topic: option-click subtract, then convert the compound shape to curves.

 

 

 

 

subtract.afdesign

before.png

after.png

expected.png

subtract.gif

Edited by 0d657b3c
Smaller screenshots and extra info
Posted

If you rotate the circle around its centre a bit then subtract works

As to why, dunno

Subtract.png

Microsoft Windows 11 Home, Intel i7-1360P 2.20 GHz, 32 GB RAM, 1TB SSD, Intel Iris Xe
Affinity Photo - 24/05/20, Affinity Publisher - 06/12/20, KTM Superduke - 27/09/10

Posted
10 hours ago, 0d657b3c said:

Why does subtract not work as expected in this example?

It seems that it is because somehow the boolean calculations are not completely resolution independent so at small sizes they are not reliable. That's why if you increase the dimensions enough it works like it should.

This has been an issue since the first releases & still there is no complete fix for it.

All 3 1.10.8, & all 3 V2.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Posted
11 hours ago, 0d657b3c said:

I was trying to subtract two simple shapes from each other in Affinity Designer (version 1.9.3 on macOS). The result is not what I expected. See the screenshots below.

In this particular case there’s no need to perform a subtraction at all. The Donut Tool isn't limited to creating whole donuts: you can specify start and end angles (e.g. 135° and 45°) if you want a donut with a bite taken out of it.

Alfred spacer.png
Affinity Designer/Photo/Publisher 2 for Windows • Windows 10 Home/Pro
Affinity Designer/Photo/Publisher 2 for iPad • iPadOS 17.5.1 (iPad 7th gen)

Posted (edited)
30 minutes ago, Alfred said:

In this particular case there’s no need to perform a subtraction at all. The Donut Tool isn't limited to creating whole donuts: you can specify start and end angles (e.g. 135° and 45°) if you want a donut with a bite taken out of it.

Thank you for your suggestion. Unfortunately the donut tool only allows defining a hole radius as a percentage of the donut. I wanted to have a border of exactly 2 pixels wide.

Edited by 0d657b3c
Posted

I think the actual problem is that you are subtracting a curve from a curves layer. If you go to Layers > Geometry > Separate Curves and then subtract the triangle from the larger disk and then subtract the smaller disk from the larger (with the triangle cut out) disk you'll see what you are striving for.

Mac Pro (Late 2013) Mac OS 12.7.6 
Affinity Designer 2.6.0 | Affinity Photo 2.6.0 | Affinity Publisher 2.6.0 | Beta versions as they appear.

I have never mastered color management, period, so I cannot help with that.

Posted (edited)
12 minutes ago, Old Bruce said:

I think the actual problem is that you are subtracting a curve from a curves layer. If you go to Layers > Geometry > Separate Curves and then subtract the triangle from the larger disk and then subtract the smaller disk from the larger (with the triangle cut out) disk you'll see what you are striving for.

That sounds like a lot of work for something that should be a trivial operation. Seeing that it actually gives the correct result when rotating the circle, or when increasing the size I would rather think I found a bug. I would expect these simple path operations to work just like they do in other tools like Illustrator. Besides, if the tool couldn't handle compound curves I would expect the tool not to work at all, instead of giving a strange and unexpected result, right?

Edited by 0d657b3c
Posted
4 minutes ago, Old Bruce said:

I think the actual problem is that you are subtracting a curve from a curves layer. If you go to Layers > Geometry > Separate Curves and then subtract the triangle from the larger disk and then subtract the smaller disk from the larger (with the triangle cut out) disk you'll see what you are striving for.

That works but the real problem is the booleans do not work reliably with objects that have small pixel dimensions (like the 7x14 px triangular shape & the 14x14 circular one).

To demonstrate this, you can go to File > Document Setup > Dimensions, set it so objects will rescale, & increase the document size slightly, first to 15x15 px & then to 16x16 px. At 15 px it glitches; at 16 it does not.

All 3 1.10.8, & all 3 V2.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Posted
3 minutes ago, 0d657b3c said:

Seeing that it actually gives the correct result when rotating the circle, or when increasing the size I would rather think I found a bug.

Like I mentioned earlier, the booleans have been buggy since the very first release. They have improved them somewhat since then but they still fail under certain conditions, for example with very small objects.

All 3 1.10.8, & all 3 V2.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Posted
43 minutes ago, 0d657b3c said:

Unfortunately the donut tool only allows defining a hole radius as a percentage of the donut. I wanted to have a border of exactly 2 pixels wide.

In that case, you’ve already identified best way forward:

12 hours ago, 0d657b3c said:

I already found a workaround in another topic: option-click subtract, then convert the compound shape to curves.

 

Alfred spacer.png
Affinity Designer/Photo/Publisher 2 for Windows • Windows 10 Home/Pro
Affinity Designer/Photo/Publisher 2 for iPad • iPadOS 17.5.1 (iPad 7th gen)

Posted

Separate Curves
Change inner disc to 10 x 10
Select all layers
Click Subtract

9.44444.png

Microsoft Windows 11 Home, Intel i7-1360P 2.20 GHz, 32 GB RAM, 1TB SSD, Intel Iris Xe
Affinity Photo - 24/05/20, Affinity Publisher - 06/12/20, KTM Superduke - 27/09/10

Posted
9 minutes ago, PixelPest said:

I find it Mr. Boolean don´t like touching edges:

I am going to have to remember this tip.

Mac Pro (Late 2013) Mac OS 12.7.6 
Affinity Designer 2.6.0 | Affinity Photo 2.6.0 | Affinity Publisher 2.6.0 | Beta versions as they appear.

I have never mastered color management, period, so I cannot help with that.

Posted
2 hours ago, PixelPest said:

It works here even in this small size - but what I find is Mr. Boolean don´t like touching edges:

It isn't just touching edges. Consider this subtract v2.afdesign file. All I changed from the OP's version was the height of the triangular curve to 8 px, leaving the width at the same 14 px width of the circular curves layer. Boolean subtraction works fine with it.

Also, subtraction works as expected if the triangular curve is moved downward slightly, cutting the circular curves layer into two parts.

All 3 1.10.8, & all 3 V2.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.