2

Assume I have a complex shape, like this cog:

a black cog

I want to create a curve around the cog, in a constant distance.

The easiest way to do this I came up with is this:

  • Duplicate the shape, setting the duplicate to have no fill and a stroke that is twice as wide as the distance I want. (I set the stroke red for demonstration purposes.)

    red contour around the cog

  • Run the Expand Stroke command.

    red contour around the cog, with nodes defining the inside and outside

  • Remove the fill, set a stroke.

    double red contour around and inside the cog

This leaves me almost with what I want: The red contour outside the cog is perfect. However, there is also the inner contour, and it is inside the same curves object.

Is there a way to easily select and remove all nodes belonging to the inner part of this curve? (In other words, is there a way to select all nodes that are connected to one node?) Alternatively, is there a completely different way to construct only the outer contour?

3
  • Well at least the shape of your cog trapezoidal, not straight like it usually is when naively made. Congratulation you have reached the tech level of 87 BC. Anyway dont use affinity designer but my guess would be, do Layer menu, select Release Compound should separate the items. Also not like you cant marquee select and delete in about 3 to 5 passes
    – joojaa
    Jul 10, 2023 at 20:43
  • Is this art or do you have some technical usage for the drawn cogwheel and the wanted curve? Your drawn teeth are quite far from the common tooth profile.
    – Leadco
    Jul 10, 2023 at 22:19
  • 1
    The use is artistic, and the exact cogwheel shape was just an example. Of course, lassoing the inner nodes was faster than asking here; the goal of my question was not to get it done, but to learn how it's done properly. The Release Compound command is grayed out in this case, most likely because the shape is a curve, not a compound.
    – fefrei
    Jul 11, 2023 at 8:54

3 Answers 3

3

Alternate way:

  1. Duplicate the shape
  2. Use the contour tool to increase the radius of the new shape
  3. Set a stroke, no fill

enter image description here

2
  • Thank you! This feels like the intended way to do this. (I had never used the contour tool before!)
    – fefrei
    Oct 28, 2023 at 16:30
  • Much better. Thanks
    – Vikas
    Dec 15, 2023 at 18:38
1

To delete the inner curve apply Layer > Geometry > Remove Inner Curve.

An example:

enter image description here

This is a closed curve before and after expanding the stroke.The expanded stroke is actually a merged path. The same could be got by subtracting the hole shape from the outline path. Illustrator users would call it compound path, but in Affinity that term is reserved for different thing. Inkscape users would call it combined path.

In the left in the next image the yellow fill is removed and the path has got a black stroke:

enter image description here

In the right Layer > Geometry > Remove inner path is applied.

A practical hint: Get Inkscape. It knows numerous very useful tricks which still wait a counterpart in Affinity D. For ex. there are several ways to make an offset path. But there are also many things which work well in Affinity D. but do not exist in Inkscape. The programs understand each other today pretty well. Cut and paste works to both directions. Only remember at first convert functions to paths. One harmful thing exists: Scaling is needed due the different internal length units.

1
  • Thank you! This did not work (Remove Inner Curves was grayed out), but the Geometry submenu did contain a Separate Curves command, and that did what it says on the tin.
    – fefrei
    Jul 11, 2023 at 8:50
1

Alternatively, is there a completely different way to construct only the outer contour?

You can use Symbols and Power duplicate (A GIF is attached for better understanding). Basic steps are:

  1. Create a curve using pen tool, roughly same as you desire and center align it with your cog/gear using guides (make sure snapping is enabled)
  2. Create a symbol from the same
  3. Duplicate the symbol layer once and then move its origin to the center of the cog
  4. Use Transform panel to rotate it -18 degrees (-18 worked for me as it would align it to the next "tooth" of the cog. I found it when I created the cog from scratch).
  5. Next thing is to snap the two nodes so that they appear one curve. For this you can create a temporary line (which is rotated 81 degrees to perfectly place it in center of the two symbol layers) which would be helpful while aligning the nodes later
  6. Now select the duplicated symbol layer and select the actual curve inside it from layers panel. And then select two nodes and use "Transform" icon from Context Tool bar
  7. Then hold Ctrl + Shift (PC) and drag them accordingly to align it to temporary line (which was created in step 5). It will basically align the nodes of both curves of both symbol layers to each other.
  8. Duplicate the symbol layer (which was already duplicated) once again to create a third symbol layer and this time rotate it -36 degrees.
  9. And then use Ctrl + J to use Power duplicate functionality to create additional layers until it covers cog entirely
  10. Then you can select any of the symbol layer and adjust the curve stroke, color, corner radius etc.

enter image description here

This could be done without symbols too (using a normal curve and power duplicate), but with symbols, you've the benefit of adjusting a single curve later and it will reflect all the curves.


On a separate note, if you think the technique you used is good enough for you, could use a "Add" boolean operation to solve the problem you described. You won't have to deal with removing inner curve. This solution is eventually similar to Layer > Geometry > Separate Curves technique discussed in the other answer.

Here's how to do it:

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.