public void ReadESoupis() { using (var file = File.OpenRead("Data/eSoupis.xml")) { var s = TeSoupis.Deserialize(file); Assert.IsNotNull(s); } }
public void ConvertEsoupisTest() { using var file = File.OpenRead("Data/eSoupis.xml"); var s = TeSoupis.Deserialize(file); Assert.IsNotNull(s); using var model = Convertor.Convert(s); model.SaveAsIfc($"eSoupis.ifc"); Assert.IsTrue(model.IsValid(out IEnumerable <ValidationResult> errs)); }
public static CostModel Convert(TeSoupis soupis) { unitCache.Clear(); // information about the application, person and organisation // who created the file var credentials = new XbimEditorCredentials { ApplicationDevelopersName = "Martin Cerny", ApplicationFullName = soupis.Zdroj.ToString(), ApplicationIdentifier = soupis.Zdroj.ToString(), ApplicationVersion = "1.0", //your user EditorsFamilyName = Environment.UserName, EditorsGivenName = "", EditorsOrganisationName = Environment.UserDomainName }; var stavba = soupis.STAVBA.FirstOrDefault(); var model = new CostModel(credentials, stavba.Nazev); using (var txn = model.BeginTransaction()) { // currency var costUnit = model.Create.MonetaryUnit(u => u.Currency = soupis.Mena.ToString()); model.Project.Units.Add(costUnit); // project information model.Project.LongName = stavba.SPOPIS; model.Project.Address = model.Create.PostalAddress(a => a.AddressLines.Add(stavba.Misto)); var jkso = ProcessJKSO(model, soupis); // process all sites foreach (var s in soupis.STAVBA) { // root element var schedule = new CostSchedule(model, s.Cislo); // subjects (client, supplier) ProcessActors(model, schedule, s.SUBJEKT); // schedule items and classification ProcessObjects(model, schedule, s.OBJEKT, jkso); } // commit changes txn.Commit(); return(model); } }
private static Dictionary <string, ClassificationItem> ProcessJKSO(CostModel model, TeSoupis soupis) { var result = new Dictionary <string, ClassificationItem>(); var items = (soupis.STAVBA ?? new List <TStavba>()) .SelectMany(s => s.OBJEKT ?? new List <TObjekt>()) .Where(o => !string.IsNullOrWhiteSpace(o.CisloJKSO)) .Select(o => new { Nazev = o.NazevJKSO, Cislo = o.CisloJKSO }) .ToList(); if (!items.Any()) { return(result); } var jkso = new Classification(model, "JKSO"); items.ForEach(i => { if (result.ContainsKey(i.Cislo)) { return; } var j = new ClassificationItem(model) { Name = i.Nazev, Identification = i.Cislo }; jkso.Children.Add(j); result.Add(i.Cislo, j); }); return(result); }