AnsweredAssumed Answered

How to find a CompPin's pin type

Question asked by cathy_terwedow on Sep 5, 2018

Admin's note: This topic was split off from the thread on Re: xDxDesigner - readout Attribute which is multiple times on the same Sheet via Automation


Hi Peter,


I am a new associate AE who is on board this year. I am learning DxDesigner automation recently.

Here I have a question. Could you help me and answer my question?


According to your discussion, we can read symbol level value by objComp.SymbolBlock.Attributes. However, If I want to read the symbol value of a CompPin's pin type, objCompPin.SymbolBlock.findattribute(""Pin Type") is not available. Is there any method to read the symbol value of pin type when there is no block value?


Best regards,

Xiaowen Min


Here enclose part of my script:

For Each Conn In Comp.GetConnections()

Set CompPin = Conn.CompPin

If Not CompPin Is Nothing Then

Set Pin = CompPin.Pin

Set Net = Conn.Net

PinUID = Pin.UID

PinNumber = CompPin.Number

Dim Attr

Set Attr = CompPin.FindAttribute("Pin Type")

If Attr Is Nothing Then

PinType = "No PINTYPE"


PinType = Attr.Value

End If






    Re: xDxDesigner - readout Attribute which is multiple times on the same Sheet via Automation
    Stefan HaasHello mxw to Readout PinType, and Sense, you do: First get a Componet, than its PinObject   '# Get the connections(pins) on the symbol
      Dim pinObj As ViewDraw.IVdObjs
      Set pinObj = comp.GetConnections()
      For x = 1 To pinObj.Count()      Dim theConnection As ViewDraw.Connection
          Set theConnection = pinObj.Item(x)
          Dim pinType As ViewDraw.VdObjectType
          pinType = theConnection.CompPin.Type
          Dim theSense As String
          theSense = getPinSense(theConnection)
          Dim pinDirection As String
          pinDirection = getPinDirection(theConnection)
    next x Function getPinSense(theConnection As ViewDraw.Connection) As String         '#
             '# inverted or not
             Dim Sense As ViewDraw.VdSense
             Sense =
             Dim theSense As String
             Select Case Sense
                    Case ViewDraw.VdSense.VDINVERTED
                         theSense = "Inverted"
                    Case ViewDraw.VdSense.VDNOTINVERTED
                         theSense = "NotInverted"
                    Case Else
                         theSense = "?"
             End Select
             '# alternative idea for
             '# inverted/notInverted Pin/Signal
             If 1 Then
                Dim PinName As String
                    PinName =  'pin Name
                If Left(PinName, 1) = "~" Then
                   theSense = "Inverted"
                   theSense = "NotInverted"
                End If
             End If
             getPinSense = theSenseEnd Function Function getPinDirection(theConnection As ViewDraw.Connection) As String         Dim pinDirection As String
                 pinDirection = ""
             '# We try to get Pin Direction
             '# (Pin = in, out, bi, ...)
             Dim numOfAttributes As Integer
                 numOfAttributes =
             Dim j As Integer
             Dim attribPinTypeFound As Boolean
                 attribPinTypeFound = False
             For j = 1 To numOfAttributes
                Dim pinAttrib As ViewDraw.Attribute
                Set pinAttrib =
                'Debug.Print "attributeName: " & & " --> Value: " & pinAttrib.Value
                Dim attribName As String
                Dim attribValue As String
                Dim attribTextString As String
                attribName =
                attribValue = pinAttrib.Value
                attribTextString = pinAttrib.TextString
                pinDirection = ""
                If attribName = "Pin Type" Then
                   If attribValue <> "" Then
                      pinDirection = attribValue
                      attribPinTypeFound = True
                      Exit For
                   ElseIf attribValue = "" Then
                          pinDirection = "?"
                   ElseIf attribTextString = "" Then
                       pinDirection = "??"
                   End If
                ElseIf attribName = "BlahBlah" Then
                ElseIf attribName = "VHDL_PORT" Then
                ElseIf attribName = "VHDL Type" Then
                End If
             Next j
             If attribPinTypeFound = False Then
                pinDirection = "Property Not Found"
             End If
             '# Return our Result
             getPinDirection = pinDirection
    End Function

    Check the "getPinDirection" Function, it loops manually through each AttributeIn my case it works perfect. Hope this can guide you a little bit further.regards Stefan



    Re: xDxDesigner - readout Attribute which is multiple times on the same Sheet via Automation
    Peter FestesenHello - thanks for reaching out to the community ! I will have to do some digging. /Peter