• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Custom shape list in latest version of Photoshop.

Engaged ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

Hello everyone!
Could CC 2020 - 21.0.0 Release display the list of custom shapes with scripts?
So far I found nothing about it, some scripts of mine have stopped because they depend on the list. What help is well appreciated..

TOPICS
Actions and scripting

Views

2.3K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Community Expert ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

Sure in X's Xtool in its App folder there is a s script "PresetLister.js"  the will list all preset including Custom shapes.   Custom shapes can have duplicate names as other custom shaped the also have a unique identifier.  However, in Photoshop 2020 Adobe made some changes that seems to have broken things like scripts. There now a Shapes Palette that has groups of shapes. Script that I have theat add Shape by Name using Action manager code still work.

var SB = activeDocument.activeLayer.bounds;
//var SB = app.activeDocument.selection.bounds;		// Get the bounds of the selection
top=SB[1].value;
left=SB[0].value;
bottom=SB[3].value;
right=SB[2].value;
rc=top + ":" + left + ":" + bottom + ":" + right;
Name="Chris";
Name= prompt("Shape Name ",Name);
addShape(Name,rc); 

function addShape(name,bounds) {
	top=bounds.substr(0,bounds.indexOf(":")); bounds=bounds.substr(bounds.indexOf(":")+1);
	left=bounds.substr(0,bounds.indexOf(":")); bounds=bounds.substr(bounds.indexOf(":")+1);
	bottom=bounds.substr(0,bounds.indexOf(":")); right=bounds.substr(bounds.indexOf(":")+1);
	// Add a Shape at resolution Black Fill no stroke
var idMk = charIDToTypeID( "Mk  " );
    var desc139 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref69 = new ActionReference();
        var idcontentLayer = stringIDToTypeID( "contentLayer" );
        ref69.putClass( idcontentLayer );
    desc139.putReference( idnull, ref69 );
    var idUsng = charIDToTypeID( "Usng" );
        var desc140 = new ActionDescriptor();
        var idType = charIDToTypeID( "Type" );
            var desc141 = new ActionDescriptor();
            var idClr = charIDToTypeID( "Clr " );
                var desc142 = new ActionDescriptor();
                var idRd = charIDToTypeID( "Rd  " );
                desc142.putDouble( idRd, 0.000000 );
                var idGrn = charIDToTypeID( "Grn " );
                desc142.putDouble( idGrn, 0.000000 );
                var idBl = charIDToTypeID( "Bl  " );
                desc142.putDouble( idBl, 0.000000 );
            var idRGBC = charIDToTypeID( "RGBC" );
            desc141.putObject( idClr, idRGBC, desc142 );
        var idsolidColorLayer = stringIDToTypeID( "solidColorLayer" );
        desc140.putObject( idType, idsolidColorLayer, desc141 );
        var idShp = charIDToTypeID( "Shp " );
            var desc143 = new ActionDescriptor();
            var idNm = charIDToTypeID( "Nm  " );
            desc143.putString( idNm, name );
            var idTop = charIDToTypeID( "Top " );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc143.putUnitDouble( idTop, idPxl, top );
            var idLeft = charIDToTypeID( "Left" );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc143.putUnitDouble( idLeft, idPxl, left );
            var idBtom = charIDToTypeID( "Btom" );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc143.putUnitDouble( idBtom, idPxl, bottom );
            var idRght = charIDToTypeID( "Rght" );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc143.putUnitDouble( idRght, idPxl, right );
        var idcustomShape = stringIDToTypeID( "customShape" );
        desc140.putObject( idShp, idcustomShape, desc143 );
        var idstrokeStyle = stringIDToTypeID( "strokeStyle" );
            var desc144 = new ActionDescriptor();
            var idstrokeStyleVersion = stringIDToTypeID( "strokeStyleVersion" );
            desc144.putInteger( idstrokeStyleVersion, 2 );
            var idstrokeEnabled = stringIDToTypeID( "strokeEnabled" );
            desc144.putBoolean( idstrokeEnabled, false );
            var idfillEnabled = stringIDToTypeID( "fillEnabled" );
            desc144.putBoolean( idfillEnabled, true );
            var idstrokeStyleLineWidth = stringIDToTypeID( "strokeStyleLineWidth" );
            var idPnt = charIDToTypeID( "#Pnt" );
            desc144.putUnitDouble( idstrokeStyleLineWidth, idPnt, 2.000000 );
            var idstrokeStyleLineDashOffset = stringIDToTypeID( "strokeStyleLineDashOffset" );
            var idPnt = charIDToTypeID( "#Pnt" );
            desc144.putUnitDouble( idstrokeStyleLineDashOffset, idPnt, 0.000000 );
            var idstrokeStyleMiterLimit = stringIDToTypeID( "strokeStyleMiterLimit" );
            desc144.putDouble( idstrokeStyleMiterLimit, 100.000000 );
            var idstrokeStyleLineCapType = stringIDToTypeID( "strokeStyleLineCapType" );
            var idstrokeStyleLineCapType = stringIDToTypeID( "strokeStyleLineCapType" );
            var idstrokeStyleButtCap = stringIDToTypeID( "strokeStyleButtCap" );
            desc144.putEnumerated( idstrokeStyleLineCapType, idstrokeStyleLineCapType, idstrokeStyleButtCap );
            var idstrokeStyleLineJoinType = stringIDToTypeID( "strokeStyleLineJoinType" );
            var idstrokeStyleLineJoinType = stringIDToTypeID( "strokeStyleLineJoinType" );
            var idstrokeStyleMiterJoin = stringIDToTypeID( "strokeStyleMiterJoin" );
            desc144.putEnumerated( idstrokeStyleLineJoinType, idstrokeStyleLineJoinType, idstrokeStyleMiterJoin );
            var idstrokeStyleLineAlignment = stringIDToTypeID( "strokeStyleLineAlignment" );
            var idstrokeStyleLineAlignment = stringIDToTypeID( "strokeStyleLineAlignment" );
            var idstrokeStyleAlignInside = stringIDToTypeID( "strokeStyleAlignInside" );
            desc144.putEnumerated( idstrokeStyleLineAlignment, idstrokeStyleLineAlignment, idstrokeStyleAlignInside );
            var idstrokeStyleScaleLock = stringIDToTypeID( "strokeStyleScaleLock" );
            desc144.putBoolean( idstrokeStyleScaleLock, false );
            var idstrokeStyleStrokeAdjust = stringIDToTypeID( "strokeStyleStrokeAdjust" );
            desc144.putBoolean( idstrokeStyleStrokeAdjust, false );
            var idstrokeStyleLineDashSet = stringIDToTypeID( "strokeStyleLineDashSet" );
                var list13 = new ActionList();
            desc144.putList( idstrokeStyleLineDashSet, list13 );
            var idstrokeStyleBlendMode = stringIDToTypeID( "strokeStyleBlendMode" );
            var idBlnM = charIDToTypeID( "BlnM" );
            var idNrml = charIDToTypeID( "Nrml" );
            desc144.putEnumerated( idstrokeStyleBlendMode, idBlnM, idNrml );
            var idstrokeStyleOpacity = stringIDToTypeID( "strokeStyleOpacity" );
            var idPrc = charIDToTypeID( "#Prc" );
            desc144.putUnitDouble( idstrokeStyleOpacity, idPrc, 100.000000 );
            var idstrokeStyleContent = stringIDToTypeID( "strokeStyleContent" );
                var desc145 = new ActionDescriptor();
                var idClr = charIDToTypeID( "Clr " );
                    var desc146 = new ActionDescriptor();
                    var idRd = charIDToTypeID( "Rd  " );
                    desc146.putDouble( idRd, 85.998688 );
                    var idGrn = charIDToTypeID( "Grn " );
                    desc146.putDouble( idGrn, 37.003326 );
                    var idBl = charIDToTypeID( "Bl  " );
                    desc146.putDouble( idBl, 17.999725 );
                var idRGBC = charIDToTypeID( "RGBC" );
                desc145.putObject( idClr, idRGBC, desc146 );
            var idsolidColorLayer = stringIDToTypeID( "solidColorLayer" );
            desc144.putObject( idstrokeStyleContent, idsolidColorLayer, desc145 );
            var idstrokeStyleResolution = stringIDToTypeID( "strokeStyleResolution" );
            desc144.putDouble( idstrokeStyleResolution, 182.880005 );
        var idstrokeStyle = stringIDToTypeID( "strokeStyle" );
        desc140.putObject( idstrokeStyle, idstrokeStyle, desc144 );
    var idcontentLayer = stringIDToTypeID( "contentLayer" );
    desc139.putObject( idUsng, idcontentLayer, desc140 );
executeAction( idMk, desc139, DialogModes.NO );

}

image.png

image.png

 

CC 2019 still works

image.png

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

Anotação 2020-01-03 172725.jpg

Unfortunately, it does not show custom shapes in the current version.

 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

X's script does not work in PS 2020 for custom shapes So I do not know how to gets a list in 2020. Action Manager code still seems to be able to add shapes layer using shape names. 

 

Adobe Remove Shape management from Preset manager in PS 2020 and added a Shape palette where you manage shapes in group  folder.  The way X retrieved Shape Names no longer works in Photoshop 2020.

 

Capture.jpg

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

I found and additional lister in the web it too fails in PS 2020

https://www.tonton-pixel.com/scripts/utility-scripts/list-presets/index.html 

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

Thanks for the support JJMack. I tested them all Unfortunately we can no longer get this function on PS 2020 unless someone from adobe shows us a light!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 03, 2020 Jan 03, 2020

Copy link to clipboard

Copied

Is that what you want?

alert(getPresetList());
 
function getPresetList(){  
var ref = new ActionReference();   
   ref.putEnumerated( charIDToTypeID("capp"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );   
   var appDesc = executeActionGet(ref);   
  var List = appDesc.getList(stringIDToTypeID('presetManager'));  
   
  var presetNames=[];  
    var list = List.getObjectValue(6).getList(charIDToTypeID('Nm  '));  
    // alert( list.getType(0));  
    for (var i = 0; i < list.count; i++) {  
      var str = list.getString(i);  
      str += "\n";
   //   logInfo(str)
      presetNames.push(str);  
    }  
return presetNames;  
}  

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 04, 2020 Jan 04, 2020

Copy link to clipboard

Copied

Hi, 龚亮g64532194 on PS 2020 this script has stopped working, works fine in previous versions. Thanks.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 04, 2020 Jan 04, 2020

Copy link to clipboard

Copied

Have you reported the bug to Adobe yet? Photoshop Family 

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 05, 2020 Jan 05, 2020

Copy link to clipboard

Copied

I will try to resume this problem! I am already convinced that this can really be a bug. JJMack Thank you for your support.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 05, 2020 Jan 05, 2020

Copy link to clipboard

Copied

I also want to knew why the CC 2020 custom shape is not in the presets manager...

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 06, 2020 Jan 06, 2020

Copy link to clipboard

Copied

LATEST

For the same reason that Brushes, Swatches, Grdinets, Styles,Patterns and Custom shaper are not in Preset Manager. Adobe moved where these are managed.  All the remains in Preset manager is Contors and Tools. Pehaps next release there will be no Preset manager and we will will have a Tool Palette and a Contors Palette. Who know what Adobe will do. Adobe does not care if  Adobec changes  disrupt your work-flow.  You have to get your work done Adobe does not.

 

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines