コード例 #1
0
ファイル: LoinItem.cs プロジェクト: KoncepceBIM/DSSTools
 public LoinItem(IContextEntity entity) : this()
 {
     Id          = entity.Entity.EntityLabel;
     UUID        = entity.Id;
     Name        = entity.Name;
     Description = entity.Description;
 }
コード例 #2
0
        public void Remove(IContextEntity entity)
        {
            _context.Remove(entity);
            _views.Remove(entity);

            OnPropertyChanged(nameof(Context));
            Update();
        }
コード例 #3
0
        public void BaseLoinCreationTest()
        {
            var editor = new XbimEditorCredentials
            {
                ApplicationDevelopersName = "CAS",
                ApplicationFullName       = "LOIN Creator",
                ApplicationIdentifier     = "LOIN",
                ApplicationVersion        = "4.0",
                EditorsFamilyName         = "Santini Aichel",
                EditorsGivenName          = "Johann Blasius",
                EditorsOrganisationName   = "Independent Architecture"
            };

            using var loin = Model.Create(editor);
            using var txn  = loin.Internal.BeginTransaction("LOIN creation");

            var actor     = loin.CreateActor("Client", "Owner of the building");
            var milestone = loin.CreateMilestone("Preliminary design", "Preliminary design handover milestone");
            var reason    = loin.CreatePurpose("Handover", "Handover of data");
            var item      = loin.CreateBreakedownItem("Window", "E456.789.12", "Window is a building element used to controll light flow into the space");



            var width = loin.CreateSimplePropertyTemplate("Width", "Width of the window", nameof(IfcLengthMeasure));

            width.SetName("cs", "Šířka");
            width.SetDescription("cs", "Šířka okna");

            Assert.IsNotNull(width.GetName("cs"));
            Assert.IsNotNull(width.GetDescription("cs"));

            var height = loin.CreateSimplePropertyTemplate("Height", "Height of the window", nameof(IfcLengthMeasure));

            height.SetName("cs", "Výška");
            height.SetDescription("cs", "Výška okna");
            var code = loin.CreateSimplePropertyTemplate("BarCode", "Bar code of the window", nameof(IfcIdentifier));

            code.SetName("cs", "Čárový kód");
            code.SetDescription("cs", "Čárový kód okna");

            var requirement = loin.CreatePropertySetTemplate("FM Requirements", "Requirements for Facility Management");

            requirement.HasPropertyTemplates.Add(width);
            requirement.HasPropertyTemplates.Add(height);
            requirement.HasPropertyTemplates.Add(code);
            requirement.SetName("cs", "Požadavky pro FM");
            requirement.SetDescription("cs", "Požadavky pro správu a údržbu");

            var requirements = loin.CreateRequirementSet("Base requirements", "Base requirements for the window");

            requirements.Add(requirement);

            var geomReq = loin.CreateGeometryRequirements();

            geomReq.ID                  = Guid.NewGuid().ToString();
            geomReq.Name                = "Window geometry requirements";
            geomReq.Appearance          = "No textures";
            geomReq.Definition          = "Definition of the window geometry requirements";
            geomReq.Detailing           = Requirements.DetailingEnum.LowDetail;
            geomReq.Dimensionality      = Requirements.DimensionalityEnum.Dim_3D;
            geomReq.ParametricBehaviour = "not parametric";

            var context = new IContextEntity[] { actor, milestone, reason, item };

            foreach (var contextItem in context)
            {
                contextItem.AddToContext(requirements);
            }

            txn.Commit();

            // serialize as IFC
            loin.Save("LOIN.ifc");

            // serialize as XML
            loin.Save("LOIN.ifcXML");

            // validate IFC model
            var validator = new IfcValidator();
            var ok        = validator.Check(loin.Internal);

            Assert.IsTrue(ok);

            // get MVD
            var mvd = loin.GetMvd(XbimSchemaVersion.Ifc4, "en", "LOIN Representation", "Requirements defined using LOIN, represented as validation MVD", "LOIN", "Classification");

            // serialize MVD
            mvd.Save("LOIN.mvdXML");

            // validate MVD XML XSD
            var logger = Xbim.Common.XbimLogging.CreateLogger("MVDXML schema validation");
            var msg    = MvdValidator.ValidateXsd("LOIN.mvdXML", logger);

            Assert.IsTrue(string.IsNullOrWhiteSpace(msg));
        }
コード例 #4
0
 public void AddEntity(IContextEntity contextEntity)
 {
     contextEntity.Context = this;
 }
コード例 #5
0
ファイル: ValidationTests.cs プロジェクト: andyward/DSSTools
        public void ValidateSimpleLoinTest()
        {
            var editor = new XbimEditorCredentials
            {
                ApplicationDevelopersName = "CAS",
                ApplicationFullName       = "LOIN Creator",
                ApplicationIdentifier     = "LOIN",
                ApplicationVersion        = "4.0",
                EditorsFamilyName         = "Santini Aichel",
                EditorsGivenName          = "Johann Blasius",
                EditorsOrganisationName   = "Independent Architecture"
            };

            using var loin = Model.Create(editor);
            using var txn  = loin.Internal.BeginTransaction("LOIN creation");

            var actor     = loin.CreateActor("Client", "Owner of the building");
            var milestone = loin.CreateMilestone("Preliminary design", "Preliminary design handover milestone");
            var reason    = loin.CreatePurpose("Handoved", "Handover of data");
            var item      = loin.CreateBreakedownItem("Window", "E456.789.12", "Window is a building element used to controll light flow into the space");



            var width  = loin.CreateSimplePropertyTemplate("Width", "Width of the window", nameof(IfcLengthMeasure));
            var height = loin.CreateSimplePropertyTemplate("Height", "Height of the window", nameof(IfcLengthMeasure));
            var code   = loin.CreateSimplePropertyTemplate("BarCode", "Bar code of the window", nameof(IfcIdentifier));

            var requirement = loin.CreatePropertySetTemplate("FM Requirements", "Requirements for Facility Management");

            requirement.HasPropertyTemplates.Add(width);
            requirement.HasPropertyTemplates.Add(height);
            requirement.HasPropertyTemplates.Add(code);

            var requirements = loin.CreateRequirementSet("Base requirements", "Base requirements for the window");

            requirements.Add(requirement);

            var context = new IContextEntity[] { actor, milestone, reason, item };

            foreach (var contextItem in context)
            {
                contextItem.AddToContext(requirements);
            }

            txn.Commit();

            // get MVD
            var mvd = loin.GetMvd(XbimSchemaVersion.Ifc4, "en", "LOIN Representation", "Requirements defined using LOIN, represented as validation MVD", "LOIN", "Classification");

            mvd.Save("MinimalWindow.mvdXML");

            using var model       = IfcStore.Create(editor, Xbim.Common.Step21.XbimSchemaVersion.Ifc4, Xbim.IO.XbimStoreType.InMemoryModel);
            using var creationTxn = model.BeginTransaction();
            var i = model.Instances;

            var clsRel = i.New <IfcRelAssociatesClassification>(r =>
            {
                r.RelatingClassification = i.New <IfcClassificationReference>(c =>
                {
                    c.Name           = "Window";
                    c.Identification = "E456.789.12";
                });
            });
            var propsRel = i.New <IfcRelDefinesByProperties>(r =>
            {
                r.RelatingPropertyDefinition = i.New <IfcPropertySet>(pset =>
                {
                    pset.Name = "FM Requirements";
                    pset.HasProperties.AddRange(new[]
                    {
                        i.New <IfcPropertySingleValue>(p =>
                        {
                            p.Name         = "Width";
                            p.NominalValue = new IfcLengthMeasure(12.45);
                        }),
                        i.New <IfcPropertySingleValue>(p =>
                        {
                            p.Name         = "Height";
                            p.NominalValue = new IfcLengthMeasure(78.65);
                        }),
                        i.New <IfcPropertySingleValue>(p =>
                        {
                            p.Name         = "BarCode";
                            p.NominalValue = new IfcIdentifier("987fsd-54fsdf6456-dsf65464-fs456");
                        })
                    });
                });
            });
            var window = i.New <IfcWindow>(w =>
            {
                w.Name = "Window #1";
            });

            clsRel.RelatedObjects.Add(window);
            propsRel.RelatedObjects.Add(window);


            creationTxn.Commit();
            model.SaveAs("MinimalWindow.ifc");

            var engine      = new MvdEngine(mvd, model);
            var conceptRoot = engine.ConceptRoots.FirstOrDefault();

            Assert.IsTrue(conceptRoot.AppliesTo(window));

            foreach (var concept in conceptRoot.Concepts)
            {
                var passes = concept.Test(window, Xbim.MvdXml.Concept.ConceptTestMode.Raw);
                Assert.IsTrue(passes == ConceptTestResult.Pass);
            }
        }