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