[c#, COM] property verwacht array.

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 01-12 15:50
Ik ben momenteel bezig met een automatiserings script voor photoshop cs3.
Ik gebruik hiervoor com. En voor scripts in photoshop zijn er genoeg dingen te vinden. Echter allemaal zowat in javascript, logisch.

Nu werkt het grootste gedeelte van mijn applicatie al (dingen die ik wil doen in photoshop werken al vanuit mijn code etc.) Echter zit ik nog met 1 property die ik wil setten. Probeer ik dat, krijg ik de volgende exception:
FatalExecutionEngineError was detected
Message: The runtime has encountered a fatal error. The address of the error was at 0x7f4bb7a3, on thread 0x1084. The error code is 0xc0000005. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.
C#:
1
2
3
4
5
6
7
8
9
10
11
            //Positionering
            app.Preferences.RulerUnits = ps.PsUnits.psPercent;
            switch (gravity)
            {
               // Case 0 tot 6 verwijderd
                case 7: //middenonder
                    watermarklayer.TextItem.Position = new int[2] {50,100};
                    break;
                 //case 8 en 9 verwijderd
            }
            app.Preferences.RulerUnits = ps.PsUnits.psPixels;


De exception wordt opgeroepen in case 7 (enige case die momenteel doorlopen wordt).
Echter heb ik wel kunnen vinden wat het in javascript moet zijn:

JavaScript:
1
2
// select the text position - this can be an absolute value too, eg. (10,20) 
artLayerRef.textItem.position = new Array(docRef.width / 2, docRef.height *0.05); 


Uit de scripting reference haal ik dit:
Position Array
(UnitValue)
Read-write. The position of origin for the text. The
array must contain two values (unit value).
Tip: Setting the Position property is basically
equivalent to clicking the text tool at a point in the document to create the point of origin for
text.
Hoe krijg ik nu wel deze property geset, zonder dat ik een fatalexception krijg?

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik vermoed dat je geen int maar een single Unitvalue ofzo moet gebruiken... (Ik gok ook maar wat, maar het lijkt me iets in die richting)

[edit]
Note: For information about the UnitValue type, see the JavaScript Tools Guide.
>> Deze dus, pagina 211. Er wordt dus geen (array van) int(s) maar een (array van) UnitValue(s) verwacht.

Overigens staat dat ook gewoon in de quote die je aanhaalt:
Position Array (UnitValue)
Read-write. The position of origin for the text. The array must contain two values (unit value).

[ Voor 103% gewijzigd door RobIII op 15-05-2007 15:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 01-12 15:50
Ik heb allerlei types gebruikt. Maar het werkt niet
string, int, long, double, single.. Ik krijg in alle gevallen dezelfde error.

In de objectbrowser kom ik dit te zien:
object Position { set; get; }
Member of Photoshop.TextItem
En er is nergens een type te vinden die UnitValue heet.

[ Voor 42% gewijzigd door ThunderNet op 15-05-2007 15:41 ]

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
ThunderNet schreef op dinsdag 15 mei 2007 @ 15:37:
Ik heb allerlei types gebruikt. Maar het werkt niet
string, int, long, double, single.. Ik krijg in alle gevallen dezelfde error.
Lees mijn post nog eens ;) En die UnitValue is prima gedocumenteerd...
myVal = new UnitValue (12, "cm");
En daar dan een arraytje van ;)

[ Voor 34% gewijzigd door RobIII op 15-05-2007 15:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 01-12 15:50
Many of the JavaScript objects and methods use objects defined in ExtendScript, such as the File object,
the Folder object, and the UnitValue object. For that reason, using the .jsx extension for your script
files is preferable. For details of these and additional features, see the JavaScript Tools Guide CS3.
type UnitValue is dus niet beschikbaar binnen c#.

Of ik snap niet wat je me probeert duidelijk te maken :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?