Reputation: 4425
Hi i need to develop an addin for creating diagram objects in visio.I am able to create the top shape but not its derived types . for EG i am able to creat Start event in visio using c#, but couldn't create Start Event of message type or others
In the above picture i have 3 start event , well the BPMN Start Event was added and its property Trigger/Result option was changed
Start Event - Multiple
Start Event - Message
Start Event - None
but all the above 3 shapes are from Start Event. How to create the Message start event or Multiple start evet etc.
I am creating shapes in visio using
Visio.Master shapetodrop = Masters.get_ItemU(@"Start Event");
Visio.Shape DropShape = ActivePage.Drop(shapetodrop, x, y);
DropShape.Name = name;
DropShape.Text = name;
but this only creates Start Event , how to create Message Start EVent , Multiple Start Event etc
Upvotes: 5
Views: 1070
Reputation: 4425
For iteration through each property of a shape in visio
short iRow = (short)Visio.VisRowIndices.visRowFirst;
while (shape.get_CellsSRCExists((short)Visio.VisSectionIndices.visSectionProp, iRow, (short)Visio.VisCellIndices.visCustPropsValue, (short)Visio.VisExistsFlags.visExistsAnywhere) != 0)
{
Visio.Cell c = shape.get_CellsSRC((short)Visio.VisSectionIndices.visSectionProp, iRow, (short)Visio.VisCellIndices.visCustPropsValue);
switch (c.Name)
{
case "Prop.BpmnTriggerOrResult":
shape.Cells[c.Name].FormulaU = "\"" + "Message" + "\"";
break;
}
}
and i can get Message start event. Like this value for all the property of a shape can be assigned.
Upvotes: 3
Reputation: 519
I will show you the answer in VBA, and expect that you can convert to C#?
Microsoft in their wisdom created quite complex shapes for BPMN, so, once you have set the EventType, the list for the possible TriggerOrResult is updated...
Public Sub DropEventShape()
On Error GoTo errHandler
'EventType is one of the following : "Start;Start (Non-Interrupting);Intermediate;Intermediate (Non-Interrupting);Intermediate (Throwing);End"
Const mstName As String = "Start Event"
Const eventType As String = "Start"
Const triggerOrResult As String = "Multiple"
Dim doc As Visio.Document
Dim stn As Visio.Document
Dim mst As Visio.Master
For Each doc In Application.Documents
If doc.Title = "BPMN Shapes" Then
Set stn = doc
Exit For
End If
Next
If stn Is Nothing Then
GoTo exitHere
End If
Set mst = stn.Masters(mstName)
Dim shp As Visio.Shape
Dim x As Double
Dim y As Double
x = Application.ActivePage.PageSheet.Cells("PageWidth").ResultIU * 0.5
y = Application.ActivePage.PageSheet.Cells("PageHeight").ResultIU * 0.5
Set shp = Application.ActivePage.Drop(mst, x, y)
Dim iEventType As Integer
Dim aryEventTypes() As String
aryEventTypes = Split(shp.Cells("Prop.BPMNEventType.Format").ResultStr(""), ";")
For iEventType = 0 To UBound(aryEventTypes)
If aryEventTypes(iEventType) = eventType Then
Exit For
End If
Next
shp.Cells("Prop.BPMNEventType").Formula = "=INDEX(" & iEventType & ",Prop.BPMNEventType.Format)"
Dim iTriggerOrResult As Integer
Dim aryTriggerOrResults() As String
aryTriggerOrResults = Split(shp.Cells("Prop.BpmnTriggerOrResult.Format").ResultStr(""), ";")
For iTriggerOrResult = 0 To UBound(aryTriggerOrResults)
If aryTriggerOrResults(iTriggerOrResult) = triggerOrResult Then
Exit For
End If
Next
shp.Cells("Prop.BpmnTriggerOrResult").Formula = "=INDEX(" & iTriggerOrResult & ",Prop.BpmnTriggerOrResult.Format)"
exitHere:
Exit Sub
errHandler:
MsgBox Err.Description
Resume exitHere
End Sub
Upvotes: 0