Réserver une Démo
Pré. Proc.

EA_GetCompartmentData

This event occurs when Enterprise Architect is instructed to redraw an element. It requests that the Add-In provide the data to populate the element's compartment.

Syntax

Function EA_GetCompartmentData (Repository As EA.Repository, sCompartment As String, sGUID As String, oType As EA.ObjectType) As Variant

The EA_QueryAvailableCompartments function syntax contains these parameters.

Parameter

Type

See also

Repository

EA.Repository

Direction: IN

Description: An EA.Repository object representing the currently open Enterprise Architect model. Poll its members to retrieve model data and user interface status information.

Repository Class

sCompartment

String

Direction: IN

Description: The name of the compartment for which data is being requested.

sGUID

String

Direction: IN

Description: The GUID of the element for which data is being requested.

oType

ObjectType

Direction: IN

Description: The type of the element for which data is being requested.

ObjectType

Return Value

A variant containing a formatted string. The format is illustrated in this example:

Example

     Function EA_GetCompartmentData(Repository As EA.Repository, sCompartment As String, sGUID As String, oType As EA.ObjectType) As Variant

     If Repository Is Nothing Then

          Exit Function

     End If

     Dim sCompartmentData As String

     Dim oXML As MSXML2.DOMDocument

     Dim Nodes As MSXML2.IXMLDOMNodeList

     Dim Node1 As MSXML2.IXMLDOMNode

     Dim Node As MSXML2.IXMLDOMNode

     Dim sData As String

     sCompartmentData = ""

     Set oXML = New MSXML2.DOMDocument

     sData = ""

     On Error GoTo ERR_GetCompartmentData

     oXML.loadXML (Repository.GetTreeXMLByGUID(sGUID))

     Set Node1 = oXML.selectSingleNode("//ModelItem")

     If Node1 Is Nothing Then

          Exit Function

     End If

     sCompartmentData = sCompartmentData + "Name=" + sCompartment + ";"

     sCompartmentData = sCompartmentData + "OwnerGUID=" + sGUID + ";"

     sCompartmentData = sCompartmentData + "Options=SkipIfOnDiagram&_eq_^1&_sc_^"

     Select Case sCompartment

     Case "parts"

     Set Nodes = Node1.selectNodes("ModelItem(@Metatype=""Part"")")

     For Each Node In Nodes

          sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

          sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

          Next

     Case "ports"

     Set Nodes = Node1.selectNodes("ModelItem(@Metatype=""Port"")")

     For Each Node In Nodes

          sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

          sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

          Next

     End Select

     If there is no data to display, then don't return any compartment data

     If sData <> "" Then

          sCompartmentData = sCompartmentData + "CompartmentData=" + sData + ";"

     Else

          sCompartmentData = ""

     End If

     EA_GetCompartmentData = sCompartmentData

     Exit Function

     ERR_GetCompartmentData:

     EA_GetCompartmentData = ""

     End Function