With this script you can change set all the lines styles on a diagram at once, to your preferred style per type of connector.
In Enterprise Architect you can choose from no less then 9 different line styles for the connectors.
Unfortunately you can only choose from the first three to be the default line style for new connectors. Additionally you can also specify the default for Generalization to be Tree Style, but that is it.
For me that is not enough. I have my own habits when making UML diagrams. For most connector types I use Orthogonal – Square, but not for dependencies, use case relations and note links. For those I like theDirect style. The last exception are the control flow, state flow and object flows, for which I use Orthogonal – Rounded.
With this script I can set all the line styles on a diagram to the styles that I like. All I need to do is right click on a diagram and choose Scripts|Set Line Styles
And the script will set all the line styles to the defaults set in the script. If you would like the line styles to be set to your preferences automatically without having to run the script you can use EA-Matic version of this script.
You can set your own preferences in this section of the script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
'*********EDIT BETWEEN HERE************* ' set here the default style to be used defaultStyle = lsOrthogonalSquareTree ' set there the style to be used for each type of connector function determineStyle(connector) dim connectorType connectorType = connector.Type select case connectorType case "ControlFlow" , "StateFlow" , "ObjectFlow" , "InformationFlow" determineStyle = lsOrthogonalRoundedTree case "Generalization" , "Realization" , "Realisation" determineStyle = lsTreeVerticalTree case "UseCase" , "Dependency" , "NoteLink" determineStyle = lsDirectMode case else determineStyle = defaultStyle end select end function '************AND HERE**************** |
Free download
Video
This script has been previously featured in the webinar Introduction to Scripting with Enterprise Architect presented by yours truly.
The script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
option explicit !INC Local Scripts.EAConstants-VBScript ' Script Name: DefaultLineStyles ' Author: Geert Bellekens ' Purpose: Allows to change the linestyles to their default ' Date: 27/04/2015 ' dim lsDirectMode, lsAutoRouteMode, lsCustomMode, lsTreeVerticalTree, lsTreeHorizontalTree, _ lsLateralHorizontalTree, lsLateralVerticalTree, lsOrthogonalSquareTree, lsOrthogonalRoundedTree lsDirectMode = "1" lsAutoRouteMode = "2" lsCustomMode = "3" lsTreeVerticalTree = "V" lsTreeHorizontalTree = "H" lsLateralHorizontalTree = "LH" lsLateralVerticalTree = "LC" lsOrthogonalSquareTree = "OS" lsOrthogonalRoundedTree = "OR" dim defaultStyle dim menuDefaultLines '*********EDIT BETWEEN HERE************* ' set here the default style to be used defaultStyle = lsOrthogonalSquareTree ' set there the style to be used for each type of connector function determineStyle(connector) dim connectorType connectorType = connector.Type select case connectorType case "StateFlow" , "ObjectFlow" , "InformationFlow" determineStyle = lsOrthogonalRoundedTree case "Generalization" , "Realization" , "Realisation" determineStyle = lsTreeVerticalTree case "UseCase" , "Dependency" , "NoteLink" determineStyle = lsDirectMode case else determineStyle = defaultStyle end select end function '************AND HERE**************** sub main dim diagram dim diagramLink dim connector dim dirty dirty = false set diagram = Repository.GetCurrentDiagram 'save the diagram first Repository.SaveDiagram diagram.DiagramID 'then loop all diagramLinks if not diagram is nothing then for each diagramLink in diagram.DiagramLinks set connector = Repository.GetConnectorByID(diagramLink.ConnectorID) if not connector is nothing then 'set the connectorstyle setConnectorStyle diagramLink, determineStyle(connector) 'save the diagramlink diagramLink.Update dirty = true end if next 'reload the diagram if we changed something if dirty then 'reload the diagram to show the link style Repository.ReloadDiagram diagram.DiagramID end if end if end sub main 'gets the diagram link object function getdiagramLinkForConnector(connector, diagram) dim diagramLink set getdiagramLinkForConnector = nothing for each diagramLink in diagram.DiagramLinks if diagramLink.ConnectorID = connector.ConnectorID then set getdiagramLinkForConnector = diagramLink exit for end if next end function 'actually sets the connector style function setConnectorStyle(diagramLink, connectorStyle) 'split the style into its parts dim styleparts dim styleString styleString = diagramLink.Style styleparts = Split(styleString, ";" ) dim stylePart dim mode dim modeIndex modeIndex = -1 dim tree dim treeIndex treeIndex = -1 mode = "" tree = "" dim i 'find if Mode and Tree are already defined for i = 0 to Ubound(styleparts) -1 stylePart = styleparts(i) if Instr(stylepart, "Mode=" ) > 0 then modeIndex = i elseif Instr(stylepart, "TREE=" ) > 0 then treeIndex = i end if next 'these connectorstyles use mode=3 and the tree if connectorStyle = lsTreeVerticalTree or _ connectorStyle = lsTreeHorizontalTree or _ connectorStyle = lsLateralHorizontalTree or _ connectorStyle = lsLateralVerticalTree or _ connectorStyle = lsOrthogonalSquareTree or _ connectorStyle = lsOrthogonalRoundedTree then mode = "3" tree = connectorStyle else mode = connectorStyle end if 'set the mode value if modeIndex >= 0 then styleparts(modeIndex) = "Mode=" & mode diagramLink.Style = join(styleparts, ";" ) else diagramLink.Style = "Mode=" & mode& ";" & diagramLink.Style end if 'set the tree value if treeIndex >= 0 then if len(tree) > 0 then styleparts(treeIndex) = "TREE=" & tree diagramLink.Style = join(styleparts, ";" ) else 'remove tree part diagramLink.Style = replace(diagramLink.Style,styleparts(treeIndex)& ";" , "" ) end if else diagramLink.Style = diagramLink.Style & "TREE=" & tree & ";" end if end function function getConnectorStyle(diagramLink) 'split the style dim styleparts styleparts = Split(diagramLink.Style, ";" ) dim stylePart dim mode dim tree mode = "" tree = "" for each stylepart in styleparts if Instr(stylepart, "Mode=" ) > 0 then mode = right(stylepart, 1) elseif Instr(stylepart, "TREE=" ) > 0 then tree = replace(stylepart, "TREE=" , "" ) end if next if tree <> "" then getConnectorStyle = tree else getConnectorStyle = mode end if end function |
This article was originally published on Bellekens.com