Hinzufügen von Formen zu einem Neuen Visio-Dokument
Habe ich diesen code erstellt eine neue Visio-Dokument und fügt ein Rechteck hinzu. Es funktioniert, aber ich mag es nicht, um ein anderes Dokument zu Holen Sie sich die Meister-Kollektion von ihm. Das Problem ist das neue Dokument enthält eine leere Master-shape-Kollektion. Ich konnte Sie nicht finden, eine Methode der Document-Klasse zum hinzufügen von Formen, um die Meister-Sammlung und alle die Beispiele, die ich finden konnte, für das hinzufügen von Formen angenommen, dass Sie ein vorhandenes Dokument. Gibt es eine bessere Weise, das zu tun, was ich will?
//create the new application
Visio.Application va = new Microsoft.Office.Interop.Visio.Application();
//add a document
va.Documents.Add(@"");
//Visio.Documents vdocs = va.Documents;
//we need this document to get its Masters shapes collection
//since our new document has none
Visio.Document vu = vdocs.OpenEx(@"C:\Program Files (x86)\Microsoft Office\Office12\1033\Basic_U.vss", (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
//set the working document to our new document
Visio.Document vd = va.ActiveDocument;
//set the working page to the active page
Microsoft.Office.Interop.Visio.Page vp = va.ActivePage;
//if we try this from the Masters collection from our new document
//we get a run time since our masters collection is empty
Visio.Master vm = vu.Masters.get_ItemU(@"Rectangle");
Visio.Shape visioRectShape = vp.Drop(vm, 4.25, 5.5);
visioRectShape.Text = @"Rectangle text.";
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht - die Meister-Sammlung ist ReadOnly. Dokumente in der Regel beginnen Sie mit einem leeren Master collection. Die Sammlung wird aufgefüllt, indem die Meister aus einer Schablone Dokument.
Wenn Sie möchten, erstellen Sie ein neues Dokument mit einer pre-besiedelten Masters collection dann könnte man erstellen Sie Ihre eigene Vorlage (.vst) und dann als Basis für Ihr neues Dokument auf. Zum Beispiel:
Normalerweise würde man in einem Paket Schablonen und Vorlagen zusammen und dann immer Formen erstellen, indem Sie einen master von der jeweiligen Schablone-Dokument (.vss).
Meister haben auch eine MatchByName Eigenschaft. Löschen einer master-wenn diese Eigenschaft auf true gesetzt ist, werden von Visio überprüft zuerst, dass ein Meister das gleiche gibt es in der Zeichnung Dokument-Meister-Sammlung. Wenn es nicht eine Instanz der master abgelegt werden. Wenn nicht ein neuer master Hinzugefügt werden, basierend auf der original-Schablone. Haben Sie einen Blick auf diese zwei links für weitere Informationen:
Wenn Sie wirklich wollen, zu erstellen Sie Ihre eigenen Meister im code, Sie können zeichnen /löschen Sie Ihre eigenen shapes auf der Seite und benutzen Sie dann das Dokument.Drop-Methode hinzufügen, dass es die Meister-Sammlung.
Auch, wenn Sie wollen, zu einem Meister mit Namen, dann müssen Sie eine Schleife durch die Hauptsammlung, um zu überprüfen, dass es vorhanden ist, bevor Sie es verwenden.
Ich glaube, Sie finden dieses Online-Buch sehr nützlich : http://msdn.microsoft.com/en-us/library/aa245244(v=office.10).aspx