3 Replies Latest reply on Mar 26, 2017 7:07 AM by JJMack

    How can I permanently set the brush spacing to 1% for all brushes?

    désiréeb15913857 Level 1

      Window > Brush > Brush Tip Shape > Spacing

      The question should be clear enough, otherwise don't hesitate to contact me.

        • 1. Re: How can I permanently set the brush spacing to 1% for all brushes?
          JJMack Most Valuable Participant

          you can not nor should you there would be too much lag with large tipped wet mixer brushes that a stroke would take an hour to complete.

          1 person found this helpful
          • 2. Re: How can I permanently set the brush spacing to 1% for all brushes?
            désiréeb15913857 Level 1

            Thank you for your help. Are you sure there isn't an option? I mostly use the simple Hard or Soft Mechanical brushes with different sizes and it's just too annoying if I have to change the brush spacing after every change in size. A plugin, script or whatever would be fine for me as well as long as it works.

            • 3. Re: How can I permanently set the brush spacing to 1% for all brushes?
              JJMack Most Valuable Participant

              The best way to handle that is to use Brush Tool Presets. Do not confuse these with Brush Presets.  They are very different . Tool Presets can easily be rest sets of presets can be loaded.  You can optionally include color as well as all the brush attributes you want in Brush Tool Presets.  It easy to rotate or scroll through you favorite presets with a shortcut key or two.  I have written a script you can use that will help you use tool presets.

               

              YourName.jsx

               

              /* =================================================================================
                            Cycling Forward and Backward through Sets of Tool Presets 
              =====================================================================================
              2017  John J. McAssey (JJMack)
              =====================================================================================
              Naming Your Script so that it identify the tool and Presets Set will be helpful.
                  Copy this script to a new Name for each set of presets you want to cycle through.
                Run that script via shortcut keys. Set two Shortcuts keys 
                F(n) Forward  Modifier+F(n) Backward
                There are three required parameters for the cycling function:
                1.) Correct Photoshop Tools Name 
                2.) Presets Set file name the * part of the *.tpl file
                The *.tpl file must reside in the scripts folder
                3.) Array of preset names in your desired cycling order
              =====================================================================================
              Note: This script only deals with Tool Preset files .tpl for tools preset are easily 
                reset back to Adobe's defaults using the Preset manager. Tool presets may require
                other Photoshop add-ons like brush .abr, patterns .pat, swatch .aco, etc files to
                also be loaded this script will not load them this script will only load .tpl 
                files if there is a need too. You must add what your presets require to Photoshop
              ================================================================================== */
              //@show include
              //@include "cycleTool.jsx"
              
              
              #target photoshop;
              app.bringToFront();
              // Required three parameters  tool,Set,list
              var tool = 'paintbrushTool';                     // Photoshop Tool name your Presets set is for. Only one tool's presets
              // This sample script presets were downloaded from DeviantArt brushes "The Sketch Arsenal" "the_sketch_arsenal_by_thatld.tpl""
              // http://thatld.deviantart.com/art/The-Sketch-Arsenal-161678023 Download link on Top Right of the Page not the one on the bottom
              var presetSet  = 'the_sketch_arsenal_by_thatld'; // Presets set name *.tpl file need to be same folder as this Photoshop script.
              var presetNames = [                              // Preset names list start. Presets you want to cycle through. Set can have more. 
                'Color Brush - Flat',
                'Color Brush - Magic Edge',
                'Color Pencil - Hard',
                'Color Pencil - Soft',
                'Drawing Pencil - B Lead',
                'Drawing Pencil - Blue Line',
                'Drawing Pencil - H Lead',
                'Linework Pen - Fine',
                'Marker - Lower the Flow to Dry',
                'Shading Brush - Pressure Hold',
                'Shading Brush - Soft Texture',
                'Shading Pencil - General',
                'Shading Pencil - Hard',
                'Shading Pencil - Soft',
                'Sketch Pencil - H Lead',
                'Sketch Pencil - The Ultimate!',
                'Watercolor Brush - General'
                ];                                              // Presets names list end. Order the way you want to cycle through them
              // End Required Parameters
              cycleTool(tool,presetSet,presetNames);              // Cycle Forward and Backward through tool presets set names
              // End of Script
              //=============================================================================================================================================//
              

               

              The Function the does it all the work.  CycleTool.jsx

               

              /* =================================================================================
                            Cycling Forward and Backward through Sets of Tool Presets 
              =====================================================================================
              2017  John J. McAssey (JJMack)
              =====================================================================================
              Naming Your Script so that it identify the tool and Presets Set will be helpful.
                  Copy this script to a new Name for each set of presets you want to cycle through.
                Run that script via shortcut keys. Set two Shortcuts keys 
                F(n) Forward  Modifier+F(n) Backward
                There are three required parameters for the cycling function:
                1.) Correct Photoshop Tools Name 
                2.) Presets Set file name the * part of the *.tpl file
                The *.tpl file must reside in the scripts folder
                3.) Array of preset names in your desired cycling order
              =====================================================================================
              Note: This script only deals with Tool Preset files .tpl for tools preset are easily 
                reset back to Adobe's defaults using the Preset manager. Tool presets may require
                other Photoshop add-ons like brush .abr, patterns .pat, swatch .aco, etc files to
                also be loaded this script will not load them this script will only load .tpl 
                files if there is a need too. You must add what your presets require to Photoshop
              ================================================================================== */
              
              
              // =================================================== Main function ======================================================== //
              function cycleTool(toolName,toolPresetSet,toolPresetNames){ // alert("CycleTool");
                if (currentToolName()!=toolName) { // if user is switching tools try to else switch tool preset
                try {selectTool(toolName);} // Insure the tool is select so preset can be selected
                catch(e) {alert("Unable to Select the Tool "+toolName); return;} // Tool name wrong or unavailable 
                if (app.toolSupportsBrushes(app.currentTool)) app.runMenuItem(charIDToTypeID(('TglB'))); //Toggle Brush Palette
                return; // Just switch to the tools current setting
                }
                var desc = new ActionDescriptor(); // Set up Photoshop to remember variables
                try {var desc = app.getCustomOptions('Cycle'+toolPresetSet);} // Try to get CustomOption for cycling this tool presets set
                catch(e){ // Each Photoshop session this should fail first time reset
                try {selectToolPreset(toolPresetNames[0]);} // Insure Tool Presets Set has been loaded 
                catch(e) { // Will fail if tools presets set is not loaded
                if (loadToolPresetSet(toolPresetSet)) { // Load Tool presets set
                try {selectToolPreset(toolPresetNames[0]);} // Load sets first preset
                catch(e) {alert("Was unable to Select the Tools Preset "+toolPresetNames[0]); return;} // Failed to select preset
                }
                else {alert("Was unable to load Tools Presets Set "+toolPresetSet); return;} // Failed to load tools presets set
                }
                desc.putInteger(0,0); // This line save the variable while Photoshop is open,
                app.putCustomOptions('Cycle'+toolPresetSet,desc,false ); // Initialize presets set CustomOption for cycling
                desc = app.getCustomOptions('Cycle'+toolPresetSet); // Get CustomOption Cycle starting point
                  }
                var presetNumber = desc.getInteger(0); // Get the preset index
                if (ScriptUI.environment.keyboardState.ctrlKey||ScriptUI.environment.keyboardState.altKey||
                ScriptUI.environment.keyboardState.shiftKey) { // Previous preset if Ctrl or Alt or Shift key is down
                presetNumber = presetNumber-2; // Back up two preset for it will be bumped one
                if (presetNumber<0){presetNumber=toolPresetNames.length-1;} // Set preset index to the end of the list
                }
                if (presetNumber<toolPresetNames.length){desc.putInteger(0,presetNumber+1);} // Update preset index number
                else {presetNumber=0; desc.putInteger(0,1);} // Reset preset index pointer to the begging of the list
                app.putCustomOptions('Cycle'+toolPresetSet,desc,false); // Put Update the Custom option
                try {selectToolPreset(toolPresetNames[presetNumber]);} // Set tool with preset
                catch(e) {
                if (loadToolPresetSet(toolPresetSet)) { // Load Tool presets set Tool presets may have reset
                try {selectToolPreset(toolPresetNames[presetNumber]);} // Set tool with preset
                catch(e) {alert("Was unable to Select the Tools Preset "+toolPresetNames[presetNumber]); return;} // Failed to select
                }
                else {alert("Was unable to load Tools Presets Set "+toolPresetSet); return;} // Failed to load tools presets set
                }
              };
              // =================================================== Helper functions ===================================================== //
              function selectTool(tool) {
                  var desc9 = new ActionDescriptor();
                      var ref7 = new ActionReference();
                      ref7.putClass( app.stringIDToTypeID(tool) );
                  desc9.putReference( app.charIDToTypeID('null'), ref7 );
                  executeAction( app.charIDToTypeID('slct'), desc9, DialogModes.NO );
              };
              function selectToolPreset(PresetName) {
                var desc = new ActionDescriptor();
                var ref = new ActionReference();
                ref.putName( stringIDToTypeID( "toolPreset" ), PresetName );
                desc.putReference( charIDToTypeID( "null" ), ref );
                executeAction( charIDToTypeID( "slct" ), desc, DialogModes.NO );
              }
              function loadToolPresetSet(SetName) {
                returncode = true;
                var scriptLocation = String(findScript());
                var path = scriptLocation.substr(0, scriptLocation.lastIndexOf("/") + 1 ) ;
                var SetFile = new File(path + SetName + ".tpl");   // Requited to be in the script's folder
                if (!SetFile.exists) { returncode = false; }
                else {
                var desc = new ActionDescriptor();
                var ref = new ActionReference();
                ref.putProperty( charIDToTypeID( "Prpr" ), stringIDToTypeID( "toolPreset"  ));
                ref.putEnumerated( charIDToTypeID( "capp" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt"  ) );
                desc.putReference( charIDToTypeID( "null" ), ref );
                desc.putPath( charIDToTypeID( "T   " ), new File( SetFile ) );
                desc.putBoolean( charIDToTypeID( "Appe" ), true );
                try {executeAction( charIDToTypeID( "setd" ), desc, DialogModes.NO );}
                catch(e) { returncode = false; }
                }
                return returncode ;
              }
              function findScript() {// Find the location where this script resides
                var where = "";
                try { FORCEERROR = FORCERRROR;}
                catch(err) { where = File(err.fileName);}
                return where ;
              }
              function currentToolName() {
                var ref = new ActionReference();
                ref.putProperty(stringIDToTypeID("property"), stringIDToTypeID("tool"));
                ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
                var applicationDesc = executeActionGet(ref);
                //alert(typeIDToStringID(applicationDesc.getEnumerationType(stringIDToTypeID("tool"))));
                return(typeIDToStringID(applicationDesc.getEnumerationType(stringIDToTypeID("tool"))));
              }