2016-02-14 1 views
0

Я хочу добавить фигуру в выходящую группу, которую я сбросил с помощью мастер-трафарета, который содержит около 4 дочерних фигур в Visio 2013 с C#.
Подробнее Я хочу добавить дополнительные атрибуты в DBEntity. До сих пор я использовал parent -Property класса Shape, но это всегда разрушает существующую группу и делает ее непригодной для использования/разгруппировки.Добавить атрибуты для Crow-Entity в Visio 2013 с помощью C#

using VisioApi = Microsoft.Office.Interop.Visio; 


VisioApi.Application application = new VisioApi.Application(); 
application.Documents.Add(templatePath); 
VisioApi.Document crowStencil = application.Documents["DBCROW_M.vssx"]; 

VisioApi.Master entityMaster = crowStencil.Masters.get_ItemU("Entity"); 
VisioApi.Master attributeMaster = crowStencil.Masters.get_ItemU("Attribute"); 

VisioApi.Page page = application.Documents[1].Pages[1]; 
VisioApi.Shape entityShape = page.Drop(entityMaster, 5.0, 5.0); 
VisioApi.Shape attributeShape = page.Drop(attributeMaster, 5.0, 5.2); 

// After assigning parent, entityShape isn't grouped anymore 
attributeShape.Parent = entityShape; 

Как это сделать в правильном направлении?

UPDATE: как указано в ответе, Crow использует контейнеры - не группы

ответ

0

«Ворон нога» формы реализуются в Visio 2013 с помощью «контейнеры». Поэтому вы должны использовать API-интерфейс контейнера для их управления. Не используйте Parent или функции группировки, это не те, которые вы ищете. Вместо этого используйте ContainerProperties и InsertListMember.

Подробнее о том, что контейнеры Визио здесь, и как манипулировать ими: https://msdn.microsoft.com/en-us/library/office/ff959245.aspx

Немедленное решение для задачи:

// add one attribute to entity shape 
entityShape.ContainerProperties.InsertListMember(attributeShape, 0); 

Ума, что M $ может иметь некоторые планы по возрождению старых ER, и это может привести к необходимости переделать ER-фигуры. Средства, AFAIU ER-схема должна быть конечным пользователем, а не программным способом - вы, кажется, пересекаете линию простых смертных, которые не должны пересекаться :)

Смежные вопросы