Wenn ich ein Illustrator-Skript verwende, das sichtbare Grenzen oder Auswahlgröße für beschnittene Grafiken verwendet, sieht das Skript die ursprüngliche Größe der beschnittenen Grafiken als Gruppengröße und nicht als sichtbare (beschnittene) Größe. Nehmen wir an, ich habe ein 150mm x 200mm
Bild und verwende eine Schnittmaske, um einen 100mm x 100mm
Teil auszuschneiden. Jetzt sehe ich also ein Rechteck 100mm x 100mm
und füge dann einige andere Elemente hinzu – es wird nicht größer als 100mm x 100mm
. Dann möchte ich mit dieser Größe arbeiten, nicht mit der Größe des Originalbildes.
Wie kann man dies im Skript implementieren, um weiter damit zu arbeiten? Ich verwende Illustrator CS5.
Solange es sich bei der beschnittenen Grafik um eine Vektorgrafik handelt (im Gegensatz zu einem Rasterbild), können Sie sie verwenden Object > Expand appearance
, um die abgeschnittenen Teile tatsächlich zu löschen. Daher sieht das Skript die Originalgrafik nicht mehr und funktioniert nicht mehr richtig.
Sie müssen die geometrischen Grenzen aus dem tatsächlichen Beschneidungspfadelement abrufen. es ist das erste Pfadelement in einer Schnittgruppe.
Eine Clipping-Gruppe ist im Grunde ein GroupItem
with clipped: true
und eines der Elemente innerhalb dieser Gruppe wird clipping: true
.
Schauen Sie sich dieses Skript an:
function getVisibleBounds(item, geometric) {
var bounds;
// `clipped` is a property of a group
if (item.typename = "GroupItem" && item.clipped) {
var clippingItem;
// look at all the items in the group to find the clipping item
for (var i = 0; i < item.pageItems.length; i++) {
// a child item will have `clipping` property set
if (item.pageItems[i].clipping) {
// found the clipping item!
clippingItem = item.pageItems[i];
break;
// do the same thing for CompoundPathItems
} else if (item.pageItems[i].typename == "CompoundPathItem") {
if (item.pageItems[i].pathItems[0].clipping) {
clippingItem = item.pageItems[i];
break;
}
}
}
// store the clipping item's bounds
bounds = geometric ? clippingItem.geometricBounds : clippingItem.visibleBounds;
} else {
// or just a normal item
bounds = geometric ? item.geometricBounds : item.visibleBounds;
}
return bounds;
}
Scott