Drawing XML
Home Products Services VBA for ADT

Drawing XML

ADT 2004 tracks drawing information through XML files.  The following section outlines how to access the drawing information that is contained within the XML code.

Elements and Sheets

Elements and Sheets share a common access structure.  They are the simplest form of drawing "Part" within the project structure.

Function getFileXML(xDoc As DOMDocument) As IXMLDOMElement

    Set getFileXML = xDoc.getElementsByTagName("File").Item(0)

End Function

 

Sub DisplayElement()

    Dim fn As String, xDoc As DOMDocument

    fn = ThisDrawing.FullName

    fn = Mid(fn, 1, Len(fn) - 4)

   

    Set xDoc = getProjectXML(fn & ".xml")

   

    Dim elem As IXMLDOMElement

    Set elem = getFileXML(xDoc)

   

    MsgBox "Name:  " & elem.getAttribute("Name") & vbLf & _

           "Desc:  " & elem.firstChild.text

End Sub

 

Constructs

Function getFileRegion(elem As IXMLDOMElement) As IXMLDOMElement

    Set getFileRegion = elem.getElementsByTagName("Region").Item(0)

End Function

Function getFileCells(elem As IXMLDOMElement) As IXMLDOMNodeList

    Set getFileCells = elem.getElementsByTagName("Cell")

End Function

Sub displayConstruct()

    Dim fn As String, xdoc As DOMDocument

    fn = ThisDrawing.FullName

    fn = Mid(fn, 1, Len(fn) - 4)

   

    Set xdoc = getProjectXML(fn & ".xml")

   

    Dim elem As IXMLDOMElement

    Set elem = getFileXML(xdoc)

   

    MsgBox "Name:  " & elem.getAttribute("Name") & vbLf & _

           "Desc:  " & elem.firstChild.text

          

    Dim nods As IXMLDOMNodeList

    Dim nod As IXMLDOMElement

    Dim reg As IXMLDOMElement

   

    Set reg = getFileRegion(elem)

    Set nods = getFileCells(reg)

   

    Dim i As Long

    Dim str As String

    str = ""

    For Each nod In nods

        str = str & "Level: " & nod.getAttribute("Level")

        str = str & " Division: " & nod.getAttribute("Division") & vbLf

    Next

   

    MsgBox str

 

End Sub

 

Views

Sub displayViews1()

    Dim fn As String, xdoc As DOMDocument

    fn = ThisDrawing.FullName

    fn = Mid(fn, 1, Len(fn) - 4)

   

    Set xdoc = getProjectXML(fn & ".xml")

   

    Dim elem As IXMLDOMElement

    Set elem = getFileXML(xdoc)

   

    MsgBox "Name:  " & elem.getAttribute("Name") & vbLf & _

           "Desc:  " & elem.firstChild.text

          

    Dim nods As IXMLDOMNodeList

    Dim nod As IXMLDOMElement

    Dim reg As IXMLDOMElement

   

    Set reg = getFileRegion(elem)

    Set nods = getFileCells(reg)

   

    Dim i As Long, str As String

    str = ""

    For Each nod In nods

        str = str & "Level: " & nod.getAttribute("Level")

        str = str & " Division: " & nod.getAttribute("Division") & vbLf

    Next

   

    MsgBox str

 

End Sub

 

 

Function getVPDef(elem As IXMLDOMElement) As IXMLDOMElement

    Set getVPDef = elem.getElementsByTagName("ViewportDefault").Item(0)

End Function

 

Function getFileView(elem As IXMLDOMElement) As IXMLDOMElement

    Set getFileView = elem.getElementsByTagName("View").Item(0)

End Function

 

Function getFileContext(elem As IXMLDOMElement) As IXMLDOMNodeList

    Dim tmp As IXMLDOMElement

    Set tmp = elem.getElementsByTagName("ViewCategory").Item(0)

    Set getFileContext = tmp.getElementsByTagName("ContextCategory")

End Function

 

Function getFileOverride(elem As IXMLDOMElement) As IXMLDOMNodeList

    Dim tmp As IXMLDOMElement

    Set tmp = elem.getElementsByTagName("ViewCategory").Item(0)

    Set getFileOverride = tmp.getElementsByTagName("FileOverride")

End Function

 

Sub displayViews2()

    Dim fn As String, xdoc As DOMDocument

    fn = ThisDrawing.FullName

    fn = Mid(fn, 1, Len(fn) - 4)

   

    Set xdoc = getProjectXML(fn & ".xml")

        Dim elem As IXMLDOMElement

    Set elem = getFileXML(xdoc)

   

    Dim nods As IXMLDOMNodeList

    Dim nod As IXMLDOMElement

    Dim tmp As IXMLDOMElement

    Dim i As Long, str As String

    Dim vpD As IXMLDOMElement

   

    Set tmp = getFileView(elem)

    Set vpD = getVPDef(tmp)

   

    str = ""

    For Each nod In vpD.childNodes

        str = str & nod.nodeName & ": " & nod.text & vbCrLf

    Next

    MsgBox str

   

    Set nods = getFileContext(tmp)

    str = ""

    For Each nod In nods

        str = str & "Context: " & nod.text & vbCrLf

    Next

    MsgBox str

 

    Set nods = getFileOverride(tmp)   

    str = ""

    For Each nod In nods

        str = str & "File Override: " & nod.text & vbCrLf

    Next

    MsgBox str

End Sub