コード例 #1
0
        public void ThrowsWithBadSchema()
        {
            var uris = new [] { "https://raw.githubusercontent.com/hypar-io/Schemas/master/ThisDoesn'tExist.json",
                                "https://raw.githubusercontent.com/hypar-io/Schemas/master/Mullion.json" };

            Assert.Throws <Exception>(() => TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(uris));
        }
コード例 #2
0
        public void MergesModelsWithUserDefinedTypes()
        {
            var schemas = new[] {
                "../../../models/Merge/Envelope.json",
                "../../../models/Merge/FacadePanel.json",
                "../../../models/Merge/Level.json"
            };

            var asm             = TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(schemas);
            var facadePanelType = asm.GetType("Elements.FacadePanel");

            Assert.NotNull(facadePanelType);
            var envelopeType = asm.GetType("Elements.Envelope");

            Assert.NotNull(envelopeType);
            var model1 = JsonConvert.DeserializeObject <Model>(File.ReadAllText("../../../models/Merge/facade.json"));
            var count1 = model1.Elements.Count;

            var model2 = JsonConvert.DeserializeObject <Model>(File.ReadAllText("../../../models/Merge/structure.json"));
            var count2 = model2.Elements.Count;

            var merge = new Model();

            merge.AddElements(model1.Elements.Values);
            merge.AddElements(model2.Elements.Values);
            merge.ToGlTF("models/Merge.glb");
        }
コード例 #3
0
        public void GeneratesInMemoryAssembly()
        {
            var uris = new [] { "https://raw.githubusercontent.com/hypar-io/Schemas/master/FacadeAnchor.json",
                                "https://raw.githubusercontent.com/hypar-io/Schemas/master/Mullion.json" };
            var asm         = TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(uris);
            var mullionType = asm.GetType("Test.Foo.Bar.Mullion");
            var anchorType  = asm.GetType("Test.Foo.Bar.FacadeAnchor");

            Assert.NotNull(mullionType);
            Assert.NotNull(anchorType);
            Assert.NotNull(mullionType.GetProperty("CenterLine"));
            Assert.NotNull(mullionType.GetProperty("Profile"));
            Assert.NotNull(anchorType.GetProperty("Location"));

            var ctors = mullionType.GetConstructors();

            Assert.Single <ConstructorInfo>(ctors);
            var centerLine = new Line(new Vector3(0, 0), new Vector3(5, 5));
            var profile    = new Profile(Polygon.Rectangle(0.1, 0.1));
            // Profile @profile, Line @centerLine, NumericProperty @length, Transform @transform, Material @material, Representation @representation, System.Guid @id, string @name
            var t       = new Transform();
            var m       = BuiltInMaterials.Steel;
            var mullion = Activator.CreateInstance(mullionType, new object[] { profile, centerLine, new NumericProperty(0, NumericPropertyUnitType.Length), t, m, new Representation(new List <SolidOperation>()), Guid.NewGuid(), "Test Mullion" });
        }