2016-05-18 4 views
0

Ich versuche, eine Legende zu einem Digram teilweise folgende Frage hinzuzufügen: Enterprise Architect scripting with java - add CustomProperty, aber ich habe kein Glück, eine sichtbare Legende auf meinem Diagramm zu bekommen. Hier ist mein Code:Enterprise Architect Skripting mit Javascript - Hinzufügen einer Legende zu einem Diagramm

function addLegend() 
{ 
    Repository.EnsureOutputVisible("Script"); 
    Repository.ClearOutput("Script"); 
    var pkg as EA.Package; 

    pkg = Repository.GetTreeSelectedPackage(); 
    elements = pkg.Elements; 
    var legend = elements.AddNew('Diagram Legend', 'Text'); 

    legend.Subtype = 76; 
    legend.Update(); 
    elements.Refresh(); 
    var diagram as EA.Diagram; 

    diagram = Repository.GetDiagramByID(10); 
    Session.Output(diagram.Name); 
    diagramObjects = diagram.DiagramObjects; 


    diagramObject = diagramObjects.AddNew("l=100; r=100; t=100; b=500;", ""); 
    diagramObject.ElementID = legend.ElementID; 
    diagramObjects.Refresh(); 
    diagram.Update(); 
} 

` Wie gesagt keine Legende angezeigt wird - jede Hilfe dankbar. Meine EA-Version ist 12.0.

+0

l = 100; R = 100 bedeutet, dass Sie eine Breite von Null sind angibt. Versuche r = 200. – Uffe

+0

Ja stimme zu, aber die angegebene Größe hat keine Auswirkungen auf das Ergebnis, tatsächlich macht der Code von Geert es funktioniert. Ändern des r = zu z.B. 1000 verschiebt einfach die Legende nach rechts - anscheinend wird die Größe nicht durch die Parameter gesteuert, die an 'AddNew.' geliefert werden, sondern an die Größe des Titels –

Antwort

1

Sie sparen nicht neu erstellten DiagramObject mit einem Aufruf an Update() und Sie müssen nicht um diese Anrufe Refresh()

Der Aufruf das Diagramm auch zum Verhängnis könnte aktualisieren werden, was auch immer Sie versuchen, das zu ändern Diagramm. Versuchen Sie es mit dem folgenden leicht veränderten Codes (ungetesteten)

function addLegend() 
{ 
    Repository.EnsureOutputVisible("Script"); 
    Repository.ClearOutput("Script"); 
    var pkg as EA.Package; 

    pkg = Repository.GetTreeSelectedPackage(); 
    elements = pkg.Elements; 
    var legend = elements.AddNew('Diagram Legend', 'Text'); 

    legend.Subtype = 76; 
    legend.Update(); 
    var diagram as EA.Diagram; 

    diagram = Repository.GetDiagramByID(10); 
    Session.Output(diagram.Name); 
    diagramObjects = diagram.DiagramObjects; 


    diagramObject = diagramObjects.AddNew("l=100; r=100; t=100; b=500;", ""); 
    diagramObject.ElementID = legend.ElementID; 
    diagramObject.Update(); 
} 
+0

Danke Geert, deine Lösung funktioniert, macht die Argumente zu' Elements.AddNew() ' und 'DiagramObjects.AddNew()' haben irgendeine Bedeutung und wenn ja, sind sie irgendwo dokumentiert? –

+0

Es gibt einige Dokumentation, aber nicht viel. Siehe http://sparxsystems.com/enterprise_architect_user_guide/12.1/automation_and_scripting/collection.html –

Verwandte Themen