public static IEnumerable<XElement> Translate(DeviceInstance dev, Project project)
 {
     foreach (var obj in dev.ComObjectInstances)
     {
         XElement element = new XElement(XName.Get("Device", namesp));
         element.Add(Create("Område", dev.Line.Area.Address));
         element.Add(Create("Områdesnamn", dev.Line.Area.Name));
         element.Add(Create("Områdesbeskrivning", dev.Line.Area.Description));
         element.Add(Create("Linje", dev.Line.Address));
         element.Add(Create("Linjenamn", dev.Line.Name));
         element.Add(Create("Linjebeskrivning", dev.Line.Description));
         element.Add(Create("Device id", dev.FullAddress));
         element.Add(Create("Devicenamn", dev.Name));
         element.Add(Create("Devicebeskrivning", dev.Description));
         element.Add(Create("Produkt", dev.Product.Text));
         element.Add(Create("Rum", dev.RoomValue()));
         element.Add(Create("Funktion", "Okänd attribut"));
         element.Add(Create("Program", dev.Product.Program));
         element.Add(Create("Tillverkare", dev.Product.Manufacturer));
         element.Add(Create("Beställningsnummer", dev.Product.OrderNumber));
         element.Add(Create("Adr", dev.IndividualAddressLoaded == "1" ? "X" : "-"));
         element.Add(Create("Prg", dev.ApplicationProgramLoaded == "1" ? "X" : "-"));
         element.Add(Create("Par", dev.ParametersLoaded == "1" ? "X" : "-"));
         element.Add(Create("Grp", (obj.GroupAddresses.Count > 0) ? "X" : "-"));
         element.Add(Create("Kfg", dev.MediumConfigLoaded == "1" ? "X" : "-"));
         foreach (var attr in TranslateObject(obj))
             element.Add(attr);
         yield return element;
     }
 }
 public static IEnumerable<XElement> TranslateGroups(Project project)
 {
     var gas = project.GroupRanges.SelectMany(row => row.Ranges).SelectMany(row => row.Addresses);
     foreach (var ga in gas)
     {
         XElement element = new XElement(ns + "Gruppadress");
         var ea = new EnmxAddress(ga.Value);
         var enmx = ea.Address.Split('/');
         element.Add(Create("Huvudgrupp", enmx[0]));
         element.Add(Create("Huvudgruppnamn", ga.ParentRange.ParentRange.Name));
         element.Add(Create("Huvudgruppbeskrivning", ga.ParentRange.ParentRange.Description));
         element.Add(Create("Mellangrupp", enmx[1]));
         element.Add(Create("Mellangruppnamn", ga.ParentRange.Name));
         element.Add(Create("Mellangruppbeskrivning", ga.ParentRange.Description));
         element.Add(Create("Gruppadress", ea.Address));
         element.Add(Create("Gruppadressnamn", ga.Name));
         element.Add(Create("Gruppadressbeskrivning", ga.Description));
         element.Add(Create("Längd", ga.ComObjectInstances.Select(row => row["ObjectSize"]).FirstOrDefault()));
         element.Add(Create("Antal förbindelser", ga.ComObjectInstances.Count()));
         element.Add(Create("Centralfunktion", "Nej?"));
         element.Add(Create("Passera genom linjekopplare", "Nej?"));
         yield return element;
     }
 }