Ces quelques lignes de code en Visual Basic Script permettent d’exporter tous les diagrammes associés à un modèle (physique, logique ou conceptuel) sous la forme de fichiers d’images.
Compatible avec PowerDesigner/PowerAMC 16.5
'******************************************************************************
'* Nom du fichier : EXPORT_IMAGE.vbs
'* Définition : Export les diagrammes sous forme d'image JPEG
'* Modèle: Modèle de données physique (PDM), logique (LDM) et conceptuel (CDM)
'* Objets: Diagram
'* Auteur: Benoît Le Nabec
'* URL : http://www.Powerd911.guru
'* Créé: 2015-01-01
'* Version: 1.0
'******************************************************************************
Option Explicit
dim model
On Error Goto 0
'Obtenir le modèle actif courant
set model = activemodel
If model is nothing then
MsgBox "Il n'y a pas de modèle actif"
else
Creer_Image (model)
end if
'******************************************************************************
'* Nom de la fonction : Creer_Image
'* Définition : Export les diagrammes sous forme d'image JPEG
'* Modèle: Modèles de données physique (PDM), logique (LDM) et conceptuel (CDM)
'* Objets: Diagram
'* Auteur: Benoît Le Nabec
'* URL : http://www.Powerd911.guru
'* Créé: 2015-01-01
'* Version: 1.0
'******************************************************************************
Private Sub Creer_Image(model)
Dim aDiag
dim outputPath
dim package
dim fileExtension
dim diaglist
dim diagramlist
dim modelepatern
dim correspondances
dim fini
fini = False
' On créer un objet RegExp (Regular Expression)
Set modelepatern=new regexp
modelepatern.pattern="^\." ' On désire que le contenu de la chaine débute toujours par un "."
modelepatern.global=false ' On ne recherche pas le pattern plusieurs fois dans la chaîne
' On boucle tant que la chaine de caractère ne possède pas le bon format
Do While Not fini
' On demande à l'utilisateur d'inscrire le format. Par défaut le programme propose ".jpg"
fileExtension = InputBox("Acronyme de l'extension des fichiers images (.bmp, .emf, .jpg, .jpeg, .png) :", "Acronyme de l'extension", ".jpg")
' Si l'utilisateur appuie sur le bouton annuler on termine l'exécution du programme
if IsEmpty(fileExtension) then
exit sub
else
' on compare la chaîne lue au modèle
Set correspondances=modelepatern.execute(fileExtension)
' Si la chaine a le bon format on pourra sortir de la boucle
If correspondances.count<>0 Then
' Est-ce que le nom de l'extension est valide?
if StrComp(fileExtension, ".bmp") and StrComp(fileExtension, ".emf") and StrComp(fileExtension, ".jpg") and StrComp(fileExtension, ".jpeg") and StrComp(fileExtension, ".png") then
Output "Le nom de l'extension n'est pas valide"
fini = False
else
fini = True
end if
else
Output "Le nom de l'extension ne débute pas par un '.'"
fini = False
end if
end if
Loop
' On demande à l'utilisateur de préciser le nom du répertoire
outputPath = InputBox("Nom du répertoire ou seront conservé les images", "Nom du répertoire", "C:\temp\")
' Si l'utilisateur appuie sur le bouton annuler on termine l'exécution du programme
if IsEmpty(outputPath) then
exit sub
end if
' On affiche les informations que l'utilisateur a fourni
MsgBox "Création des fichiers d'images sous le répertoire : " + outputPath + VbCrlf + "avec l'extension : " + fileExtension
' On affiche au niveau de la trace le nom du modèle
output "Nom du modèle : " + model.name
'model.DisplayMetaModelHelp()
' On associe à la variable diaglist la liste des diagrammes selon le type de modèle
if model.IsKindOf (PdPDM.cls_Model) then
set diaglist = model.physicaldiagrams
elseif model.IsKindOf (PdLDM.cls_Model) then
set diaglist = model.logicaldiagrams
elseif model.IsKindOf (PdCDM.cls_Model) then
set diaglist = model.conceptualdiagrams
end if
' On boucle tant que nous trouvons des diagrammes associés au modèle courant
For Each aDiag In diaglist
' On affiche au niveau de la trace le nom du diagramme
output "Nom du diagramme : " + aDiag.name
' On affiche le facteur du zoom de l'image
output "Facteur du zoom : " + Cstr(adiag.Scale) + "%"
' On exporte l'image du diagramme
aDiag.ExportImage(outputPath+model.name+"."+aDiag.name+fileExtension)
Next
' On boucle tant que nous trouvons des package associés au modèle courant
For each package in model.packages
' On affiche au niveau de la trace le nom du package
output "Nom du package : " + package.name
' On associe à la variable diaglist la liste des diagrammes selon le type de modèle
if model.IsKindOf (PdPDM.cls_Model) then
set diaglist = package.physicaldiagrams
elseif model.IsKindOf (PdLDM.cls_Model) then
set diaglist = package.logicaldiagrams
elseif model.IsKindOf (PdCDM.cls_Model) then
set diaglist = package.conceptualdiagrams
end if
' On boucle tant que nous trouvons des diagrammes associés au package courant
For Each aDiag In diaglist
' On affiche au niveau de la trace le nom du diagramme
output "Nom du diagramme : " + aDiag.name
' On exporte l'image du diagramme
aDiag.ExportImage(outputPath+model.name+"."+package.name+"."+aDiag.name+fileExtension)
Next
Next
end sub
