X9 script de sélection de calque

Les problèmes visibles et identifiés, et les autres...
Règles du forum
Important : Indiquez la version de PaintShop Pro dans le titre du sujet.
Exemple : PSPX7 problème d'affichage de la palette couleur
Répondre
Avatar du membre
fs999
entraideur doctorant
entraideur doctorant
Messages : 105
Enregistré le : 19 sept. 2015, 21:58
Sexe : Homme
Localisation : Luxembourg
Système d'exploitation : Windows 10
Système d'exploitation 64 bits : Oui
Version de PaintShop Pro : 2018 64 bits

X9 script de sélection de calque

Message par fs999 » 21 déc. 2016, 23:05

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...
X9 Ultimate rocks ! 2018 a little bit less...

Avatar du membre
Zen-Luck
entraideur amiral
entraideur amiral
Messages : 2535
Enregistré le : 11 juil. 2015, 01:15
Sexe : Homme
Localisation : Belgique
Système d'exploitation : Windows 10
Système d'exploitation 64 bits : Oui
Version de PaintShop Pro : 2018 64 bits
Contact :

Re: X9 script de sélection de calque

Message par Zen-Luck » 22 déc. 2016, 23:12

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é...
PSP Ultimate installés en 32 et 64 bit : X7, X8, X9 et 2018.

Avatar du membre
fs999
entraideur doctorant
entraideur doctorant
Messages : 105
Enregistré le : 19 sept. 2015, 21:58
Sexe : Homme
Localisation : Luxembourg
Système d'exploitation : Windows 10
Système d'exploitation 64 bits : Oui
Version de PaintShop Pro : 2018 64 bits

Re: X9 script de sélection de calque

Message par fs999 » 30 déc. 2016, 22:21

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...
X9 Ultimate rocks ! 2018 a little bit less...

Avatar du membre
Zen-Luck
entraideur amiral
entraideur amiral
Messages : 2535
Enregistré le : 11 juil. 2015, 01:15
Sexe : Homme
Localisation : Belgique
Système d'exploitation : Windows 10
Système d'exploitation 64 bits : Oui
Version de PaintShop Pro : 2018 64 bits
Contact :

Re: X9 script de sélection de calque

Message par Zen-Luck » 31 déc. 2016, 01:09

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...
PSP Ultimate installés en 32 et 64 bit : X7, X8, X9 et 2018.

Avatar du membre
fs999
entraideur doctorant
entraideur doctorant
Messages : 105
Enregistré le : 19 sept. 2015, 21:58
Sexe : Homme
Localisation : Luxembourg
Système d'exploitation : Windows 10
Système d'exploitation 64 bits : Oui
Version de PaintShop Pro : 2018 64 bits

Re: X9 script de sélection de calque  

Message par fs999 » 02 janv. 2017, 17:41

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' )
X9 Ultimate rocks ! 2018 a little bit less...

Répondre