Toon posts:

[JS] Onderdeel van een pad vervangen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dit moment ben ik in javascript aan het programmeren voor Photoshop.

ik heb het bijna af, maar zit nog met 1 probleem. en als programmeernoob kan ik wel wat hulp gebruiken.

ik heb een variabele met daarin bijvoorbeeld het pad v/fotos/shoot/PSD/ochtend/
nu wil ik graag het pad laten aanpassen naar: v/fotos/shoots/Renders/ochtend/

op dit moment gebruik ik de volgende code hiervoor

//=============Find Current Documents path================//
var CurrentPath = activeDocument.path;
//=============Make a new path================//
var NewPath = CurrentPath.path.replace("PSD", "Renders");

Echter als ik dan een alert toevoeg krijg ik bij Newpath = v/fotos/shoots/Renders
hij laat dus alles wat na PSD kwam, weg.

bij Currentpath zie ik wel v/fotos/shoots/PSD/ochtend/, het volledige pad dus.

iemand enig idee om enkel het stukje PSD te vervangen en de rest met rust te laten?

Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
Klopt het dat je CurrentPath.path gebruikt?

Dat zou betekenen dat je
JavaScript:
1
activeDocument.path.path.replace("PSD", "Renders");

aanroept?

Acties:
  • 0 Henk 'm!

  • noes
  • Registratie: Augustus 2006
  • Niet online

noes

gek op benzine.

CurrentPath.path.replace() vervangen voor CurrentPath.replace(), denk dat dat m is.

K54/R1250RS | K48/K1600GT | E61/550i


Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
noes schreef op vrijdag 16 september 2011 @ 10:36:
CurrentPath.path.replace() vervangen voor CurrentPath.replace(), denk dat dat m is.
Op zich zou CurrentPath.path.replace() een 'call of replace on undefined' terug moeten geven..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bang dat het veel dieper zit, en aan photoshop ligt.
als ik op w3schools mijn code test, dan klopt de output wel.

maar in photoshop geeft die een andere output aan, en vergeet hij alles na de Replace.

de Currentpath.path.replace(); klopt, zonder "path" werkt de code namelijk niet.

Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
Is hetvolgende een optie?

JavaScript:
1
2
3
4
var CurrentPath = activeDocument.path;
CurrentPath = CurrentPath.path.split("PSD");

var NewPath = CurrentPath[0] + 'Renders' + CurrentPath[1];


Overigens blijft het raar dat de functie in Photoshop anders lijkt te werken..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SoaDmaggot schreef op vrijdag 16 september 2011 @ 10:29:
Klopt het dat je CurrentPath.path gebruikt?

Dat zou betekenen dat je
JavaScript:
1
activeDocument.path.path.replace("PSD", "Renders");

aanroept?
activeDocument.path.replace werkt ook, dus dat heb ik vervangen ipv de variabele CurrentPath.
Echter de fout blijft hetzelfde. Photoshop opent, wanneer ik activeDocument.path gebruik de juiste map
echter wanneer ik een replace gebruik, "vergeet" hij alles wat na de replace komt.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:10

MueR

Admin Tweakers Discord

is niet lief

Ik tik hem even naar het juiste forum

Programming >> Webdesign, Markup & Clientside Scripting

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SoaDmaggot schreef op vrijdag 16 september 2011 @ 10:50:
Is hetvolgende een optie?

JavaScript:
1
2
3
4
var CurrentPath = activeDocument.path;
CurrentPath = CurrentPath.path.split("PSD");

var NewPath = CurrentPath[0] + 'Renders' + CurrentPath[1];


Overigens blijft het raar dat de functie in Photoshop anders lijkt te werken..
Ik heb het geprobeert, maar nog steeds hetzelfe probleem.

ik heb een alert ingebouwd voor CurrentPath[0] en CurrentPath[1]
bij Currentpath[0] geeft hij inderdaad v/fotos/ aan.
Bij currentpath[1] geeft hij een blanco alert aan.

als ik hem test op w3schools werkt die prima

Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
Wat geven
JavaScript:
1
alert(activeDocument.path);

en
JavaScript:
1
alert(typeof activeDocument.path);


terug?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie hulp! ik ben er nu achter wat het probleem is.

de laatste knip (ochtend) word weergegeven als undefined. alleen in photoshop gebeurt dit.
het toevoegen van een map voor het knippen zorgt ervoor dat ochtend wel meegaat, en dat de nepmap undefined word.

heel erg bedankt!
het kan vast korter, maar dit werkt nu gelukkig.
JavaScript: filename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  
//=========== Lees het pad van het openstaande document uit, en voeg een extra map toe (extra map is nodig, door een bug in photoshop javascript===///
var CurrentPath = Folder (activeDocument.path + "/" + "nepfolder"); 
//=========== Knip het pad in verschillende stukjes=======//
CurrentPath = CurrentPath.path.split("/"); 
//=========== Vervang "PSD" met "Renders" in het pad//
var ReplacePath = CurrentPath[4].replace("PSD", "Renders");
//=========== Herbouw het pad uit alle knipsels=====//
var TempPath = Folder (CurrentPath[0] + '/' + CurrentPath[1] + '/' + CurrentPath[2] + '/' + CurrentPath[3] + '/' + ReplacePath + '/' + CurrentPath[5] + '/' + CurrentPath[6] + '/' + CurrentPath[7] + '/' + CurrentPath[8] + '/');
//========= haal alle undefined uit het huidige pad=======//
var NewPath = TempPath.path.replace(/undefined/gi, "");
//H========== Haal de huidige locatienaam op==========//
var CurrentFileName = app.activeDocument.name.replace(/\.[^\.]+$/, '');
//=============voeg exr toe aan de huidige locatienaam================//
var modifiedFileName = CurrentFileName + ".exr";

//============= Open de afbeelding met behulp van het gemaakte pad + de gemaakte naam======//
var id216 = charIDToTypeID( "Opn " );
    var laag1 = new ActionDescriptor();
    var id217 = charIDToTypeID( "null" );
    laag1.putPath( id217, new File(NewPath + modifiedFileName) );
executeAction( id216, laag1, DialogModes.NO );
Pagina: 1