Vous pouvez afficher le symbole d'un objet dans un diagramme à l'aide des méthodes suivantes:
AttachObject(ByVal Obj As BaseObject) As BaseObject pour créer un symbole pour un objet non lien.
AttachLinkObject(ByVal Link As BaseObject, ByVal Sym1 As BaseObject = NULL, ByVal Sym2 As BaseObject = NULL) As BaseObject pour créer un symbole pour un objet lien.
AttachAllObjects() As Boolean pour créer un symbole pour chaque objet du package qui peut être affiché dans le diagramme courant.
If not ExistingModel Is Nothing and not MyRealization Is Nothing Then
' Symbols are specific kind of objects that can be manipulated by script
' We are now going to display the class, interface and realization in the
' main diagram of the model and customize their presentation
' Retrieve main diagram
Dim MyDiag
Set MyDiag = ExistingModel.DefaultDiagram
If not MyDiag is Nothing and MyDiag.IsKindOf(PdOOM.Cls_ClassDiagram) Then
' Display the class, interface shortcut and realization link in the diagram
' using default positions and display preferences
Dim MyClassSym, MyIntfSym, MyRlzsSym
Set MyClassSym = MyDiag.AttachObject(FoundClass)
Set MyIntfSym = MyDiag.AttachObject(IntfShct)
Set MyRlzsSym = MyDiag.AttachLinkObject(MyRealization, MyClassSym, MyIntfSym)
If not MyRlzsSym is Nothing Then
output "Objects have been successfully displayed in diagram"
End If
' Another way to do the same is the use of AttachAllObjects() method:
' MyDiag.AttachAllObjects
' Changes class symbol format
If not MyClassSym is nothing Then
MyClassSym.BrushStyle = 1 ' Solid background (no gradient)
MyClassSym.FillColor = RGB(255, 126, 126) ' Red background color
MyClassSym.LineColor = RGB(0, 0, 0) ' Black line color
MyClassSym.LineWidth = 2 ' Double line width
Dim Fonts
Fonts = "ClassStereotype " + CStr(RGB(50, 50, 126)) + " Arial,8,I"
Fonts = Fonts + vbCrLf + "DISPNAME " + CStr(RGB(50, 50, 50)) + " Arial,12,B"
Fonts = Fonts + vbCrLf + "ClassAttribute " + CStr(RGB(150, 0, 0)) + " Arial,8,N"
MyClassSym.FontList = Fonts ' Change font list
End If
' Changes interface symbol position
If not MyIntfSym is nothing Then
Dim IntfPos
Set IntfPos = MyIntfSym.Position
If not IntfPos is Nothing Then
IntfPos.x = IntfPos.x + 5000
IntfPos.y = IntfPos.y + 5000
MyIntfSym.Position = IntfPos
Set IntfPos = Nothing
End If
End If
' Changes the link symbol corners
If not MyRlzsSym is Nothing Then
Dim CornerList, Point1, Point2
Set CornerList = MyRlzsSym.ListOfPoints
Set Point1 = CornerList.Item(0)
Set Point2 = CornerList.Item(1)
CornerList.InsertPoint 1, Max(Point1.x, Point2.x), Min(Point1.y, Point2.y)
Set CornerList = Nothing
' Max and Min are functions defined at end of this script
End If
' Release the variables
Set MyDiag = Nothing
Set MyClassSym = Nothing
Set MyIntfSym = Nothing
Set MyRlzsSym = Nothing
End If
End If