def main(self):

        # Create a selection
        sel = self.uidoc.Selection
        # Prompt the user to pick the required external link
        try:
            ref = sel.PickObject(ObjectType.Element,
                                 "Please pick a linked model instance")

            # Get AR RVT link
            rvt_link = self.doc.GetElement(ref.ElementId)
            if not self.rvt_link_check(rvt_link):
                WinForms.MessageBox.Show("The operation was cancelled!",
                                         "Error!",
                                         WinForms.MessageBoxButtons.OK,
                                         WinForms.MessageBoxIcon.Information)
                return

            self.transform = rvt_link.GetTotalTransform()
            linkedDoc = rvt_link.GetLinkDocument()

            # Create a room collector instance
            room_collector = FilteredElementCollector(linkedDoc)

            # Create a space collector instance
            self._space_collector = FilteredElementCollector(
                self.doc).WhereElementIsNotElementType().OfCategory(
                    BuiltInCategory.OST_MEPSpaces)

            # Collect levels from the current document
            levels = FilteredElementCollector(
                self.doc).WhereElementIsNotElementType().OfCategory(
                    BuiltInCategory.OST_Levels)

            # For each level in the current model define its elevation and create level elevation:Level dictionary
            self.lvls_dict = {level.Elevation: level for level in levels}

            # Collect rooms from RVT link
            if room_collector and room_collector.GetElementCount() != 0:
                self.rooms_list = room_collector.WhereElementIsNotElementType(
                ).OfCategory(BuiltInCategory.OST_Rooms)

            self.counter = 0
            self.startProgress.emit(room_collector.GetElementCount() + self.spaces_count + \
                (2*(room_collector.GetElementCount()*len(self._excel_parameters))))
            self.__main()
            self.endProgress.emit()

        except Exception as e:
            logger.error(e, exc_info=True)
            WinForms.MessageBox.Show("The operation was cancelled!", "Error!",
                                     WinForms.MessageBoxButtons.OK,
                                     WinForms.MessageBoxIcon.Information)
            return
License: http://github.com/gtalarico/revitapidocs/blob/master/LICENSE.md
"""

import clr

clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
clr.AddReference("System")

from Autodesk.Revit.UI import TaskDialog
from Autodesk.Revit.DB import FilteredElementCollector
from Autodesk.Revit.DB import BuiltInCategory, ElementId
from System.Collections.Generic import List

collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors)
doors = collector.WhereElementIsNotElementType().ToElements()

mir_doors = []

for door in doors:
    try:
        if door.Mirrored:
            mir_doors.append(door)
    except AttributeError:
        pass  # for Symbols that don't have Mirrored attribute.

TaskDialog.Show("Mirrored Doors",
                "Mirrored: {} of {} Doors".format(len(mir_doors), len(doors)))

selection = uidoc.Selection
collection = List[ElementId]([door.Id for door in mir_doors])