Page 1 sur 1

X9 script de sélection de calque

Posté : 21 déc. 2016, 23:05
par fs999
Bonsoir,

Je viens de m'apercevoir qu'il y a un bug dans les scripts pour sélectionner un calque.

Voilà ce que propose le Corel PaintShop Pro Scripting guide :

Ce fragment de code va permettre de sauvegarder le calque actif et de sélectionner tous les calques en partant du bas, puis de sélectionner le calque de départ :

Code : Tout sélectionner

def Do(Environment):
    # get the path from the bottom from the active layer so we can restore it when done
    Props = App.Do( Environment, 'ReturnLayerProperties' )
    PathBack = Props[ 'Path' ]
    # start by selecting the bottommost layer in the image.
    App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } )
    FoundLayer = True
    while FoundLayer == True:
         LayerName = GetCurrentLayerName( Environment, App.TargetDocument)
         # go to the next layer
         FoundLayer = App.Do( Environment, 'SelectNextLayer' )
     # now that the loop is done, select the bottom layer and then
     # use the pathback to restore the layer that was active when we started
     App.Do( Environment, 'SelectLayer',  { 'Path': (9999,-9999, [], False ) } )
    App.Do( Environment, 'SelectLayer', { 'Path': PathBack } )
C'est l'élément App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) qui ne fonctionne pas. Il devrait sélectionner le calque le plus bas mais à l'exécution le calque actif est désélectionné et la commande GetCurrentLayerName( Environment, App.TargetDocument) renvoie le nom du calque précédemment actif...

Si quelqu'un a une idée pour contourner cette erreur...

Re: X9 script de sélection de calque

Posté : 22 déc. 2016, 23:12
par Zen-Luck
Je ne comprends pas ce que veut dire le premier commentaire du script:
# get the path from the bottom from the active layer so we can restore it when done
Si au départ (au moment du lancement du script) le calque actif est le premier en haut ou le dernier en bas, l'exécution du script produit-elle un résultat différent ? N'ai pas testé...

Re: X9 script de sélection de calque

Posté : 30 déc. 2016, 22:21
par fs999
C'est pour pouvoir sauvegarder le calque sélectionné au départ (avant l'exécution du script).

Le script fonctionne si le dernier calque est sélectionné.
Donc App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) ne le fait pas...

Re: X9 script de sélection de calque

Posté : 31 déc. 2016, 01:09
par Zen-Luck
fs999 a écrit :C'est pour pouvoir sauvegarder le calque sélectionné au départ (avant l'exécution du script).

Le script fonctionne si le dernier calque est sélectionné.
Donc App.Do( Environment, 'SelectLayer', { 'Path': (9999,-9999, [], False ) } ) ne le fait pas...
Et si on écrit +9999,-9999 au lieu de 9999,-9999 (ajouter le signe +)
ça fonctionne ?
Dans Excel, il faut parfois entrer certaines valeurs avec le signe +
Je me suis dit que c'était peut-être simplement une formulation non reconnue qui posait problème dans ce script...

Re: X9 script de sélection de calque

Posté : 02 janv. 2017, 17:41
par fs999
Non ça ne change rien. Mais je pense avoir trouvé. 9999 ou -9999 ne fonctionne pas.

Je fais une itération jusqu'au premier calque et ça marche, il faut naturellement revenir en arrière quand il ne trouve plus de calque :

Code : Tout sélectionner

      # Vector Selection Update
      #App.Do( Environment, 'VectorSelectionUpdate', {
      #       'Path': (+9999,-9999,[],False),
      #       'Type': App.Constants.ObjectSelection.Select 
      #} )
      FoundLayer = True
      while FoundLayer == True: 
        FoundLayer = App.Do( Environment, 'SelectPreviousLayer' )
      FoundLayer = App.Do( Environment, 'SelectNextLayer' )