2008-09-30 9 views
0

J'utilise DSL Tools pour Visual Studio 2005.DSL Outils: Créer un nouveau diagramme dans le code personnalisé

J'ai un DSL où à un certain point, je voudrais créer un nouveau diagramme à l'aide du code personnalisé. Jusqu'à présent, j'ai été capable de créer un nouveau diagramme en écrasant le diagramme actuel déjà ouvert. Code suit:

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

Mais, ce que je voudrais vraiment faire serait,

pour créer un nouveau document DSL avec une nouvelle instance FEGeneratorDiagram puis continuer à ma logique d'ajouter des éléments et la définition des propriétés.

Une aide?

Répondre

0
//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);