Domanda

Sto usando DSL Tools per Visual Studio 2005.

Ho una DSL in cui ad un certo punto vorrei creare un nuovo diagramma usando il codice personalizzato.

Finora sono stato in grado di creare un nuovo diagramma sovrascrivendo il diagramma corrente, già aperto. Il codice segue:

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

Ma quello che mi piacerebbe davvero fare sarebbe

per creare un nuovo documento DSL con una nuova istanza FEGeneratorDiagram e continuare con la mia logica di aggiunta di elementi e impostazione delle proprietà.

Qualche aiuto?

È stato utile?

Soluzione

//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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top