5

I have a script that reads SVG coordinates and creates a dot on each anchor point. The problem is that it does not work with curves so I need to transform the curves of any shape into straight lines - example:

enter image description here

A basic object like that is somewhat easy, but I actually need it on a larger scale. The simplest would look like this:

enter image description here

Is there any way to achieve that automatically with Illustrator CC?

I could adjust the script to read another file extension as long as it only outputs X and Y coordinates (no curves). Ex:

-20.8,262.5
-4.3,263.6
4,264.9
13.4,267.2
23.5,270.6
34.5,275.4
  • I can't tell you how... but the thing you are looking for is Flatness. All curves are constructed of straight segments upon output. The Flatness setting controls the tolerance before a new segment (anchor) is added. Illustrator (10 years ago) used to allow the user to control the Flatness setting upon output. That has since been removed in favor of the "highest possible option" automatically. So... long comment short :::: Look for something regarding Flatness in the script to edit. – Scott Feb 20 '16 at 0:35
4

One can do this with a combo of curve simplification and divide command, sort of. Do this:

  1. Choose Object → Path → Add Anchor Points. This will add a anchor at the middle of each span (not uniform but along the t parameter of curve). Do this a few times for enough points.

  2. The problem with previous step is that it also divides straight lines. Let us counter this with Object → Path → Simplify....

    • Option straight lines ON
    • Angle threshold to something low (Preview until your happy)

All of the above works uniformly on as many objects as you select so its really a few clicks no matter how complex your path is.

enter image description here

Image 1: Result of each stage. From left to right original, multi divided and simplified.

Now this is nonideal in many ways, for example you couldt want uniform stepping or so. One way would be to use ghostScript to do the flattening. Another would be to split with something more intelligent like Divide (length) by Hiroyuki Sato. This script would also be easy to modify to do the kind of flattening you need. Also this way you could get the points without actually flattening at all.

Another splitting option is to use a few lines as cutting cookie and then use shape builder to divide objects below. (there is a side effect in shape builder that splits at all intersections when you delete a segment.) But YMMV depending on why you sample the shape in the first place.

enter image description here

Image 2: Linear sampling along x axis done with splitting with a shape builder side effect (1 click to split all + creation and deletion of cookiecutter).

  • Thanks @joojaa, I knew about adding extra anchor points, but it didn't struck me how that would be helpful, before fully exploring the Simplify function. By chance I figured it out myself, but you put it in a very nice understandable way. With this technique I managed to create the second shape in my post with 95% accuracy and 156 points. I'll have a look at the Divide script, seems promising. Thank you! – Georgi Demirev Feb 20 '16 at 16:07
1

This is know as the "Flattness" of a curve... Often there's a setting for output. However, I don't think there's a direct setting within Illustrator while working on curves.

  • Select the path
  • Choose Object > Path > Add Anchor Points from the menu
  • Choose Object > Path > Add Anchor Points from the menu again (yes twice)
  • Choose Object > Path > Simplify and tick the "Straight Lines" box

enter image description here

You can then remove the additional anchor points on straight segments if you prefer....

enter image description here

You can continually choose to add more anchor points before simplifying if you want more angled segments. Adding anchors after you've used the Simplify command won't do anything, other than add anchors.

  • Wow and exact same answer too. :) – joojaa Sep 26 at 19:28
  • @joojaa in all fairness.. this was posted before your duplicate was linked to :) – Scott Sep 26 at 19:31
  • yes sure. thats not what im saying it frigging amazingly the same on all levels. – joojaa Sep 26 at 19:33
0

I know this is old. I'm actually seeing a lot of flatness problems in illy 2017 trying to flatten small intricate curvy paths and finding that curves are being lost in some areas. This is the first post I could even find that remembered there was a flatness setting years ago. I knew I wasn't crazy.

Adding points did help a little. It kept more fidelity but the loss of curves still happens. Maybe I will try scaling the whole shape way up before flattening and then scaling back down?

  • 1
    If you have a question please ask a new one and explain better the problem or should that be a comment? Welcome! – Mensch Dec 20 '18 at 21:18
0

According to Adobe's help site:

Select the anchor points. If they are not visible, use the direct selection tool to view the points. Selecting the lasso tool will allow you to enclose a collection of points. Clicking on a point, shift clicking on additional points is the more manual method of selecting multiple points, other methods may be available.

Once selected, two icons on the tool bar become useful and effective. One of them is the "convert to corner point" icon, while the other is "convert to smooth point." If you pause your mouse over the icon, a tool tip may appear with these identifiers.

The above text is paraphrased from the linked site which also contains images of the icons used in the process.

I tested this process on an .SVG file that was converted to .AI which worked for some of the anchor points. This may be an artifact of the original file format, or the process may work only on some anchor points. Experimentation is indicated.

Inkscape works in a similar manner, although you can select a point when using the node editing tool, pausing your mouse over the point and scrolling the mouse wheel. This will advance the number of selected anchor points (nodes) being selected. Alternatively, one can also rubber-band a box around the desired points.

A similar reference for Inkscape can be found at tutorviacomputer.com for node editing. The difference in action is once the nodes are selected, use Shift-C to convert to corner nodes. The text also provides the option to use the "make selected nodes corner" icon.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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