I recently found out about the tiled clones tool in Inskcape, so I've been tinkering with it a bit. Is there any way to isolate the seamless repeat out of a pattern? I attached an example below. I created this pattern with the PGG simmetry and would like to isolate a (vector) seamless repeat. What I've been doing up to now is eyeballing the repeat and using guides to help me create a suitable clipping mask, then testing the repeat by creating a pattern fill out of it. However, while this process was fairly easy with this example, it's not always immediate with more complex patterns, which makes the process tedious and prone to mistakes. Is there any way to automate this process e.g. with a script or something like that?
2 Answers
There's nothing I know of that will do that automatically. Although user287001's answer is probably the closest you will get.
Anyway, if it was me, I'd construct such patterns differently. I'd create a seamless tile manually, then clone the whole tile. You can use the grid and snap to grid to help get the positioning of repeating pieces that overlap the edges, left, right, top and bottom of the tile to make it seamless.
Here's an example. I've colour coded the triangles so you can see those that repeat. The final design uses the grey box as a clip, then I converted it into a clone. I then placed the first clone on the page, then duplicated and placed the others using snap to grid.
One benefit of using a clone here is you can edit the source and add more complexity and the other clones will update automatically.
Example
-
Thank you for your reply. I usually make more complex patterns manually (and mostly not in Inkscape as I struggle a bit with its layer management), but in this case I was looking for some easy and quick workflow to make simpler coordinates, so making these manually would defeat the purpose.– DanyanDec 27, 2020 at 16:45
-
@Danyan You only have to create one seamless tile manually using this method. It doesn't involve any layers or layer management. The pattern is made of clones. Dec 27, 2020 at 18:58
-
I prefer to have elements organized in groups and layers, especially when more complex motifs are involved. By the way, I am not saying that it isn't doable in Inkscape, but I find it more cumbersome overall.– DanyanDec 27, 2020 at 21:26
There's no need to "eyeball" horizontal nor vertical repeat intervals. There's surely some nodes if you have vector paths (=no raster images, effect results nor non-path presets such as rectangle or ellipse). You should be able to find corresponding nodes at horizontal and vertical repeat intervals.
Unlink and ungroup all shapes of your tiled pattern. If there's non-paths, convert those objects to paths. Nothing else is allowed. See the Objects panel to be sure all groups are ungrouped.
Draw a rectangle which covers one horizontal and one vertical interval of your pattern. If you have point snaps ON you can drag the rectangle diagonally between corresponding nodes.
Select the new rectangle and all shapes below it. Apply Extension > Boolean > Intersection. It clips the shapes without combining them. They stay independent and keep their colors.
There's one hitch: If there's open paths they get closed which will spoil the appearance. To keep it visually right have all filled shapes as closed paths and convert open stroke-only paths to filled areas with Path > Stroke to path.
BTW. Some extensions were lost when Inkscape v1 appeared. I do not know if you have working Boolean ops extension in your Inkscape build. This https://inkscape.org/~Moini/★multiple-boolean-operations-with-inx-pathops is a working fixed version with many enhancements. You should read the Inkscape documentation to learn how to install new extensions.
-
yes after thinking about it for a while I arrived to a similar conclusion using the coordinates of the bounding boxes of repeating elements. "If you have point snaps ON you can drag the rectangle diagonally between corresponding nodes." not sure I understood how to do this but I'll make some tests. Thanks for the extension link, I will look into it!– DanyanDec 27, 2020 at 16:27
-
One thing isn't clear: Why to use pattern fill. You could simply set clip if you already have tiled clones. In addition you would avoid visible gaps at the seams. Inkscape renders 1px wide transparent zone to a perfectly fitting seam. That's anti-aliasing.– user82991Dec 27, 2020 at 16:33
-
I use the pattern fill at the end, after setting the seamless clip in the tiled clones. I basically fill a rectangle so I can easily see how the pattern looks at different scales, sometimes try to rotate it etc. (I could do this by manipulating the tiled clones, but I find it easier to compare different versions by putting several rectangles in a row and filling them with the pattern)– DanyanDec 27, 2020 at 16:53