由于我是Enterprise Architect的新手,所以我一直陷在这个问题中。
我需要编写一个脚本,以将类图中标记为<<property>>
的每个项目转换为该特定类的属性。
到目前为止,我已经谈到了这一点,我不确定如何将每个属性更改为一个属性。
当我尝试添加这样的新属性时:
selectedObject.Attributes.AddNew("example", "int");
由于该集合为null或不是对象的错误而崩溃。
即使我手动向类添加属性,然后尝试使用方法selectedObject.Attributes.GetAt(0);
访问它,它仍然会因错误而崩溃:
Script.script 'Attributes' is null or not an object, Line: 39.
下面是我的完整代码:
var currentDiagram as EA.Diagram;
currentDiagram = Repository.GetCurrentDiagram();
if ( currentDiagram != null )
{
// Get a reference to any selected connector/objects
var selectedObjects as EA.Collection;
selectedObjects = currentDiagram.SelectedObjects();
if ( selectedObjects.Count > 0 )
{
// One or more diagram objects are selected
var selectedObject as EA.Element;
for(var i = 0; i < selectedObjects.Count; ++i)
{
selectedObject = selectedObjects.GetAt(i);
Session.Output(selectedObject.Attributes.GetAt(0));
selectedObject.Attributes.AddNew("example", "int");
}
Session.Output(selectedObject.Name);
}
答案 0 :(得分:0)
selectedObjects = currentDiagram.SelectedObjects();
返回图元素。您需要先检索元素。
elemId = selectedObjects.getat(0).elementId:
element = Repository.GetElementByID(elemId);
将返回所选图表元素的第一个元素。
上一个错误
实际上您的代码使用
selectedObject.Attributes.AddNew();
这当然是行不通的,因为您需要(如上所述)提供两个参数:名称和(最终为空白)类型。请注意,该名称必须唯一。
应该是
attr = selectedObject.Attributes.AddNew("theName", "someType");
attr.update();
(抱歉,我不知道如何使用您使用的语言声明新变量attr
。)