ChyronHego Forums  

Go Back   ChyronHego Forums > International > ChyronHego en Français

ChyronHego en Français Forum pour les utilisateurs de langue française.

Reply
 
Thread Tools Display Modes
  #1  
Old 06-21-2010, 12:43 PM
Arsene's Avatar
Arsene Arsene is offline
 
Join Date: Jun 2010
Location: Paris (France)
Posts: 10
Smile Quelques macros en vrac

Bonjour,
Voici quelques lignes de code qui vous permettrons de fabriquer de jolies macro.


'Récupère la position en X d'un template :
Taille = ActiveCanvas.Scene.GetTemplate(0).Rect.right

'Affiche le contenu d'une variable ou un texte dans une boite de dialogue
msgbox Variable
'ou
msgbox "Affiche un texte"

'LIVE
ActiveCanvas.Selection.Toggle "Duet Render", true

'OFFLINE
ActiveCanvas.Selection.Toggle "Duet Render", false

'Affiche rapidement un FrameBuffer
ActiveFrameBuffer(1)

'Affiche ou non un calque
ActiveCanvas.Scene("Texte A").Visible = True
ActiveCanvas.Scene("Texte A").Visible = False

'Modifie la valeur d'un template par un chiffre, une variable ou du texte
ActiveCanvas.Scene.SelectedTemplate(0).text = 0
ActiveCanvas.Scene.SelectedTemplate(0).text = NewValeur
ActiveCanvas.Scene.SelectedTemplate(0).text = "Nouveau texte"

'Modifie l'adresse d'une image
ActiveCanvas.Scene.Element("LOGO").Element(0).File name = "C:\Lyric\Projet\Images\Logo.tga"

'Enregistre une page dans un dossier spécifique
Lyric.SaveAs("C:\Lyric\Projet\Messages\00000001.ly r")

'Efface un message
Lyric.Message 101
ActiveCanvas.Selection.Execute("DeleteMessage")

'Commandes classiques
Lyric.Message 10
Lyric.Read
ActiveCanvas.Scene.Play PlayOutput, PlayWait
Lyric.AltRecord
ActiveCanvas.Scene.Erase(EraseScenes)
ActiveCanvas.Selection.Execute("Duet Transfer")

'Actions sur un timer
ActiveCanvas.scene.element("Timer 1").Element(0).Action ("Start")
ActiveCanvas.scene.element("Timer 1").Element(0).Action ("Reset")

'Pour modifier les coordonnées en X Y Z ainsi qu'en rotation d'un calque à un keyframe précis
ActiveCanvas.Scene.Select "Mask"
With ActiveCanvas.Scene.ActiveObject
.KeyFrame kfZRot, 69, varAngle
End With
ActiveCanvas.Scene.Select "Group BLEU"
With ActiveCanvas.Scene.ActiveObject
.KeyFrame kfYPos, 78, varHaut1
End With
ActiveCanvas.Scene.Select "Group ROUGE"
With ActiveCanvas.Scene.ActiveObject
.KeyFrame kfYPos, 78, varHaut2
End With

'Actions sur les variables
varA="texte 1"
varB="texte 2"
varC=varA + " et " + varB
'Ca donnera varC = "texte 1 et texte 2"

'Et puis un dernier truc, la valeur de pi est (4*Atn(1))/180)

Des soucis ?
arsenethouvenin at gmail dot com
Reply With Quote
  #2  
Old 07-28-2010, 12:15 PM
Nordine Nordine is offline
 
Join Date: Jan 2007
Posts: 20
Default

Merci Arsène !

Appel à tous les autres, n'hésitez pas à poster vos Macros !
Reply With Quote
  #3  
Old 08-23-2010, 08:52 PM
Arsene's Avatar
Arsene Arsene is offline
 
Join Date: Jun 2010
Location: Paris (France)
Posts: 10
Smile Encore quelques macros

Tout d'abord je corrige le 1er post
'Pour actions sur les variables
varA="texte 1"
varB="texte 2"
varC=varA + " et " + varB
'Ca donnera varC = "texte 1 et texte 2"

Il vaut mieux utiliser :
varC=varA & " et " & varB
Le symbole + s'utilise pour les nombres, vous risquez d'avoir des soucis avec des caractères.
Autres symboles pour les opérations classiques :
- : soustraction
/ : division
* : multiplication
^ : puissance
. : virgule
cos(chiffre) sin(chiffre) tan(chiffre) en degrès


Quelques fonctions pratiques :
inStr(variable,"caractère")
> Donne la position d'un caractère dans un texte ou une variable
Len(variable)
> Donne la taille d'une variable en nombre de caractère
Now
> Donne la date et l'heure actuelle


'Mettre à jour le contenu d'un crawl ou un d'une zone de texte avec un fichier texte simple sur une ligne
ActiveCanvas.Scene.Element("2D Crawl 1").Update 0, 2, 1, "C:\Lyric\generique.txt"
ActiveCanvas.Scene.Element("2D Text 1").Update 0, 2, 1, "C:\Lyric\generique.txt"


'Ajouter un temps d'attente
Wait(500) pour 20sec (environs)
Wait(1000) pour 40sec (environs)


'Mise à jour de l'adresse d'un template : le classeur, la colonne ou la ligne
ActiveCanvas.Scene.SelectedTemplate(0).DBLink.Tabl e="Classeur1$"
ActiveCanvas.Scene.SelectedTemplate(0).DBLink.Fiel d="F1"
ActiveCanvas.Scene.SelectedTemplate(0).DBLink.Reco rdNumber=1
ActiveCanvas.Scene.UpdateDBLinkFields


Et un dernier truc que je viens de trouver :
'Pour mettre à jour la Font dans un template
A faire avant :
- La fenêtre Template Properties doit être ouverte
- Votre Font doit avoir un raccourcis clavier de type ALT + SHIFT

PHP Code:
ActiveCanvas.Scene.SelectedTemplate(0).SetActive
Lyric
.ActivateFrame "Template Properties"
WshShell.SendKeys "%+1"
Explications :
Ca active le template 0
Ca active le 2D Text Template
Ca simule l'appuie des touches ALT(%) + SHIFT(+) + 1


A plus tard
Arsène Thouvenin
Reply With Quote
  #4  
Old 05-28-2011, 08:56 AM
Arsene's Avatar
Arsene Arsene is offline
 
Join Date: Jun 2010
Location: Paris (France)
Posts: 10
Default

Macro très simple mais très utile pour rajouter 1 à une valeur de template :

ActiveCanvas.Scene.SelectedTemplate(0).text = ActiveCanvas.Scene.SelectedTemplate(0).text+1

Il suffit ensuite de modifier les deux 0 par la valeur du template à changer.

Pour enlever 1 :

ActiveCanvas.Scene.SelectedTemplate(0).text = ActiveCanvas.Scene.SelectedTemplate(0).text-1

Adaptable évidemment dans tous les sens.

Par exemple sur du tennis, vous pouvez même rajouter des conditions.
Modèle d'une condition en langage macro :

IF variable1="valeur" THEN
action1
ELSE
action2
END IF


ou

IF variable1="valeur" THEN
action1
END IF


Ce qui veut dire que si la variable1 a une certaine valeur on applique un bout de code, et si c'est faux, on applique un autre code (en option).

Pour le score de tennis, on va commencer par récupérer les valeurs des 2 templates de score :

ScoreA = ActiveCanvas.Scene.SelectedTemplate(0).text
ScoreB = ActiveCanvas.Scene.SelectedTemplate(1).text


On a créé 2 variables ScoreA et ScoreB auxquelles on a donné comme valeur l'intitulé du texte des template 0 et 1 du canvas en cours (on lit à l'envers en programmation).

Notre macro va servir à incrémenter automatiquement le score pour le joueur A.

IF ScoreA=0 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=15
END IF


Ce qui veut dire que si la valeur de ScoreA est de zéro, on lui donne la valeur de 15.
De même pour les prochaines valeurs :

IF ScoreA=15 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=30
END IF

IF ScoreA=30 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=40
END IF


En cas d'égalité à 40 partout, on va devoir interagir sur les 2 scores en cas de point gagné par le joueur A :

IF ScoreA=40 AND ScoreB=40 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text="Ad"
ActiveCanvas.Scene.SelectedTemplate(1).text=""
END IF


et

IF ScoreA="Ad" AND ScoreB="" THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=40
ActiveCanvas.Scene.SelectedTemplate(1).text=40
END IF



Et oui on peut avoir plusieurs conditions que l'on écrit à la suite avec des AND, des OR et des parenthèses.
Par exemple :

IF variable1<10 AND (variable2="bleu" OR variable2="rose") THEN
action1
END IF



Notre macro finale ressemblera à ça :

ScoreA = ActiveCanvas.Scene.SelectedTemplate(0).text
ScoreB = ActiveCanvas.Scene.SelectedTemplate(1).text

IF ScoreA=0 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=15
END IF
IF ScoreA=15 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=30
END IF
IF ScoreA=30 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=40
END IF
IF ScoreA=40 AND ScoreB=40 THEN
ActiveCanvas.Scene.SelectedTemplate(0).text="Ad"
ActiveCanvas.Scene.SelectedTemplate(1).text=""
END IF
IF ScoreA="" AND ScoreB="Ad" THEN
ActiveCanvas.Scene.SelectedTemplate(0).text=40
ActiveCanvas.Scene.SelectedTemplate(1).text=40
END IF


et pour la macro du JoueurB :

ScoreA = ActiveCanvas.Scene.SelectedTemplate(0).text
ScoreB = ActiveCanvas.Scene.SelectedTemplate(1).text

IF ScoreB=0 THEN
ActiveCanvas.Scene.SelectedTemplate(1).text=15
END IF
IF ScoreB=15 THEN
ActiveCanvas.Scene.SelectedTemplate(1).text=30
END IF
IF ScoreB=30 THEN
ActiveCanvas.Scene.SelectedTemplate(1).text=40
END IF
IF ScoreB=40 AND ScoreA=40 THEN
ActiveCanvas.Scene.SelectedTemplate(1).text="Ad"
ActiveCanvas.Scene.SelectedTemplate(0).text=""
END IF
IF ScoreB="" AND ScoreA="Ad" THEN
ActiveCanvas.Scene.SelectedTemplate(1).text=40
ActiveCanvas.Scene.SelectedTemplate(0).text=40
END IF



Si vous avez déjà compris tout ça, c'est que vous êtes prêt à passer à la vitesse supérieure.

à suivre donc...
Reply With Quote
  #5  
Old 11-25-2011, 01:57 PM
Arsene's Avatar
Arsene Arsene is offline
 
Join Date: Jun 2010
Location: Paris (France)
Posts: 10
Default Encore des astuces en vrac

Copie d'écran (PrintScreen) avec un clavier Duet
Alt + Fn + Erase
Copie d'écran de la fenêtre sélectionnée :
Ctrl + Alt + Fn + Erase

Ouvrir une macro rapidement en tapant uniquement un numéro de page
Enregistrez votre fichier de macro dans le dossier Messages dans le format lyric avec 8 chiffres (00001234.lyr par exemple).

Erase ce qui est en Output du FB en cours
ActiveCanvas.Scene.Erase(4)

Simule un ctrl+play rapide
ActiveCanvas.Scene.Play PlayOutput, 0

Lyric Pro
FrameBuffer(ActiveFrameBuffer).SceneByDescription( "Timer").Element("Timer 1").Element(0).Action "Start"
ou
FrameBuffer(2).SceneByName("Timer").Element("Timer 1").Element(0).Action("Stop")
et aussi
FrameBuffer(ActiveFrameBuffer).SceneByDescription( "Score Permanent")("CartonRouge REC").Visible = True
FrameBuffer(ActiveFrameBuffer).SceneByDescription( "Score Permanent")("CartonRouge REC").Element(0).Filename = "c:\CartonRouge2.tga"


Macro dans une page
Ctrl + Record avec la même page puis "Embedded Macro" coché

Connaitre le nombre de calque de la page
NbreCalque = ActiveCanvas.Scene.NodeCount

Changement de DataSource
'Nombre de template :
Max = 50
'Nouvelle DataBase :
NewDB = "FOOT anglais"
FOR i = 0 TO Max
varTable = ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Tabl e
varField = ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Fiel d
varRecordNumber = ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Reco rdNumber
ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Data Source = NewDB
ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Tabl e = varTable
ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Fiel d = varField
ActiveCanvas.Scene.SelectedTemplate(i).DBLink.Reco rdNumber = varRecordNumber
NEXT
ActiveCanvas.Scene.UpdateDBLinkFields

(supprimer les espaces au milieu des mots, c'est le forum qui les rajoute)

Transformer un numéro de page en nom de fichier lyric
Par exemple pour transformer 32 en 00000032.lyr
Ca peut servir pour un SaveAs :
page = 32
DossierRec = "D:\Projet\Messages\"
Taille=Len(page)
nbZero=8-Taille
Zero=""
For i=1 to nbZero
Zero="0" & Zero
next
Lyric.SaveAs(DossierRec & Zero & page & ".lyr")


C'est tout pour aujourd'hui
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -4. The time now is 01:29 AM.


Copyright 2015 ChyronHego Corporation