我尝试将现有Block作为Baseclass添加到另一个Block。 (SysML 1.4)
一旦建模完成,我想在图中选择块并添加part-nr和supplier等属性。对我而言,这似乎是通过继承来实现这一目标的最简单方法。
我使用C#和Interop.EA.dll来获得比使用脚本更好的调试信息。
此代码有效,但它不会添加基类。
EA.Repository m_Repository = Helpers.EAHelper.ActiveModel;
EA.Collection myCollection = m_Repository.GetCurrentDiagram().SelectedObjects;
foreach(object myObject in myCollection)
{
EA.DiagramObject myDiagramObject = (EA.DiagramObject)myObject;
EA.Element myElement = m_Repository.GetElementByID(myDiagramObject.ElementID);
EA.Element Class2Add = Helpers.EAHelper.BaugruppeClass;
EA.Element newBaseClass = myElement.BaseClasses.AddNew(Class2Add.ElementID.ToString(), Class2Add.Type.ToString());
if (!newBaseClass.Update())
System.Windows.MessageBox.Show("ups");
myElement.BaseClasses.Refresh();
int count = myElement.BaseClasses.Count;
myElement.Update();
}
有什么想法我做错了吗?
答案 0 :(得分:2)
您无法使用BaseClasses
集合添加基类。
相反,您应该使用Connectors
集合添加 Generalization 类型的连接器,并将目标ID设置为基类的ID。