Book a Demo

Author Topic: export a diagram as png (delphi)  (Read 4233 times)

elmo

  • EA Novice
  • *
  • Posts: 1
  • Karma: +0/-0
  • !
    • View Profile
export a diagram as png (delphi)
« on: November 14, 2006, 09:36:40 am »
Hi,

I want to export diagrams out of a EA to png (using delphi).

... like Menu/Diagram/SaveImageToFile [Strg+T]

I found this:

IDProject.PutDiagramImageToFile();

Then I tried to find the diagram guids.

I did ...

sEAFile := 'test.EAP';
foRepository := TRepository.Create(nil);
if foRepository.OpenFile(sEAFile) then begin
 IDProject := foRepository.GetProjectInterface;
 IDProject.LoadProject(S_EA_FILE);
 sEnumViews := IDProject.EnumViews;
 foDom := getDom(SLIBXML);
 foDoc := foDom.createDocument('','',nil);
 if (foDoc as IDOMPersist).loadxml(sEnumViews) then begin
   writeln('xml is ok');
   nlViews := foDoc.getElementsByTagName('View');
   for i := 0 to nlViews.length-1 do begin
       writeln('view '+IntToStr(i));
       nView := nlViews;
       nName := nView.firstChild.firstChild;
       nGUID := nView.lastChild.firstChild;
       writeln('name: '+nName.nodeValue);
       writeln('guid: '+nGUID.nodeValue);
       writeln(IDProject.EnumDiagrams(nGUID.nodeValue));
   end;
 end;
end;
foRepository.Free;

Can someone show me the way through this jungle of projects, enums, views, packages and guids ?

cu, Elmo.

Aaron B

  • EA Administrator
  • EA User
  • *****
  • Posts: 941
  • Karma: +18/-0
    • View Profile
Re: export a diagram as png (delphi)
« Reply #1 on: November 14, 2006, 05:00:59 pm »
I don't know about Delphi, but something like the following VB function should do what you want:

Code: [Select]
Public Function ExportAllDiagrams(ByRef proj As EA.Project, ByRef sPath As String, ByRef obj As Object)
   Dim elem As EA.element, subelem As EA.element
   Dim pkg As EA.Package, subpkg As EA.Package
   Dim diag As EA.Diagram
   
   For Each diag In obj.Diagrams
       proj.PutDiagramImageToFile diag.DiagramGUID, sPath & diag.DiagramGUID & ".png", 1
   Next
   
   Select Case obj.ObjectType
   Case otPackage
       Set pkg = obj
       For Each subpkg In pkg.Packages
           ExportAllDiagrams proj, sPath, subpkg
       Next
       For Each subelem In pkg.Elements
           ExportAllDiagrams proj, sPath, subelem
       Next
   Case otElement
       Set elem = obj
       For Each subelem In elem.Elements
           ExportAllDiagrams proj, sPath, subelem
       Next
   End Select
   
End Function


Call using something like:
Code: [Select]
Call ExportAllDiagrams(repository.GetProjectInterface, "C:\tmp\export\", repository.Models.GetAt(0))

Hope this helps :)