Visio 2010 Надстройка - PullRequest
       51

Visio 2010 Надстройка

1 голос
/ 07 апреля 2011

Я пишу надстройку Visio 2010.Мне нужно обработать документ и проанализировать все объекты внутри него.

Сначала я получил текущий экземпляр Visio

        IVisio.Application app;

        object visioObject = Marshal.GetActiveObject("Visio.Application");
        app = visioObject as IVisio.Application;

Теперь, если

if (app.ActiveDocument != null)

Как мне получить все элементы активного документа?Как мне понять тип элемента, который я анализирую?Если этот элемент имеет тип Entity (Object реляционный), как мне получить доступ ко всем определениям столбцов?

Надеюсь, я очистил себя.

Спасибо за возможные советы!

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Я бы начал со справки по автоматизации Visio 2010, которую можно найти в Интернете по адресу:

http://msdn.microsoft.com/en-us/library/ee861526.aspx

Объектная модель Visio - довольно большой зверь, которому требуется время, чтобы понять и понять,Но все классы документированы в MSDN, поэтому вы сможете найти там ссылки, примеры и, возможно, даже дискуссионные форумы.

Документ состоит в основном из основных форм и страниц.Это оба контейнера для объектов Shape.А внутри фигур вы найдете форму с ее объектами Section, Row и Cell.У каждой ячейки есть формула и значение.

Есть и другие, но этого может быть достаточно, чтобы вы начали.

0 голосов
/ 01 августа 2011

Простым способом запуска может быть следующий модульный тест, который записывает все формы и имена в консоль:

[TestMethod]
public void testVisio()
{
    Microsoft.Office.Interop.Visio.Application visioApp = null;
    try
    {
        //Create a new instance of Visio
        visioApp = new Microsoft.Office.Interop.Visio.Application();
        // Show Visio
        visioApp.Visible = true;

        foreach (Page page in visioApp.ActiveDocument.Pages)
        {
            foreach (Shape shape in page.Shapes)
            {
                Console.WriteLine(String.Format("Page {0}: Shape-Name: {1}", page.Name, shape.Name));
            }
        }
    }
    finally
    {
        //Close started application again
        visioApp.Quit();
        Marshal.ReleaseComObject(visioApp);
        visioApp = null;
    }
}

Конечно, вы можете заменить visioApp.ActiveDocument ссылкой, которую вы уже упомянули.в вашем сообщении.

Более подробную информацию можно найти на MSDN, например, http://msdn.microsoft.com/en-us/library/gg617997.aspx, и обычно я рекомендую просто немного поиграть, и вы найдете нужные объекты, например, фигуры имеют ячейки, где пользователь- свойства могут быть сохранены и т. д. Или, если нет, вы можете задать более конкретный вопрос.

...