VisualStudio .Net и MS Visio
От: bebabo Россия http://sites.google.com/site/ownmake/Home
Дата: 20.09.07 20:34
Оценка:
хочу написать в VisualStudio .Net плагин для Visio, который бы работал с диаграммами UML. и никак не могу разобраться — как получить доступ к данным Visio? к примеру, есть диаграмма UML описывающая класс — как "опросить" на С++ эту UML-фигуру?
Re: VisualStudio .Net и MS Visio
От: bnk СССР http://unmanagedvisio.com/
Дата: 21.09.07 02:54
Оценка:
Здравствуйте, bebabo, Вы писали:

B>хочу написать в VisualStudio .Net плагин для Visio, который бы работал с диаграммами UML. и никак не могу разобраться — как получить доступ к данным Visio? к примеру, есть диаграмма UML описывающая класс — как "опросить" на С++ эту UML-фигуру?


Никак. Visio не предоставляют данные модели для UML-диаграм.
Почти что FAQ в microsoft.public.visio.developer
FYI, на самом деле, UML в Visio реализован тоже как плагин.
Re[2]: VisualStudio .Net и MS Visio
От: bebabo Россия http://sites.google.com/site/ownmake/Home
Дата: 27.09.07 19:45
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Никак. Visio не предоставляют данные модели для UML-диаграм.

bnk>Почти что FAQ в microsoft.public.visio.developer
bnk>FYI, на самом деле, UML в Visio реализован тоже как плагин.

наверное я не совсем правильно сформулировал вопрос. меня интересуют не данные объекта, для которого рисуется диаграмма,
а чтение и анализ самой диаграммы. в принципе, я уже научился, как опрашивать фигуры и извлекать из них данные. к примеру, если есть фигура State — я могу получить тип этой фигуры, ее название (вписанное в фигуру), но никак не получается извлечь такие данные, как EntryActions... если вдруг кто знает — буду очен признателен )
Re[3]: VisualStudio .Net и MS Visio
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.09.07 06:02
Оценка: 3 (1)
Здравствуйте, bebabo, Вы писали:

B>Здравствуйте, bnk, Вы писали:


bnk>>Никак. Visio не предоставляют данные модели для UML-диаграм.

bnk>>Почти что FAQ в microsoft.public.visio.developer
bnk>>FYI, на самом деле, UML в Visio реализован тоже как плагин.

B>наверное я не совсем правильно сформулировал вопрос. меня интересуют не данные объекта, для которого рисуется диаграмма,

B>а чтение и анализ самой диаграммы. в принципе, я уже научился, как опрашивать фигуры и извлекать из них данные. к примеру, если есть фигура State — я могу получить тип этой фигуры, ее название (вписанное в фигуру), но никак не получается извлечь такие данные, как EntryActions... если вдруг кто знает — буду очен признателен )

Ну дак я про то же и говорю. Это и есть "данные модели". Под "Данными модели" я имел в виду все практически все, что не отображается явно на диаграмме, но существует (для UML). Visio UML addon эти данные хранит в бинарном виде в собственном (проприетарном, недокументированном) формате. Физически они хранятся в DocumentStencil-е — заводится отдельный скрытый "мастер" (который называется "UML"), в который все эти данные как BLOB все и сливаются. Где-то попадался даже анализ данных этого BOLB-а, но в общем это дело весьма хлопотное и достаточно бесперспективное, если вы не любитель дизассемлирования.

В принципе существует несколько "выходов" из данной ситуации (с классами, методами, параметрам вполне прокатывает, но насчет StateChart я не уверен):

— Использовать Visio UML To XMI Export, для экспорта данных UML модели из Visio стандартный XMI формат, который уже можно обрабатывать (или передавать в другие программы).

— Использовать команду создания отчетов "Report" для UML (есть в Visio EA который идет с Visual Studio), потом из отчетов выколупывать нужные вам данные.
Re[4]: VisualStudio .Net и MS Visio
От: bebabo Россия http://sites.google.com/site/ownmake/Home
Дата: 28.09.07 10:03
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Ну дак я про то же и говорю. Это и есть "данные модели". Под "Данными модели" я имел в виду все практически все, что не отображается явно на диаграмме, но существует (для UML). Visio UML addon эти данные хранит в бинарном виде в собственном (проприетарном, недокументированном) формате. Физически они хранятся в DocumentStencil-е — заводится отдельный скрытый "мастер" (который называется "UML"), в который все эти данные как BLOB все и сливаются. Где-то попадался даже анализ данных этого BOLB-а, но в общем это дело весьма хлопотное и достаточно бесперспективное, если вы не любитель дизассемлирования.


bnk>В принципе существует несколько "выходов" из данной ситуации (с классами, методами, параметрам вполне прокатывает, но насчет StateChart я не уверен):


bnk>- Использовать Visio UML To XMI Export, для экспорта данных UML модели из Visio стандартный XMI формат, который уже можно обрабатывать (или передавать в другие программы).


bnk>- Использовать команду создания отчетов "Report" для UML (есть в Visio EA который идет с Visual Studio), потом из отчетов выколупывать нужные вам данные.


Большое спасибо! Буду пробовать )
И еще один вопрос. Если данные модели явно отображаются на диаграмме (можно прописать "внутри" фигуры различные действия, сделать их видимыми, и они будут следовать под названием фигуры, отделенные горизонтальной чертой) — как получить эти данные? Если не ошибаюсь, подобная фигура (с видимыми действиями) — на самом деле группа фигур. Пробовал разгруппировать ее Shape-методом, но ничего не получилось. Пока нашел только один — зверский — способ: пересохранить документ в vdx и прочитать его как xml (кстати, таким образом можно извлечь некоторые скрытые данные фигуры), но этот способ плох тем, что в xml-формате все фигуры изначально раздельны и сложно установить между ними связь.
Re[5]: VisualStudio .Net и MS Visio
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.09.07 10:36
Оценка:
Здравствуйте, bebabo, Вы писали:

B>Большое спасибо! Буду пробовать )

B>И еще один вопрос. Если данные модели явно отображаются на диаграмме (можно прописать "внутри" фигуры различные действия, сделать их видимыми, и они будут следовать под названием фигуры, отделенные горизонтальной чертой) — как получить эти данные? Если не ошибаюсь, подобная фигура (с видимыми действиями) — на самом деле группа фигур. Пробовал разгруппировать ее Shape-методом, но ничего не получилось. Пока нашел только один — зверский — способ: пересохранить документ в vdx и прочитать его как xml (кстати, таким образом можно извлечь некоторые скрытые данные фигуры), но этот способ плох тем, что в xml-формате все фигуры изначально раздельны и сложно установить между ними связь.

Это можно. У каждой Shape есть проперти Shapes, если пройтись рекурсивно, то вполне можно все что видно на диаграмме достать.

Кстати, не разгруппировывается потому, что там для UML-шейпов установлена "защита от разгруппировки". Ее в принципе можно легко убрать через ShapeSheet (поставить все поля в секции Protection в 0)
Re[5]: VisualStudio .Net и MS Visio
От: bnk СССР http://unmanagedvisio.com/
Дата: 30.09.07 08:14
Оценка:
Здравствуйте, bebabo, Вы писали:

B>Если данные модели явно отображаются на диаграмме (можно прописать "внутри" фигуры различные действия, сделать их видимыми, и они будут следовать под названием фигуры, отделенные горизонтальной чертой) — как получить эти данные? Если не ошибаюсь, подобная фигура (с видимыми действиями) — на самом деле группа фигур.


Пример как достать то что есть на диаграмме (EntryActions для State):
transitions_text = your_state_shape->Shapes->Item["Transitions"]->Text

в transtions_text получите что-то вроде:
entry/CreateAction1,CallAction1
exit/CallAction2,LocalInvocation1

Теоретически можно распарсить..

Вообще, для просмотра того чего где есть и как сгруппировано,
есть такая полезная вещь как View -> Drawing Explorer Window

B>Пробовал разгруппировать ее Shape-методом, но ничего не получилось.

Про это уже написал
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.