如何根据GUID更改sparx中的对象颜色

时间:2015-12-15 07:32:02

标签: python perl enterprise-architect

我无法理解它:-) 如何使用程序更改Sparx中对象(BPMN活动)的颜色(背景颜色)?

我有GUID,我可以选择对象,只是弄清楚如何更改颜色?

假设我有GUID {E595409F-CFED-4334-8DA3-F13D8A81A534}的对象,我希望背景颜色为红色。

代码是什么(在Perl,Python或visual basic中,任何人都可以)。不在Sparx脚本中。

这是代码(python)

import win32com.client

eaApp = win32com.client.Dispatch("EA.App")

#print the connection string
eaRep = eaApp.Repository
print('Connection string: ', eaRep.ConnectionString)

#select the activity based on GUID
guid = '{E595409F-CFED-4334-8DA3-F13D8A81A534}'
activity = eaRep.GetElementByGUID(guid)
print('Activity: ', activity.Name)

#Change the backgroud color to red

activity.Style = '''BCol=255;'''
activity.Update

但最后两行是错误的,因为那些是我不知道如何

2 个答案:

答案 0 :(得分:1)

元素上的样式是图表上使用时此元素的默认外观。

在每个图表上都可以覆盖它。这些设置存储在<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="mobile-home-second-menu clearfix"> <ul class="home-second-menu clearfix"> <li class="first-menu-item"> <a href="#">Main category</a> <ul class="submenu"> <li class="second-menu-item"> <a href="#">Subcategory</a> </li> </ul> </li> <li class="first-menu-item"> <a href="#">Main category</a> <ul class="submenu"> <li class="second-menu-item"> <a href="#">Subcategory</a> </li> </ul> </li> </ul> </div>中。

假设您尝试更改默认外观,则应使用EA.DiagramObject

help file说明了以下内容:

  

无效

     

注意:设置元素的视觉外观。

     

参数:

     

•范围:长 - 设定修改的外观范围
1 - 基础   (整个模型的默认外观)
设置外观   仅在所选图表中的元素(图表对象),请参阅设置   DiagramObject类主题中的样式
•项目:长 - 外观   要修改的功能
0 - 背景颜色
1 - 字体颜色
2 - 边框   颜色
3 - 边框宽度
•值:长 - 将外观设置为

的值

答案 1 :(得分:1)

好的,让它运转起来。这是现在正在运行的代码。

import win32com.client
#Declare what
DiagramGUID = '{9262BA28-AE78-45ce-A060-FEC95DE4301E}'
ObjectGUI = '{6B80AB10-0104-4d42-B5BF-2EDC4EA053CC}'
ObjectColor = '''255'''

#connect to EA
eaApp = win32com.client.Dispatch("EA.App")
#get the repository
Repository = eaApp.Repository
print('Connection string: ', Repository.ConnectionString, '\n')
#get diagram using GUID
dia = Repository.GetDiagramByGUID(DiagramGUID)
print('Diagram name selected: ', dia.Name)

#Get the activity ID based on GUID
activity = Repository.GetElementByGUID(ObjectGUI)
ElementID = activity.ElementID

#get the fist object in the diagram
dia_obj = dia.DiagramObjects.GetAt(0)

#start from 0
i = 0
#now find the right diagram object based on ID
while (dia_obj.ElementID != ElementID):
    i = i+1
    print('i is ', i)
    print('comparing ', dia_obj.ElementID, ' with ', ElementID)
    dia_obj = dia.DiagramObjects.GetAt(i)
#change the style and update diagram object
dia_obj.SetStyleEx('''BCol''',ObjectColor)
dia_obj.Update()

会出现错误(如果找不到合适的物品,我需要注意。如果有更好的方法可以做我需要做的事情,请告诉我。