将元素 属性 转换为特定元素的属性
Transform an element property into an attribute of the particular element
由于我是 Enterprise Architect 的新用户,所以我遇到了这个问题。
我需要编写一个脚本来将 class 图中标记为 <<property>>
的每个项目转换为该特定 class 的属性。
到目前为止,我已经走到这一步了,但我不确定如何将每个 属性 更改为一个属性。
当我尝试添加这样的新属性时:
selectedObject.Attributes.AddNew("example", "int");
它崩溃并出现此集合为空或不是对象的错误。
即使我手动将属性添加到 class 然后尝试使用方法 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);
}
selectedObjects = currentDiagram.SelectedObjects();
returns 图元素。您需要先检索元素。
elemId = selectedObjects.getat(0).elementId:
element = Repository.GetElementByID(elemId);
将return选定图表元素的第一个元素。
上一个错误
实际上你的代码使用
selectedObject.Attributes.AddNew();
这当然行不通,因为您需要(如上所述)提供两个参数:名称和(最终为空)类型。注意名称必须是唯一的。
所以应该是
attr = selectedObject.Attributes.AddNew("theName", "someType");
attr.update();
(抱歉,我不知道如何用您使用的语言声明新变量attr
。)
由于我是 Enterprise Architect 的新用户,所以我遇到了这个问题。
我需要编写一个脚本来将 class 图中标记为 <<property>>
的每个项目转换为该特定 class 的属性。
到目前为止,我已经走到这一步了,但我不确定如何将每个 属性 更改为一个属性。
当我尝试添加这样的新属性时:
selectedObject.Attributes.AddNew("example", "int");
它崩溃并出现此集合为空或不是对象的错误。
即使我手动将属性添加到 class 然后尝试使用方法 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);
}
selectedObjects = currentDiagram.SelectedObjects();
returns 图元素。您需要先检索元素。
elemId = selectedObjects.getat(0).elementId:
element = Repository.GetElementByID(elemId);
将return选定图表元素的第一个元素。
上一个错误
实际上你的代码使用
selectedObject.Attributes.AddNew();
这当然行不通,因为您需要(如上所述)提供两个参数:名称和(最终为空)类型。注意名称必须是唯一的。
所以应该是
attr = selectedObject.Attributes.AddNew("theName", "someType");
attr.update();
(抱歉,我不知道如何用您使用的语言声明新变量attr
。)