femkeblanco
Guide
femkeblanco
Guide
Activity
‎Oct 06, 2020
02:59 PM
I think It is okay. I can work with this. Thank you, Kurt 🙂
... View more
‎Oct 05, 2020
01:11 PM
Awesome! , Thanks for reply .
... View more
‎Oct 02, 2020
11:47 AM
1 Upvote
You've very welcome, don't hesitate to ask away on here. Adobe team are doing some work to fix the lost links after a forum update, so now our experts on here can still make use of their linked bookmarks for some specific topics (hopefully).
... View more
‎Sep 29, 2020
06:59 AM
And now thanks to you, we are more knowledgeable as to why this occurs: in this case we can add the entire realm of fonts to the list of suspects!
... View more
‎Sep 28, 2020
11:55 PM
1 Upvote
if you need nesting for your business, consider paying for a solution.
Here's a plugin at a very good price
http://illustrator.e-cut.ru/
... View more
‎Sep 25, 2020
07:22 AM
That's perfect, thank you!
... View more
‎Sep 25, 2020
03:33 AM
Thats a poss then can I make the text also be inside an area which would make it work?
... View more
‎Sep 23, 2020
12:24 AM
You're right, but I think this will only work for a script-targeted and not a user-selected textFrame (although this may not matter if all you have is one textFrame in the document). Also, while you can get the required properties, I can't think of a way to draw a rectangle around a selected textRange. Again, I may be mistaken though.
... View more
‎Sep 17, 2020
06:11 AM
Thanks a lot. I'll try this today.
... View more
‎Sep 15, 2020
01:57 PM
1 Upvote
I tried the following: var xmlstring = '<LiveEffect name="Adobe PSL Gaussian Blur"><Dict data="R blur 50 "/></LiveEffect>';
app.activeDocument.selection[0].applyEffect(xmlstring); Now the effect gets applied fine, but the visual effect stays within the bounding box of the object (e.g. large blurs get cut off). Also, if iterating over all the items in the selection and applying the effect, the blur is calculated for each item separately. So that looks off if you just want the entire thing to have a blur. So we need to set it on the whole thing. app.activeDocument.activeLayer.visible = false; // Works, but:
app.activeDocument.activeLayer.applyEffect(xmlstring); // does NOT work Applying the effect directly to a layer didn't work unfortunately, but there is a workaround. Group everything on the layer inside a group (named "Test" for example) and use the following script on that group: app.activeDocument.groupItems.getByName("Test").applyEffect(xmlstring); This works great! No more individual blurs stacked on top of eachother. However, the blur is still clipped just a little outside the bounding box of the group. To prevent that, you could add a giant rectangle with opacity of 0, to make the group's bounding box larger.
... View more
‎Sep 12, 2020
01:18 AM
Try this: https://community.adobe.com/t5/illustrator/i-need-a-script-that-groups-filled-paths-by-color-for-paintings-by-numbers/m-p/11394863?page=1
... View more
‎Sep 06, 2020
06:22 AM
What you show is rather an "transparency mask". In Illustrator you can create it using the B/W raster image like ones at the left of your example. Take the image to mask. Put the needed masking image above it. Select them both and open Transparency panel or Opacity option in Control panel and click Make mask.
The way described by Bill is the best but you have to remember: the mask (Clipping mask or Clipping path respectively) must be always a vector shape, not a raster image.
... View more
‎Sep 05, 2020
01:41 PM
Annnnd, I just found my answer to my question about grouping. I DO group.
... View more
‎Sep 04, 2020
11:57 AM
The plan was to access the information I can edit manually from the appearance panel which I cannot do with the script I made. If I avoid the appearance panel I can achieve a similar effect by simply duplicating the object and using the top one for the fill and lower object for the outline. here's a sample of what I want to achieve (middle result) with script to automate that process. My solution is the third one but I wanted to know if there's a way to get to change colors in the appearance panel as if I use the appearance the script won't change the colors but change a version that... doesn't exist until I delete the appearance in the panel.
... View more
‎Aug 31, 2020
02:44 AM
1 Upvote
If you're asking how to run the code: Copy and paste it in a jsx file. (You can create a txt file and change the extension to jsx.) Then, while your document is open in Illustrator, go to File > Scripts > Other Script (Ctrl+F12). Find your script and open it.
... View more
‎Aug 24, 2020
11:48 AM
1 Upvote
There is no function to "get" selected brushes, but you can still choose which brushes to randomly apply. In the snippet below, you choose a list of brushes based on a first and last. (Brushes are numbered starting with 1 from the panel's upper left .) firstBrushNo = 2; // <- enter number
lastBrushNo = 4; // <- enter number
theBrushes = app.activeDocument.brushes;
for (i = 0; i < app.selection.length; i++){
brushIndex = Math.floor(Math.random()*((lastBrushNo - 1) - (firstBrushNo - 1) + 1)) + (firstBrushNo - 1);
theBrushes[brushIndex].applyTo(app.selection[i]);
} For example, you can choose to randomly apply the brushes between the second and fourth (inclusive).
... View more
‎Aug 23, 2020
01:28 AM
Thank you for introducing this plugin, but I do not have that, and that's so pricey. The Shape Builder tool worked for me anyway.
... View more
‎Aug 20, 2020
11:14 AM
Thanks for the help.
... View more
‎Aug 20, 2020
02:43 AM
1 Upvote
Make the letters with gradients:
Import into Photoshop, convert to bitmap
Enlarge it, smooth it when enlarging
Then use Photoshop levels to make the contrast harder. Enlarge again if needed and apply levels again.
Then import back into Illustrator and use Image Trace with High Detail and Low Noise.
Et voila, no plugins.
... View more
‎Aug 17, 2020
10:19 PM
redraw() also helps when applying Effects or LiveTracing. Sometimes (not always) it's necessary to redraw the screen. Problem is to tell when, Illustrator is like a wild beast we have to domesticate.
... View more
‎Aug 16, 2020
10:23 AM
Is it very much possible, i have written a small snippet to do this have a look. At the top, I have defined two variables
layertoHide :- this is an array with names of the layers that need to be turned off, all the remaining layers are made visible
destinationFilePath :- This is the path of the folder where you want to export the pdf, notice the path ends with a trailing /
The output file name of the pdf is the name of all the layers to be hidden concatenated with a ,
var layertoHide = ["Layer1", "Layer 2", "Layer 4"]
var destinationFilePath = "/Users/manan/Downloads/"
for(var i = 0; i < app.activeDocument.layers.length; i++)
{
var l = app.activeDocument.layers[i]
l.visible = true
for(var j = 0; j < layertoHide.length; j++)
{
try{
var ly = layertoHide[j]
if(ly == l.name)
{
l.visible = false
layertoHide = layertoHide.slice(0, i).concat(layertoHide.slice(i + 1))
break;
}
}catch(e){}
}
}
var pdfSaveOptions = new PDFSaveOptions();
pdfSaveOptions.pDFPreset = "[High Quality Print]"
pdfSaveOptions.viewAfterSaving = false;
app.activeDocument.saveAs(new File(destinationFilePath + layertoHide.toString() + ".pdf"), pdfSaveOptions)
-Manan
... View more
‎Aug 14, 2020
04:31 AM
That appears to have worked. Thank you both. femkeblanco, I was moving each item one at a time as I came across them for a color check. When I had the issue deleting the layers I thought it was a timing issue, first thought was if I could move all items at once then remove layers may help with the timing. So I collected all pageItems by color into an array, grouped them, then moved them to the layer created. Code, its messy right now but it works with the backwards iteration. If you all know of a way to do this efficently please let me know. //@include "../utils/json2.jsx"
doc = app.activeDocument
drillBoxes()
function drillBoxes(){
allPageItems = filterPageItems()
seps = seprateItems(allPageItems)
moveToLayer(seps)
removeEmptyLayers(doc.layers)
}
function addToGroup(arr){
groupCollect = doc.groupItems.add()
for(i=0; i<arr.length; i++){
arr[i].move(groupCollect, ElementPlacement.PLACEATBEGINNING)
}
return groupCollect
}
function moveToLayer(sepObj, callback){
for(y=0; y < sepObj.colors; y++){
nGroup = addToGroup(seps[seps.colornames[y]])
nGroup.move(doc.layers[seps.colornames[y]], ElementPlacement.PLACEATBEGINNING)
}
}
function seprateItems(allPageItems){
//Move all items at once?
createdLayers = {}
createdLayers['colors'] = 0
createdLayers['colornames'] = []
len = allPageItems.length
for(z=0; z < len; z++){
j = allPageItems[z].length - 1
while(j >= 0){
currItem = allPageItems[z][j]
if(currItem.typename === 'CompoundPathItem'){
if(currItem.pathItems.length){
if(currItem.pathItems[0].filled){
currColor = currItem.pathItems[0].fillColor
}else{
currColor = currItem.pathItems[0].strokeColor
}
if(currColor.constructor.name === 'SpotColor'){
if(currColor.spot.name === '[Registration]'){
currItem.remove()
j--
continue
}
if(createdLayers[currColor.spot.name + 'color']){
createdLayers[currColor.spot.name].push(currItem)
}else{
addLayer(currColor.spot.name, [50, 50, 50])
doc.layers[currColor.spot.name].zOrder(ZOrderMethod.SENDTOBACK)
createdLayers[currColor.spot.name] = []
createdLayers[currColor.spot.name].push(currItem)
createdLayers['colors'] += 1
createdLayers['colornames'].push(currColor.spot.name)
createdLayers[currColor.spot.name + 'color'] = true
}
}else{
currItem.remove()
}
}else{
curItem.remove()
j--
continue
}
}else{
if(currItem.fillColor.constructor.name === 'SpotColor' || currItem.strokeColor.constructor.name === 'SpotColor'){
if(currItem.filled){
currColor = currItem.fillColor
}else{
currColor = currItem.strokeColor
}
if(currColor.spot.name === '[Registration]'){
currItem.remove()
j--
continue
}
if(createdLayers[currColor.spot.name + 'color']){
createdLayers[currColor.spot.name].push(currItem)
}else{
addLayer(currColor.spot.name, [50, 50, 50])
doc.layers[currColor.spot.name].zOrder(ZOrderMethod.SENDTOBACK)
createdLayers[currColor.spot.name] = []
createdLayers[currColor.spot.name].push(currItem)
createdLayers['colors'] += 1
createdLayers['colornames'].push(currColor.spot.name)
createdLayers[currColor.spot.name + 'color'] = true
}
}else{
currItem.remove()
}
}
j--
}
}
return createdLayers
callback()
}
function filterPageItems(){
collect = []
docLayers = doc.layers
for(i=0; i < docLayers.length; i++){
currLayer = docLayers[i]
returnArr = []
collectedPageItems = pageItemCustomRecursive(currLayer, returnArr)
collect.push(collectedPageItems)
}
// cleanCollect = twoDeArraytoOneDe(collect)
return collect
}
function pageItemCustomRecursive(parent, returnItems){
if(parent.typename == "Layer" && parent.layers.length > 0){
var layers = parent.layers
for( var i = 0; i < layers.length; i++ ) {
var subLayer = layers[i]
pageItemRecursive(subLayer, returnItems)
}
}
var items = parent.pageItems
for( var j = 0; j < items.length; j++ ){
var curItem = items[j]
if(curItem.typename == "GroupItem"){
pageItemRecursive(curItem, returnItems)
}else if(curItem.typename == "MeshItem" || "PlacedItem" || "SymbolItem" || "RasterItem" || "NonNativeItem" || "PluginItem" || "PathItem" || "CompoundPathItem"){
returnItems.push(curItem)
}
}
return returnItems
}
function removeEmptyLayers(arr){
$.writeln(arr)
app.redraw()
for(i=arr.length-1; i >= 0; i--){
$.writeln(arr[i])
if(arr[i].pageItems.length === 0){
arr[i].remove()
}else{
$.writeln(arr[i])
continue
}
}
} function addLayer(name, rgbColors){
if (rgbColors === undefined){rgbColors = [255, 0, 255]}
var cont = true;
function change() {
cont = !cont;
}
for(i = 0; i < app.activeDocument.layers.length; i++){
if(app.activeDocument.layers[i].name == name){
change();
}
}
if (cont == true) {
var newColor = new RGBColor();
newColor.red = rgbColors[0];
newColor.green = rgbColors[1];
newColor.blue = rgbColors[2];
var newLayer = app.activeDocument.layers.add();
newLayer.name = name;
newLayer.color = newColor;
}
app.activeDocument.layers[name].visibile = true
app.activeDocument.layers[name].locked = false
app.activeDocument.activeLayer = app.activeDocument.layers.getByName(name);
} Also using this function from another file
... View more
‎Aug 13, 2020
04:33 PM
As a test, I added a PMS spot color to a Library and then, in a new, empty document, I selected the color in the Library and chose "Add to Swatches" from the Library palette menu. The color appeared in the swatches palette, but the name was gone. Weird. Sorry I couldn't help. At this stage the Library doesn't seem to be directly accessible by scripts.
... View more
‎Aug 08, 2020
12:18 AM
thank you for your help
... View more
‎Aug 01, 2020
05:40 AM
But i have CS6 (16.3.2) it is saves as Blank png. It works wells in Illustrator 2020
... View more
‎Aug 01, 2020
05:06 AM
Thank you a million times! I added another snippet of code for embedding the linked files. So here is the final script: var layers = app.activeDocument.layers;
for (var i = 0; i < layers.length; i++) {
layers[i].locked = false;
}
app.executeMenuCommand("unlockAll");
app.executeMenuCommand("selectall");
app.executeMenuCommand("OffsetPath v22");
app.executeMenuCommand("outline");
executeMenuCommand
// Embedding Action
if ( app.documents.length > 0 ) {
while ( app.activeDocument.placedItems.length > 0 ) {
placedArt = app.activeDocument.placedItems[0];
placedArt.embed();
}
}
// Change foldername1 according to your liking.
var foldername1 = "Prepress"
var path1 = app.activeDocument.path;
var filename1 = app.activeDocument.name;
var exportFolder = Folder(path1 + "/" + foldername1);
if (!exportFolder.exists){
exportFolder.create();
}
var file = new File(path1 + "/" + foldername1 + "/" + filename1);
var PDF = new PDFSaveOptions;
app.activeDocument.saveAs(file, PDF);
... View more
‎Jul 31, 2020
10:29 AM
1 Upvote
I haven't used either myself, but to expand a path (brings up dialog box): executeMenuCommand("Expand3") or to outline a stroke: executeMenuCommand("OffsetPath v22")
... View more
‎Jul 31, 2020
08:06 AM
1 Upvote
Salut! Ce script fonctionne sur CS6 Windows 7 avec une de ces deux lignes: var destFile = '/Users/René/Desktop'; var destFile = '~/Desktop'; Je ne sais pas comment traduire en français le mot Assertion ? (affirmation) C'est sur le même ordinateur ? René
... View more
‎Jul 28, 2020
06:22 AM
"This is (not wholly) because if a system is too complicated to use, many features will go unused because no one has time to learn them. "
I think you just have not stayed in this forum long enough 😉 Trust me, there are people for every feature this software has.
... View more
- « Previous
- Next »