Инструменты DSL:Создайте новую диаграмму в пользовательском коде

StackOverflow https://stackoverflow.com/questions/153309

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использую инструменты DSL для Visual Studio 2005.

У меня есть DSL, где в определенный момент я хотел бы создать новую диаграмму, используя пользовательский код.

До сих пор мне удавалось создать новую диаграмму, перезаписав текущую, уже открытую диаграмму.Следующий код:

FEGeneratorDiagram diag = new FEGeneratorDiagram(ThisElem.Store);
diag.Associate(ThisElem);
FEGeneratorDiagram currentDiag = (FEGeneratorDiagram)ThisElem.Store.ElementDirectory.FindElements<FEGeneratorDiagram>(false)[0];
currentDiag = diag;

Но то, что я действительно хотел бы сделать, было бы,

чтобы создать новый DSL-документ с новым экземпляром FEGeneratorDiagram, а затем продолжить мою логику добавления элементов и настройки свойств.

Какая-нибудь помощь?

Это было полезно?

Решение

//Create a Store
Type[] modelTypes = new Type[] { typeof(CoreDesignSurfaceDomainModel), typeof(FEGeneratorDomainModel) };
Store store = new Store(modelTypes);
RootElement root;
using (Transaction t =
store.TransactionManager.BeginTransaction("Create Elements"))
{
    root = FEGeneratorSerializationHelper.Instance.LoadModel(store, diagramPath, null, null);
    t.Commit();
}
//Do whatever custom things you want!

SerializationResult result = new SerializationResult();
//Save the file
FEGeneratorSerializationHelper.Instance.SaveModel(result, root, diagramPath);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top