-
-
Save bryanbuchanan/11387501 to your computer and use it in GitHub Desktop.
/* Save this file with a jsx extension and place in your | |
Illustrator/Presets/en_US/Scripts folder. You can then | |
access it from the File > Scripts menu */ | |
var decimalPlaces = 3; | |
if (app.documents.length > 0) { | |
if (app.activeDocument.selection.length < 1) { | |
alert('Select a path'); | |
} else if (app.activeDocument.selection[0].area) { | |
// Individual Items | |
var objects = app.activeDocument.selection; | |
} else if (app.activeDocument.selection[0].pathItems) { | |
// Group/Compound Shape | |
var objects = app.activeDocument.selection[0].pathItems; | |
} else { | |
alert('Please select a path or group.'); | |
} | |
// Collect info | |
var totalArea = 0; | |
for (var i=0; i<objects.length; i++) { | |
if (objects[i].area) { | |
var totalArea = totalArea + objects[i].area; | |
} | |
} | |
// Conversions | |
var ppi = 72; | |
var areaIn = totalArea / ppi / ppi; | |
if (areaIn < 0) var areaIn = -areaIn; | |
var areaCm = areaIn * 6.4516; | |
// Display | |
alert('Shape Area\ | |
' + areaIn.toFixed(decimalPlaces) + ' in² \ | |
' + areaCm.toFixed(decimalPlaces) + ' cm² \n\ | |
' + i + ' shapes'); | |
} |
ericadyson
commented
May 20, 2025
via email
@schroef ericadyson is correct, you are a star! I have tested v0.1.7.1 using a simple 100x100cm square on a 600x600cm artboard and the old version gave an area of 100cm2 (100x too small) and v0.1.7.1 gave an area of 10,000cm2 which is correct! I need to do some further testing on more complicated designs, but for now it looks very promising. A HUGE THANK YOU :)
Make sure not use difficult compounds shape with negative shapes. I'm trying to figure out what's going wrong in those cases. It has issues when a group consists of multiple compundpathitems with negative (cutout) shapes and return faulty values
@schroef is it that it includes the negative/cutout area in the area calculation?
Those simple shapes work. I'll post a more complex shape when I'm at work. It when there is a group build of sub items which are compound shapes. Each of these have lots of cutouts. This is where it goes wrong. I must have made an error somehwere
Look here is an example of a more complex shape. The item in the middle is a group build of 4 compoundPathItem, noticed how the end result is wrong. It should be 250.0952 if my math is still correct
If i run on a single section, it does work
When i run a multi selection of compoundPathItems, it also seems to work correct. I did some tricks applying some filters and expanding it, to make sub items work. But something is going wrong
Its really depends on how the shape is build. Because if i group the the above version and then run it, it also returns that 250....
Check the sub items, i noticed that a shape can be build in different manner and looking the same. The way i am calculating compounds with negative shapes is by checking the polarity. Normally a cutout is negative. But it seems the most outer shape can also be negative and still show the same. Look at the images below. They look the same, but the outer shape has different polarity. Its kinda weird that its actually showing the shape correctly
@schroef are you only finding this with the design above or have you seen the same in other cases? I am not sure I can replicate the error.