DIEDIT UNTUK KEJELASAN

Saya telah membuat skrip untuk InDesign untuk meningkatkan alur kerja saya.

Saya memilih gambar, lalu menjalankan skrip, yang berfungsi sebagai berikut:

  1. Salin gambar yang dipilih (untuk digunakan pada langkah #3).
  2. Menerapkan efek "gandakan" ke gambar yang dipilih.
  3. Tempel di tempat gambar asli (tanpa efek berganda).
  4. Mencari nama jalur photoshop tertentu (baik 'X', 'FCP', atau 'x').
  5. Menerapkan jalur pertama yang ditemukannya dan memperingatkan yang dipilih atau memperingatkan "tidak ada jalur yang valid" jika tidak ada yang tersedia.
  6. Script Diakhiri dengan gambar yang ditempelkan dipilih.

Semuanya berfungsi sebagaimana dimaksud; namun, saya ingin memilih KEDUA gambar (gambar dengan jalur kliping dan gambar dengan efek berlipat ganda) dan mengelompokkannya. Saya terjebak pada cara memilih kedua gambar.

Berikut kode aslinya (Saya bermaksud mengedit perintah salin dan tempel Yuri):

app.menuActions.item("$ID/Copy").invoke();

var myProperties = {  
    blendMode : BlendMode.MULTIPLY,  
    opacity : 100 
    };  
for (i=0; i<app.selection.length; i++)
{
try {
app.selection[i].images[0].transparencySettings.blendingSettings.properties = myProperties;  
    }catch(e){}
}
app.menuActions.item("$ID/Paste in Place").invoke();
for (j=0; j<app.selection.length; j++)
{
try {
    var myPathName = app.selection[0].images[0].clippingPath.photoshopPathNames; 
    var myPath = app.selection[0].images[0].clippingPath;
    function working() { 
        for (var i = 0; i < myPathName.length; i++) { 
        if (myPathName[i] === "X") {
            myPath.appliedPathName = myPathName[i];
            alert ("X path activated");
            return i; 
            } else if (myPathName[i] === "FCP") {
                myPath.appliedPathName = myPathName[i];
                alert ("FCP path activated");
                return i; 
            } else if (myPathName[i] === "x") {
                myPath.appliedPathName = myPathName[i];
                alert ("x path activated");
                return i; 
            }
        }
        alert ("No valid path exists");
    }
    working();
} catch (e) {}
}

Maaf jika itu bukan kode terbersih. Saya mulai belajar javascript di waktu luang saya dan ini adalah salah satu skrip pertama yang saya tulis.

1
atamus 21 September 2021, 23:29

2 jawaban

Jawaban Terbaik

Masih tidak yakin apakah saya memahami masalahnya dengan benar. Jika Anda perlu menambahkan beberapa item ke pilihan saat ini, itu dapat dilakukan dengan cara ini:

var item1 = app.selection[0]; // some selected item

app.paste(); // paste item which is selected now

item1.select(SelectionOptions.ADD_TO) // add the item1 to current selection

app.menuActions.itemByName("$ID/Group").invoke(); // group selected items

diedit untuk mengubah app.selected menjadi app.selection karena selected mengembalikan kesalahan

1
Yuri Khristich 22 September 2021, 21:50

Dengan bimbingan Yuri saya bisa menyelesaikan masalah saya. Saya harus mengatur ulang prosesnya sedikit untuk menjelaskan bagaimana saya menambahkan pilihan (mungkin saya tidak melakukannya tetapi itu masuk akal bagi saya dan ITU BEKERJA!). Berikut adalah kode terakhir untuk siapa saja yang tertarik.

//look for clipping path 'X', 'FCP', or 'x' and apply it
for (j=0; j<app.selection.length; j++)
{
try {
    var myPathName = app.selection[0].images[0].clippingPath.photoshopPathNames; 
    var myPath = app.selection[0].images[0].clippingPath;
    function working() { 
        for (var i = 0; i < myPathName.length; i++) { 
        if (myPathName[i] === "X") {
            myPath.appliedPathName = myPathName[i];
            alert ("X path activated");
            return i; 
            } else if (myPathName[i] === "FCP") {
                myPath.appliedPathName = myPathName[i];
                alert ("FCP path activated");
                return i; 
            } else if (myPathName[i] === "x") {
                myPath.appliedPathName = myPathName[i];
                alert ("x path activated");
                return i; 
            }
        }
        alert ("No valid path exists");
    }
    working();
} catch (e) {}
}
//copy image with clipping path
app.copy();

//remove clipping path
app.selection[0].images[0].clippingPath.clippingType = ClippingPathType.NONE; 

//apply Multiply blend mode
var myProperties = {  
    blendMode : BlendMode.MULTIPLY,  
    opacity : 100 
    };  
for (i=0; i<app.selection.length; i++)
{
try {
app.selection[i].images[0].transparencySettings.blendingSettings.properties = myProperties;  
    }catch(e){}
}

//paste in place and add to current selection
var clippedImage = app.selection[0];
app.pasteInPlace();
clippedImage.select(SelectionOptions.ADD_TO)

//group selected images
app.menuActions.itemByName("$ID/Group").invoke();

Apa yang terjadi dan bagaimana cara kerjanya? Pengguna memilih gambar dan menjalankan skrip

  1. Ini mencari jalur kliping untuk mencocokkan string tertentu.
  2. Pengguna diperingatkan ke jalur mana yang telah diterapkan atau jika tidak ditemukan kecocokan.
  3. Gambar disalin (untuk langkah 6).
  4. Jalur dihapus.
  5. Multiply blending mode diterapkan.
  6. Gambar yang disalin pada langkah 3 ditempel di tempatnya (dengan jalur kliping).
  7. Pilihan gambar yang ditempel ditambahkan ke pilihan saat ini (gambar dengan mode campuran berlipat ganda).
  8. Seleksi dikelompokkan.
2
atamus 22 September 2021, 21:47