Esempio n. 1
0
 public void ReadESoupis()
 {
     using (var file = File.OpenRead("Data/eSoupis.xml"))
     {
         var s = TeSoupis.Deserialize(file);
         Assert.IsNotNull(s);
     }
 }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
        }