首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义不是photoshop脚本中的对象

未定义不是photoshop脚本中的对象
EN

Stack Overflow用户
提问于 2019-05-14 16:11:53
回答 1查看 548关注 0票数 0

我想通过这个脚本在photoshop中创建grommet,但是当我在photoshop中运行这个脚本时,我得到了一个错误:

代码语言:javascript
运行
复制
Error: undefined is not an object line 63 ( grommetMarkL = printMarksLayer.pathItems.ellipse( -(spacingY), spacingX, 
    grommetSize, grommetSize );).

请帮帮我我试着解决这个问题太难了,但是我没有解决这个错误。

代码语言:javascript
运行
复制
#target Photoshop
if (app.documents.length > 0){
    var idoc = app.activeDocument;    
    var dwidth = app.activeDocument.width;
    var dheight = app.activeDocument.height;
    //grommet by default
    var grommetbydefault=36;
    // Grommets
    var grommetSize = 14.4; // .375 in.
    var grommetMargin = 72; // .7 in.
    // var grommetSpacing = 576; // 8 in.
    var grommetSpacing = grommetbydefault;
    var grommetMarkFillColor = new RGBColor();
    grommetMarkFillColor.red = 0;
    grommetMarkFillColor.green = 0;
    grommetMarkFillColor.blue = 0;
    var grommetMarkStrokeColor = new RGBColor();0
    grommetMarkStrokeColor.red = 255;
    grommetMarkStrokeColor.green = 255;
    grommetMarkStrokeColor.blue = 255;
    var sideGrommets = confirm('Hello Tahir do you want side grommets?')

    // Get artboard sizing
    // var artBoardSize = myDoc.artboards;
    // var width = artBoardSize[0].artboardRect[2];
    // var height = artBoardSize[0].artboardRect[3];

    // Get document sizing
    // Styling
    var noColor = new NoColor();
    var black = new CMYKColor();
    black.black = 100;
    var white = new CMYKColor();
    white.black = 0;

    /* Functions */

    function calcSpacing(){
        areaX = (Math.abs(dwidth) - grommetSize) - (grommetMargin * 2);
        areaY = (Math.abs(dheight) - grommetSize) - (grommetMargin * 2);
        noOfGrommetX = Math.round(areaX / grommetSpacing);
        noOfGrommetY = Math.round(areaY / grommetSpacing);
        spaceBetweenGrommetsX = areaX / noOfGrommetX;
        spaceBetweenGrommetsY = areaY / noOfGrommetY;
    }

    if (grommetSpacing === "about"){
        alert("Grommetize " + grommetizeVersion + ". hello Tahir");
    } else if (grommetSpacing != null && grommetSpacing != 0) {
        grommetSpacing *= 72;
        if (grommetSpacing === parseInt(grommetSpacing, 10)) {

            // Create template layer
            var printMarksLayer = idoc.artLayers.add();
            printMarksLayer.name = "Grommets";

            function createGrommets(){
                calcSpacing();
                var spacingX = grommetMargin;
                var spacingY = grommetMargin;

                for (i = 0; i < noOfGrommetX + 1; i++) { // Top & Bottom Grommets
                    grommetMarkT = printMarksLayer.pathItems.ellipse( -(spacingY), spacingX, 
                    grommetSize, grommetSize );
                    grommetMarkT.fillColor = grommetMarkFillColor;
                    grommetMarkT.strokeColor = grommetMarkStrokeColor;
                    grommetMarkT.strokeWidth = "1";
                    grommetMarkB = printMarksLayer.pathItems.ellipse( -(spacingY + areaY), 
                    spacingX, grommetSize, grommetSize );
                    grommetMarkB.fillColor = grommetMarkFillColor;
                    grommetMarkB.strokeColor = grommetMarkStrokeColor;
                    grommetMarkB.strokeWidth = "1";
                    spacingX += spaceBetweenGrommetsX;
                }
                spacingX = grommetMargin;
                spacingY = grommetMargin + spaceBetweenGrommetsY;


                if (sideGrommets == true) {
                    for (i = 0; i < noOfGrommetY - 1; i++) 
                    { // Left & Right Grommets
                        grommetMarkL = printMarksLayer.pathItems.ellipse( -(spacingY), spacingX, 
                        grommetSize, grommetSize );   //error is here
                        grommetMarkL.fillColor = grommetMarkFillColor;
                        grommetMarkL.strokeColor = grommetMarkStrokeColor;
                        grommetMarkL.strokeWidth = "1";
                        grommetMarkR = printMarksLayer.pathItems.ellipse( -(spacingY), spacingX + 
                        areaX, grommetSize, grommetSize );
                        grommetMarkR.fillColor = grommetMarkFillColor;
                        grommetMarkR.strokeColor = grommetMarkStrokeColor;
                        grommetMarkR.strokeWidth = "1";
                        spacingY += spaceBetweenGrommetsY;
                    }
                }
            }

            createGrommets();

            function createProductionGuides(){
                innerGuide=null,
                innerGuide = idoc.pathItems.rectangle(0,0,dwidth,dheight);
                innerGuide.fillColor = noColor;
                innerGuide.strokeColor = black;
                innerGuide.strokeWidth = ".5";
                innerGuide.strokeDashes = [];

                outterGuide=null,
                outterGuide = idoc.pathItems.rectangle(0 + 72,0 - 72,dwidth + (72 * 2),dheight + (72 * 2));
                outterGuide.fillColor = noColor;
                outterGuide.strokeColor = black;
                outterGuide.strokeWidth = ".5";
                outterGuide.strokeDashes = [];
            }

            createProductionGuides();
            // Lock Template Layer
            printMarksLayer.locked = true;
            printMarksLayer.printable = true;

        } else {
            alert("Hello Tahir Please input a valid numeric entry for grommet spacing.\nMust be a value greater than 0.")
        }
    } else if (grommetSpacing != null || grommetSpacing != ''){
        // Do nothing.
    } else {
        alert("Hello Tahir Please enter a valid entry.")
    }
}
else{    
    alert ("there are no open documents");    
}
EN

Stack Overflow用户

发布于 2019-05-14 20:40:24

你混合了Photoshop和Illustrator DOM: Photoshop没有pathItems.ellipsepathItems.rectangle方法。检查Photoshop Scripting Reference以查找特定的方法。您可以使用此代码段在Photoshop中创建矩形或椭圆路径:

代码语言:javascript
运行
复制
/**
 creates a new path or adds to an existing path
 example: createPath({
    addToPath: false, // will create a new path
    type: 'Rctn', //'Elps' for ellipse
    top: 50,
    left: 50,
    bottom: 150,
    right: 150
 })
 */
function createPath(data)
{
    if (data == undefined) return false;
    data.addToPath == undefined && data.addToPath = false;
    data.type == undefined && data.type = 'Rctn'; //'Elps';

    var desc10 = new ActionDescriptor();
    var ref4 = new ActionReference();
    if (data.addToPath)
        ref4.putEnumerated(cTID('Path'), cTID('Ordn'), cTID('Trgt'));
    else
        ref4.putProperty(cTID('Path'), cTID('WrPt'));


    desc10.putReference(cTID('null'), ref4);
    var desc11 = new ActionDescriptor();
    desc11.putUnitDouble(cTID('Top '), cTID('#Pxl'), data.top);
    desc11.putUnitDouble(cTID('Left'), cTID('#Pxl'), data.left);
    desc11.putUnitDouble(cTID('Btom'), cTID('#Pxl'), data.bottom);
    desc11.putUnitDouble(cTID('Rght'), cTID('#Pxl'), data.right);
    desc10.putObject(cTID('T   '), cTID(data.type), desc11);
    executeAction(cTID(data.addToPath ? 'AddT' : 'setd'), desc10, DialogModes.NO);

    function cTID(s)
    {
        return app.charIDToTypeID(s);
    };

    function sTID(s)
    {
        return app.stringIDToTypeID(s);
    };

}; // end of createPath()
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56125793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档