前页 后页

示例脚本

您可以使用Shape Script创建各种形状,效果和文本语句,以增强所创建的元素和连接器的外观和信息价值。此处提供了此类脚本的一些示例。

访问

色带

配置>参考数据> UML类型>构造型(指定构造型):Shape Script + Assign,或

配置>参考数据> UML类型>构造型(指定构造型):Shape Script + Edit

例子

形状

脚本

//基本形状

形状主体

{

setfillcolor(255,0,0); //(R,G,B)

矩形(0,0,90,30); //(x1,y1,x2,y2)

setfillcolor(0,255,0); //(R,G,B)

椭圆(0,30,90,60); //(x1,y1,x2,y2)

setfillcolor(0,0,255); //(R,G,B)

矩形(0,60,90,90); //(x1,y1,x2,y2)

}

//单条件形状

形状主体

{

如果(HasTag(“触发器”,“链接”))

{

//仅当对象具有标记值Trigger = Link时才绘制

//设置路径的填充颜色

setfillcolor(0,0,0);

startpath(); //开始寻找路径

moveto(23,40);

lineto(23,60);

lineto(50,60);

lineto(50,76);

lineto(76,50);

lineto(50,23);

lineto(50,40);

endpath(); //结束追踪路径

//用填充颜色填充跟踪路径

fillandstrokepath();

返回;

}

}

//多条件形状

形状主体

{

startpath();

椭圆(0,0,100,100);

endpath();

fillandstrokepath();

椭圆(3,3,97,97);

如果(HasTag(“触发器”,“无”))

{

返回;

}

如果(HasTag(“触发器”,“错误”))

{

setfillcolor(0,0,0);

startpath();

moveto(23,77);

lineto(37,40);

lineto(60,47);

lineto(77,23);

lineto(63,60);

lineto(40,53);

lineto(23,77);

endpath();

fillandstrokepath();

返回;

}

如果(HasTag(“触发器”,“消息”))

{

矩形(22,22,78,78);

moveto(22,22);

lineto(50,50);

lineto(78,22);

返回;

}

}

//子形状

形状主体

{

矩形(0,0,100,100);

addsubshape(“ red”,10,20);

addsubshape(“ blue”,30,40);

addsubshape(“ green”,50,20);

addsubshape(“ red”,100,20);

形状红色

{

setfillcolor(200,50,100);

矩形(0,0,100,100);

}

形状蓝色

{

setfillcolor(100,50,200);

矩形(0,0,100,100);

}

形状绿色

{

setfillcolor(50,200,100);

矩形(0,0,100,100);

}

}

//可编辑的字段形状

形状主体

{

矩形(0,0,100,100);

addsubshape(“ namecompartment”,100,20);

addsubshape(“ stereotypecompartment”,100,40);

形状名称室

{

h_align =“中心”;

editablefield =“名称”;

矩形(0,0,100,100);

println(“ name:#name#”);

}

形状定型室

{

h_align =“中心”;

editablefield =“定型”;

矩形(0,0,100,100);

println(“ stereotype:#stereotype#”);

}

}

//返回语句形状

形状主体

{

如果(hasTag(“ alternatenotation”,“ false”))

{

//绘制ea的内置字形

drawingativeshape();

//使用return语句退出脚本

返回;

}

其他

{

//备用符号命令

// ...

矩形(0,0,100,100);

}

}

//父边上的嵌入元素形状位置

形状主体

{

defsize(60,60);

startpath();

如果(有财产(“父母”,“最高”))

{

moveto(0,100);

lineto(50,0);

lineto(100,100);

}

if(hasproperty(“ parentedge”,“ bottom”))

{

moveto(0,0);

lineto(50,100);

lineto(100,0);

}

如果(有财产(“父母”,“左”))

{

moveto(100,0);

lineto(0,50);

lineto(100,100);

}

如果(有财产(“父母”,“权利”))

{

moveto(0,0);

lineto(100,50);

lineto(0,100);

}

endpath();

setfillcolor(153,204,255);

fillandstrokepath();

}

//云路径示例形状

形状主体

{

StartCloudPath();

矩形(0,0,100,100);

EndPath();

FillAndStrokePath();

}

//连接器形状

形状主体

{

//画一条虚线

noshadow = true;

setlinestyle(“ DASH”);

moveto(0,0);

lineto(100,0);

}

形状来源

{

//在源端画一个圆

rotatable = true;

startpath();

椭圆(0,6,12,-6);

endpath();

fillandstrokepath();

}

形状目标

{

//在目标端绘制一个箭头

rotatable = true;

startpath();

moveto(0,0);

lineto(16,6);

lineto(16,-6);

endpath();

fillandstrokepath();

}

//双行

形状主体

{

setlinestyle(“ DOUBLE”);

moveto(0,0);

lineto(100,0);

}

//旋转方向

形状主体

{

moveto(0,0);

lineto(100,0);

setfixedregion(40,-10,60,10);

矩形(40,-10,60,10);

if(hasproperty(“ rotationdirection”,“ up”))

{

moveto(60,-10);

lineto(50,0);

lineto(60,10);

}

if(hasproperty(“ rotationdirection”,“ down”))

{

moveto(40,-10);

lineto(50,0);

lineto(40,10);

}

if(hasproperty(“ rotationdirection”,“ left”))

{

moveto(40,-10);

lineto(50,0);

lineto(60,-10);

}

if(hasproperty(“ rotationdirection”,“ right”))

{

moveto(40,10);

lineto(50,0);

lineto(60,10);

}

}

//获取添加后返回的值

形状主体

{

//绘制一个简单的矩形

矩形(0,0,100,100);

//打印从Add-In “ MyAddin”返回的字符串值,

//带有两个字符串参数的函数“ MyExample”

Print(“#ADDIN:MyAddin,MyExample,param1,param2#”);

}

//附加功能的方法签名:

// Public Function MyExample(Repository as EA.Repository,

// eaGuid作为字符串,args作为变体)作为变体

//根据儿童元素添加自定义隔间

//或相关元素

(请参阅将自定义隔离区添加到元素帮助主题)

//返回连接器的进出边缘

//进入和离开对象

形状主体

{

//绘制一个简单的矩形

矩形(0,0,100,100);

//在元素上打印输入的边

Print(“ Incoming Edge:#incomingedge#\ n”);

//在元素上打印出边

Print(“ Outgoing Edge:#outgoingedge#\ n”);

}

//在默认情况下绘制装饰图标

//元素形状

装饰邮件

{

orientation =“ NE”;

图片(“图标图片”,0、0、100、100);

//“ icon image”是加载到Image Manager中的16x16图像的名称

}

//从文件中提取图像和可编辑的名称字段

形状主体

{

addsubshape(“ theimage”,100,100);

addsubshape(“ namecompartment”,100,100);

塑造形象

{

图片(“元素图片”,0、0、100、100);

//“ element image”是加载到Image Manager中的图像的名称

}

形状名称室

{

h_align =“中心”;

editablefield =“名称”;

println(“#name#”);

}

}

//检查是否需要复合元素图标

// AND,如果是,则将一

装饰装修

{

orientation =“ SE”;

if(hasproperty(“ IsDrawCompositeLinkIcon”,“ true”))

{

startpath();

椭圆(-80,29,-10,71);

椭圆(10,29,80,71);

moveto(-10,50);

lineto(10,50);

endpath();

strokepath();

}

}

//允许显示完整对象

//包含元素的名称

//以及当图属性时的包

//“禁用完全复制的对象名称”选项

//取消选择,就像没有元素一样

// SHAPESCRIPT。

形状主体

{

layouttype =“ border”;

矩形(0,0,100,100);

addsubshape(“ padding”,“ N”);

addsubshape(“ name”,“ CENTER”);

形状填充

{

preferredheight = 8;

}

形状名称

{

v_align =“ top”;

h_align =“中心”;

printwrapped(“#qualifiedname#”);

}

}

//当元素出现时显示名称

//不在此包装中使用,

//选择图属性“显示名称空间”选项。

形状主体

{

layouttype =“ border”;

v_align =“ CENTER”;

h_align =“ CENTER”;

椭圆(0,0,100,100);

printwrapped(“#name#”);

addsubshape(“ path”,“ S”);

形状路径

{

v_align =“ top”;

h_align =“中心”;

如果(有问题(“ packagepath”,“”))

{

}

其他

{

printwrapped(“(from#packagepath#)”);

}

}

}

学到更多