Additional scripted patterns

Hi all,
I am the developer of the Deco scripting engine that is used to create scripted patterns in Photoshop CS6. I would like to continue the interesting discussions and exchange of patterns and images that many of you started on the pre-release forum.
If you go to the following page (link) you can get a brief overview of how to add new scripted patterns to Photoshop CS6.  Check out a few Deco scripts that create boundary patterns. The size of the boundary depends on the width
of the input pattern – you want a wider boundary, create a wider pattern.
Feel free to ask me any questions related to pattern scripting.
Enjoy,
Radomir

Hi David, ok, running directly from the scripts this is the error I get;
Error 2 : RenderAPI is undefined.
Line 17
->var pattern = RenderAPI.getParameter(kps pattern);  //get pattern
information.
The other path script I have that works is ' specify varying sizes along path '... author unknown but Paul something rings a bell...here is that script;
//Script Copyright 2012 by Richard Y. Kain. I am indebted to others who made predecessor
//scripts that did not have varying copy sizes and varying copy spacing, which I added by
//rewriting portions and resturcturing the information transferred among the two scripts.
//This script for Photoshop CS6 displays the dialog window and eventually calls deco fill to
//execute the script mentioned below.
//The major feture is that the sizes of the pattern can vary progressively along the path, and
//the spacing of the copies can be specified. This script invokes the script "Varying Path and Spacing"
//that is called from the fill dialog to actually render the pattern copies.
//The scripts should be located in the directory \presets\deco in the CS6 program files context.
//This script should be invoked from Photoshop through the File>Scripts path
#target photoshop
app.bringToFront();
main();
function main(){
var updated=false;
if(!documents.length) return;
//The following code (by someone else) constructs an alphabetic list of the patterns known to the fill dialog.
var file = File(Folder.temp +"/deco.pat");
if(file.exists) file.remove();
savePatterns( file );
  file.open("r");
  file.encoding = 'BINARY';
  var str = file.read();
  file.close();
  var patterns=[];
  var rex = /(\x00\w|\x00\d)(\x00\-|\x00\w|\x00\s|\x00\d)\x00\x00\$[-a-z\d]/g;
  while ((result = rex.exec(str)) != null) {
   var sp = result[0].toString().replace(/\x00/g, '').split('$');
   var X = readInt16(str,(result.index(result[0].length)22));
   var Y = readInt16(str,(result.index(result[0].length)18));
    patterns.push([[sp[0]],[sp[1]],[X],[Y]]);     
patterns=ReturnUniqueSortedList(patterns);
file.remove();
//The following code (by someone else, slightly modified by me) displays the dialog about the path fill
var win = new Window( 'dialog', 'Path Fill' );
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, );
g.backgroundColor = myBrush;
win.p1= win.add("panel", undefined, undefined, );
win.g1 = win.p1.add('group');
win.g1.orientation = "row";
win.title = win.g1.add('statictext',undefined,'Path Fill');
win.title.alignment="fill";
var g = win.title.graphics;
g.font = ScriptUI.newFont("Georgia","BOLDITALIC",22);
win.g5 =win.p1.add('group');
win.g5.orientation = "row";
win.g5.alignment='fill';
win.g5.spacing=10;
win.g5.st1 = win.g5.add('statictext',undefined,'Spacing of pattern copies (as a percentage of its width): ');
win.g5.st1.preferredSize=[340,20];
win.g5.et1 = win.g5.add('edittext',undefined,'50');
win.g5.et1.preferredSize=[50,20];
win.g5.et1.onChanging = function() {
  if (this.text.match(/[^\-\.\d]/)) {
    this.text = this.text.replace(/[^\-\.\d]/g, '');
win.g8 =win.p1.add('group');
win.g8.orientation = "row";
win.g8.alignment='fill';
win.g8.spacing=10;
win.g8.st1 = win.g8.add('statictext',undefined,'Final pattern size (as a percentage): ');
win.g8.st1.preferredSize=[340,20];
win.g8.et1 = win.g8.add('edittext',undefined,'10');
win.g8.et1.preferredSize=[50,20];
win.g8.et1.onChanging = function() {
  if (this.text.match(/[^\-\.\d]/)) {
    this.text = this.text.replace(/[^\-\.\d]/g, '');
win.g10 =win.p1.add('group');
win.g10.orientation = "row";
win.g10.alignment='fill';
win.g10.st1 = win.g10.add('statictext',undefined,'Please select Pattern:');
win.g10.st1.preferredSize=[340,20];
win.g10.dd1 = win.g10.add('dropdownlist');
for(var p in patterns){win.g10.dd1.add('item',patterns[p][0]);}
win.g10.dd1.selection=0;
win.g10.dd1.onChange = function(){
var str = patterns[win.g10.dd1.selection.index][0].toString() + " ( X = " ;
str += Number(patterns[win.g10.dd1.selection.index][2]) + " Y = ";
str += Number(patterns[win.g10.dd1.selection.index][3]) + ")";
//win.g10.dd1.helpTip = str;
win.g10.dd1.onChange();
win.g15 =win.p1.add('group');
win.g15.orientation = "row";
win.g15.alignment='fill';
var Blend = ['Normal','Dissolve','-','Darken','Multiply','Color Burn','Linear Burn','Darker Color','-','Lighten','Screen','Color Dodge',
    'Linear Dodge (Add)','Lighter Color','-','Overlay','Soft Light','Hard Light','Vivid Light','Linear Light', 'Pin Light','Hard Mix','-','Difference', 'Exclusion',
    'Subtract','Divide','-','Hue','Saturation','Color','Luminosity'];
var bMode=['Nrml','Dslv','-','Drkn','Mltp','CBrn','linearBurn','darkerColor','-','Lghn', 'Scrn',
'CDdg','linearDodge','lighterColor','-','Ovrl','SftL','HrdL','vividLight','linearLight','p inLight','hardMix','-',
'Dfrn','Xclu','blendSubtraction','blendDivide','-','H   ','Strt','Clr ','Lmns'];
win.g15.st1 = win.g15.add('statictext',undefined,'Blend Mode:');
win.g15.st1.preferredSize=[340,20];
win.g15.dd1 = win.g15.add('dropdownlist',undefined,Blend);
win.g15.dd1.selection=0;
win.g20 =win.p1.add('group');
win.g20.orientation = "row";
win.g20.alignment='fill';
win.g20.st1 = win.g20.add('statictext',undefined,'Opacity:');
win.g20.st1.preferredSize=[340,20];
win.g20.et1 = win.g20.add('edittext',undefined,'100');
win.g20.et1.preferredSize=[50,20];
win.g20.et1.onChanging = function() {
  if (this.text.match(/[^\-\.\d]/)) {
    this.text = this.text.replace(/[^\-\.\d]/g, '');
var pictureFlag = true          //flag about whether you choose to select patterns by name or by picture
win.g100 =win.p1.add('group');
win.g100.orientation = "row";
win.g100.alignment='center';
win.g100.bu1 = win.g100.add('button',undefined,'Paint pattern copies');
win.g100.bu1.preferredSize=[150,30];
win.g100.bu3 = win.g100.add('button',undefined,'See pattern pictures');
win.g100.bu3.preferredSize=[150,30];
win.g100.bu2 = win.g100.add('button',undefined,'Close');
win.g100.bu2.onClick=function(){
    win.close(0);
win.g100.bu2.preferredSize=[150,30];
//Control goes here if the pattern was chosen by name and the button to do it was clicked
win.g100.bu1.onClick=function(){
if(win.g5.et1.text == ''){
    alert("Your spacing cannot be blank");
    return;
if(isNaN(Number(win.g5.et1.text) )){
    alert("Your entry for the spacing is not a number");
    return;
if (Number(win.g5.et1.text)<10){
    alert("Your spacing must be at least 10%");
    return;
if(win.g8.et1.text == ''){
    alert("Your final size specification cannot be blank");
    return;
if(isNaN(Number(win.g8.et1.text) )){
    alert("Your entry for the final size is not a number");
    return;
win.close(0);
pictureFlag = false;
if (updated==true){
var idslct = charIDToTypeID( "slct" );
    var desc4 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref4 = new ActionReference();
        var idHstS = charIDToTypeID( "HstS" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idPrvs = charIDToTypeID( "Prvs" );
        ref4.putEnumerated( idHstS, idOrdn, idPrvs );
    desc4.putReference( idnull, ref4 );
executeAction( idslct, desc4, DialogModes.NO );
updated=true;
doit(pictureFlag);
app.refresh()
}       //end finction for using the patterns by name
//The followong code is invokied if the user wishes to see the patterns in the fil dialog box before tracing the path
win.g100.bu3.onClick=function(){
 if(win.g5.et1.text == ''){
    alert("Your spacing cannot be blank");
    return;
if(isNaN(Number(win.g5.et1.text) )){
    alert("Your entry for the spacing is not a number");
    return;
if(win.g8.et1.text == ''){
    alert("Your final size specification cannot be blank");
    return;
if(isNaN(Number(win.g8.et1.text) )){
    alert("Your entry for the final size is not a number");
    return;
pictureFlag = true;
win.close(0);
doit(pictureFlag);
}       //end finction for using the patterns by pictures - through the fill dialog box
//This function traces the path and creates a listing of points along the path
function doit(useFillBoxFlag) {
// Save the current preferences
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
var startDisplayDialogs = app.displayDialogs;
// Set Adobe Photoshop CS6 to use pixels and display no dialogs
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
//app.displayDialogs = DialogModes.NO;
var activePath=activePathIndex()
if (activePath=-1)activePath=0;
myPath=activeDocument.pathItems[activePathIndex()].subPathItems[0]; //I'm just calculating the first subpath of the active path
var scriptEndSize = Number(win.g8.et1.text);   //FInal pattern size ad a percentage
var spacing =Number(win.g5.et1.text)
//*Number(patterns[win.g10.dd1.selection.index][2])/100;    // Initial Spacing of points in pixels
spacedPoints= new Array;    //The position of each of the equally spaced points
rotations = new Array;       //The rotation of each of the equally spaced points
copysizes = new Array;      //The sizes of the copies to be places at the points along the path
//accuracy of calculation... how many straight line segments each curved segment is split into.
//Note that the granularity is set so that there are about 800 points along the total path, which
//prevents the arrays that are put into the global environment from overflowing.
var granularity = Math.floor(800/myPath.pathPoints.length);
var results = new Array; //points of the straight line segment.... these aren't evenly spaced.
var pointCount=myPath.pathPoints.length-1;
//Approximate Path by dividing into straight line segments
var d = myPath.pathPoints[0].anchor;
for(var i = 0; i< pointCount; i++)
    var a = d
    var b = myPath.pathPoints[i].leftDirection;
    var c = myPath.pathPoints[i+1].rightDirection;
    var d = myPath.pathPoints[i+1].anchor;  
    for (var j =0; j < granularity; j++)
        var t = j/granularity;
        results[i*granularity + j] = bezier (a, b, c, d, t);
// Calculate the last path segment if the path is closed.... same code as above
if(myPath.closed==true){
    var a = myPath.pathPoints[pointCount].anchor
    var b = myPath.pathPoints[pointCount].leftDirection;
    var c = myPath.pathPoints[0].rightDirection;
    var d = myPath.pathPoints[0].anchor;  
    for (var j =0; j < granularity; j++)
        var t = j/granularity;
        results[pointCount*granularity + j] = bezier (a, b, c, d, t);
//Calculate the length of the curve up to each point
var segmentLength= new Array;
segmentLength[0]=0;
var totalLength=segmentLength[0];
for(var i = 0; i < results.length-1; i++)
    segmentLength[i1]= segmentLength[i]Math.sqrt(Math.pow(results[i][0]-results[i+1][0],2) + Math.pow(results[i][1]-results[i+1][1],2));
//set temp vars in memory
$.setenv("DECOpoints","var points = ["results.toString()"];");
$.setenv("DECOendsize","var endsize = "scriptEndSize";");
$.setenv("DECOlengths","var lengths = ["segmentLength.toString()"];");
$.setenv("DECOspacing","var spacing = "spacing";");
$.setenv("DECOpathclosed","var pathclosed = "myPath.closed";");
// Reset the application preferences
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;
//call fill menu
var Name = patterns[win.g10.dd1.selection.index][0];
var PatID = patterns[win.g10.dd1.selection.index][1];
var BMODE = bMode[win.g15.dd1.selection.index];
var Opacity = Number(win.g20.et1.text);
if(Opacity > 100) Opacity = 100;
if(Opacity < 0) Opacity = 0;
try{
decoFill(Name,PatID,BMODE,Opacity,useFillBoxFlag);
}catch(e){}
win.center();
win.show();
function bezier(a,b,c,d,t)
    var ab,bc,cd,abbc,bccd;
    ab = lerp(a,b,t);
    bc = lerp(b,c,t);
    cd = lerp(c,d,t);
    abbc = lerp(ab,bc,t);
    bccd = lerp(bc,cd,t);
    return lerp(abbc,bccd,t);
function lerp(a,b,t)
    var x = a[0] + (b[0]-a[0])*t;
    var y = a[1] + (b[1]-a[1])*t;
    return ;   
function readByte(str, ofs) {
    return str.charCodeAt(ofs);
function readInt16(str, ofs) {
    return (readByte(str, ofs) << 8) + readByte(str, ofs+1);
function activePathIndex(){// returns -1 if no path active/selective
   try{
      var ref = new ActionReference();
      ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
      var desc = executeActionGet( ref );
      return  desc.getInteger(charIDToTypeID("TrgP" ));
   }catch(e){}
 function decoFill(Name,PatID,BMODE,Opacity,useFillBoxFlag) {
         if(BMODE.length> 4) {
        var blendMode ="stringIDToTypeID(BMODE);";
        }else{
            var blendMode = "charIDToTypeID(BMODE);";
    var desc16 = new ActionDescriptor();
    desc16.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('FlCn'), charIDToTypeID('Ptrn') );
        var desc17 = new ActionDescriptor();
        desc17.putString( charIDToTypeID('Nm  '), Name.toString());
        desc17.putString( charIDToTypeID('Idnt'), PatID.toString());
    desc16.putObject( charIDToTypeID('Ptrn'), charIDToTypeID('Ptrn'), desc17 );
    desc16.putPath( stringIDToTypeID('decoScriptFile'), new File( app.path +"/Presets/Deco/Varying Path and Spacing.jsx" ) );
    desc16.putUnitDouble( charIDToTypeID('Opct'), charIDToTypeID('#Prc'), Number(Opacity) );
    desc16.putEnumerated( charIDToTypeID('Md  '), charIDToTypeID('BlnM'), eval(blendMode));
    try{
        if (useFillBoxFlag) {
    executeAction( charIDToTypeID('Fl  '), desc16, DialogModes.ALL )}   //Show the fill dialog box on the way to the path rendering
        else {
    executeAction( charIDToTypeID('Fl  '), desc16, DialogModes.NO )}    //Skip the fill box because the pattern was selected by name,
    }catch(e){return;}
//The rest of this is fuc\nctions supporting listing pattern names
function savePatterns( file ) {
    var desc = new ActionDescriptor();
    desc.putPath( charIDToTypeID( "null" ), new File(file) );
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID( "Prpr" ), charIDToTypeID( "Ptrn" ) );
        ref.putEnumerated( charIDToTypeID( "capp" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
    desc.putReference( charIDToTypeID( "T   " ), ref );
executeAction( charIDToTypeID( "setd" ), desc, DialogModes.NO );
//this was written by someone else - note that this method of finding duplicates eliminates long names that differ far to the right
function ReturnUniqueSortedList(ArrayName){
var unduped = new Object;
for (var i = 0; i < ArrayName.length; i++) {  
unduped[ArrayName[i]] = ArrayName[i];
var uniques = new Array;for (var k in unduped) {
   uniques.push(unduped[k]);}
return uniques.sort();
Anyways, maybe the error message will tell you what I'm doing wrong.

Similar Messages

  • Where are the scripted patterns!!!!!!!

    i have the latest version of Photoshop cc. For some reason i cant find the scripted patterns option. I press fill and it is not inside the fill box. PLEASE HELP!!

    Filter menu > Render...
    Gene

  • PS CS6 Scripted Pattern Fill Problem

    Hi,
    Has any one seen this before?
    When i do a normal Fill with Pattern the pattern is the right colour, image (1)
    But if i select Scripted Patterns Image (2) it always comes out with random colours.

    There is also a scripted UI for these scripts http://uebelephoto.com/CS6_Fill.html
    Scripted Fill UI v 1.2 for Photoshop CS6
    This script creates a User Interface for changing the variables in Photoshop CS6's new scripted fills, so the average user does not have to edit Photoshop's fill scripts. There is a readme file included with the zip download that describes the script in more detail and how to use it. This script is free and can be modified for your own use, but it can not be modified for resale.
    This script is a work in progress and there are some bugs with it, which I will attempt to fix as time permits.
    Updated 5/1/2012
    I do not use it nor do I understand its UI

  • RE: Additional scripts to execute after creation of database for Oracle

    Hi it is possilble to execute additional scripts such as CATALOG.SQL; CATAUDIT.SQL etc to enable v$session views? as these views are not created when i used the wizard in Oracle to create the database in 9i.
    Is this normal or am i not creating the database correctly?
    Also does this steps of running additional scripts required for Oracle 10 or 11?
    Thanks for any info

    Hi,
    after creating the database, run the following scripts
    sql>@$ORACLE_HOME/rdbms/admin/catalog.sql;
    sql>@$ORACLE_HOME/rdbms/admin/catproc.sql;
    connect SYSTEM/&&systemPassword
    sql>@$ORACLE_HOME/rdbms/admin/pupbld.sql;
    regards,
    Xaheer

  • Cannot open scripted pattern dialog. Default values will be used.

    Hello everybody!
    After I updated Photoshop to 14.2 I have an issue with Scripted patterns. I can select all of them, but when i click OK this pops up:
    And I can't pick any settings for my scripted patterns.
    My GPU is nVidia GeForce GTX 660 (non-Ti) with 2GB of VRAM. All of the GPU Acceleration features are enabled in Photoshop.
    The issue is the same both on 32bit and 64bit version of Photoshop.
    I'm on Windows 8.1 x64.
    I tried turning of "Use OpenGL" in the Scripted patterns settings file in "Photoshop/Presets/Deco", still doesn't work.
    Thanks in advance for help!

    Hoi Goran,
    Start Photoshop as Administrator, look if this works. For me this did the trick, it was a rights issue....
    Regards,
    Leon

  • I am using Photoshop CC2014 15.00.  In the pop-up menu for the Fill command there is a place for Scripted patterns.  Within that part, the tree and the picture frame are grayed. Why?   I've seen demonstrations on how to use the feature but mine doesn't wo

    I am using Photoshop CC2014 15.00.  In the pop-up menu for the Fill command there is a place for Scripted patterns.  Within that part, the tree and the picture frame are grayed.
    Why?   I've seen demonstrations on how to use the feature but mine doesn't work.  I checked the updates and I have the current version.
    Thanks.      LM

    I am running CC 2014.2.1 and I've updated to Yosemite. Not seeing tree or frame as an option in the menu. Coworker still on Mavericks has it.

  • Why do I keep getting Error 519: Server interface error" - Server interface error "no component returned from creativewidget' Line: 479 - var test = parent.add('statictext', undefined, text)  when I try to use pattern fill/scripted patterns.  I have unin

    Why do I keep getting Error 519: Server interface error" - Server interface error "no component returned from creativewidget' Line: 479 -> var test = parent.add('statictext', undefined, text)  when I try to use pattern fill/scripted patterns.  I have uninstalled and re-installed PS CC.  I have opened holding down shift to disable third party plug-ins.  I have moved 3rd party plugins to a temp location outside of ps and it still doesn't help.  It worked once, and only once and now won't work at all.

    Unless your Photoshop question has to do with a download/install error, you should ask in Photoshop General Discussion
    The Cloud forum is not about using individual programs
    The Cloud forum is about the Cloud as a delivery & install process
    If you will start at the Forums Index https://forums.adobe.com/welcome
    You will be able to select a forum for the specific Adobe product(s) you use
    Click the "down arrow" symbol on the right (where it says All communities) to open the drop down list and scroll

  • Wierd pixelated output from scripted pattern fill

    Hey guys,
    so I've got a problem with Photoshop CC 2014 on Mac OSX 10.9.4  - everytime I try to use the scripted pattern fill I get this really wierd pixelated output from it, rather than a pattern.  This happens whether I'm using the new tree generator, or just a regular scripted pattern - like the random fill.   I've included a screengrab here of what it looks like.  It doesn't matter what settings I use for the fill, but everytime I use it I get this.  It's really wierd, not to mention slowing me down on a couple of jobs I've got on too >_<
    Any ideas?  Has anyone come across anything like this before?
    Thanks in advance!

    I'm not seeing that on Windows

  • Unable to find scripted patterns in edit fill patterns (trees, e.g.)

    Unable to find scripted patterns in edit>fill>patterns (trees, e.g.) as demo'd in Adobe tutorial. Using PS CC 2014 (latest) and Yosemite. My dialog box doesn't match that shown. Any help? Thanks.

    You posted this in the Lightroom forum.  You're more likely to get help if you repost in the Photoshop forum.

  • Scripted pattern fill broken in last 2014 update?

    Is there something wrong with my last october 2014 update? The scripted scripted pattern fill no longer works as it should...
    Win 7 64 Pro.

    1. It has less items than in earlier version eg no trees
    2. It fills the subject with the "standard" fills not the chosen scripted fill. For instance if I choose bricks I get the bubbles with more or less faint outlines of what could be vaguely recognised as bricks.   

  • Photoshop "Fill" Dialog Box is missing "Scripted Pattern" option..

    Photoshop "Fill" Dialog Box (using the most current Creative Cloud) is missing "Scripted Pattern" option which is supposed to be at the very bottom.  Instead, in the middle of the box I have the option to check the word "Script" which brings up only six fill patterns (such as Brick, Sprial, etc).  In the tutorials I see that by using Scripted Patterns (the tree option for one) brings up many, many choices.

    Big changes made in Fill between CC and CC 2014.  CC Fill dialog on top CC2014 Fill dialog bottom. Picture Frame and Tree moved from Fill to Render Filter and new Flame pattern added into render filter grouped with Picture Frame and Tree.

  • How to add or edit scripted patterns?

    I like me a bit of scripting so 'scripted patterns' sounds exciting. Can't figure out where the scripts are stored though?

    And applications/Adobe Photoshop CS6/Presets/Deco on a Mac (since you did not state your platform in the first message )

  • Script patterns and fills

    I need to crop images unto another background. Does photoshop elements 12 have the script patterns and fills.  If not, will I be able to use any other backgrounds from another application, i.e, powerpoint or web images?

    From the version number you gave, I'm guess you have Photoshop CC 2014. The full version is 2014.2.2
    The Scripted Patterns are under Filter menu > Render
    If you are still using Photoshop CC  (14.2.1) then here's where you would access the scripted patterns under Edit > Fill

  • The Scripted Pattern Fill for "Tree" is missing - the others are there.  What happened?  Please help.

    When I go to Edit > Fill and choose "Pattern".  I check the "Script: box and click the drop-down arrow.  The following display:  Brick Fill / Cross Weave / Place Along Path / Random Fill / Spiral /
    Symmetry Fill ------ but NOT Tree.
    What is wrong?  I've reset everything - still no Tree.
    Please help.
    Thank you

    Silkrooster - you did the job !   Thank you so very much.
    Of course, this brings me to another question if you don't mind answering.  Is there some place I can look when updates come up in Cloud for me to "update" that I can read about each change?  I see this sort of situation happens often for me and I would like to be able to try to find answers on my own instead of asking each time.  (This way, I'd help myself learn the program too.)  I know you have an online manual - but the content is not alphabetized which makes it very time-consuming to sift through. 
    I am seriously deficient in "tech" type stuff and a simple, alphabetized content somewhere would be so very much help.  Maybe you have it and I just don't know where to look.
    Thanks again for telling me about the Tree pattern being moved.  YEAH !!

  • Setting up additional script directories

    Hi - I work for a company with a sizeable number of texture artists. I've been creating a set of photoshop helper scripts for them to use, and I'm trying to figure out how to get photoshop to detect it automatically.
    The way that I see noted all over the Internet is to simply put the .jsx script into the Presets\Scripts directory. While this does work, it's unwieldy in our environment (specifically, it requires me to tell the texture artists that there's an update and have them copy the scripts into the folder, which is a recipe for out-of-sync scripts and sadness).
    Ideally, I'd like to be able to simply check the files in to our source control (at, say, OURPROJECT\art\photoshopscripts\*.jsx) and somehow tell Photoshop to also load scripts from that location, so that it would always be loading the scripts without any manual copying involved by the art teams.
    Is such a thing possible? Bonus points if it can be done via an environment variable.
    Thanks!
    Josh

    On a Windows System I do it by adding a link(Windows Shortcut) to my Script tree into Adobe Photshop Install tree folder "C:\Program Files\psVersion\Presets\Scripts". Warning on a windows 7 64 system do not build you Script tree in Windows   C:\Program Files\  Tree if you use both the 64bit and 32bit Photoshop versions.   For when you run the 32 bit version of Photoshop even though the shortcut you added is to C;\Program Files\xxx something in the system substitutes "Program Files (x86)".
    I have never tried using a network drive. I think it would work however using a remote disk may very well slow down Photoshop's start up process. Photoshop seems to process the Script tree during start up.  It creates a script list it displays when one uses menu File>Scripts and It also look at the scripts to see if any are Plug-in scripts like Conditional Mode Change and Fit Image.  If you have alot of scripts that a lot of network trafic each time Photoshop is started by someone.  I think you would be better off find a process to push|Pull updates onto users machines,  Photoshop seems to pick up the changes that are made to scripts when its running. Running from a local disk would also be better for performance. However Plug-in scripts may not work if updated and there was a change made to its dialog t which change deleted or added setting.
    Photoshop can use script from any folder but only scripts in Photoshop Presets\scripts tree including following links. Will be listed in menu File>Scripts. Links must be present when Photoshop starts for script to be included into Photoshops script list. Note also some scripts like plug-in scripts get listed in menu File>Automate.  Othere scripts can be browsed to or be execute from actions the have their browsed to location recorded into the action. Actions are not loaded automaticly and not automaticly updated when shared by users. A copy is use fow when a User loads an Action set a copy is made into ther Photoshop Preferences. Id a Action ises a script the script is not copied the action only has its name or Full path recorded in the action not the script itself.
    Message was edited by: JJMack

Maybe you are looking for