예제 #1
0
        public void DefaultRenderPackage_Properties()
        {
            //Arrange
            var render = new DefaultRenderPackage();

            //Act
            //This will populate the HasRenderingData property
            render.ApplyPointVertexColors(WhiteByteArrayOfLength(3));

            //This will populate the LineStripIndices property
            render.AddLineStripVertex(1, 2, 5);

            //This will populate the MeshIndices property
            render.AddTriangleVertex(1, 4, 5);

            //This will populate the MeshTextureCoordinates property
            render.AddTriangleVertexUV(2, 5);

            //This will populate the PointIndices property
            render.AddPointVertex(3, 6, 4);

            //Assert
            //Checking that the properties have the right value
            Assert.IsTrue(render.HasRenderingData);
            Assert.AreEqual((render.LineStripIndices as List <int>).Count, 1);
            Assert.AreEqual((render.MeshIndices as List <int>).Count, 1);
            Assert.AreEqual((render.MeshTextureCoordinates as List <double>).Count, 2);
            Assert.AreEqual((render.PointIndices as List <int>).Count, 1);
            Assert.AreEqual(render.ColorsStride, 0);
        }
예제 #2
0
        public static IList <GeometryObject> ToRevitType(
            this Autodesk.DesignScript.Geometry.Solid solid,
            TessellatedShapeBuilderTarget target     = TessellatedShapeBuilderTarget.Mesh,
            TessellatedShapeBuilderFallback fallback = TessellatedShapeBuilderFallback.Salvage,
            ElementId MaterialId           = null,
            bool performHostUnitConversion = true)
        {
            var rp = new DefaultRenderPackage();

            if (performHostUnitConversion)
            {
                var newSolid = solid.InHostUnits();
                newSolid.Tessellate(rp, new TessellationParameters());
                newSolid.Dispose();
            }
            else
            {
                solid.Tessellate(rp, new TessellationParameters());
            }

            var tsb = new TessellatedShapeBuilder()
            {
                Fallback = fallback, Target = target, GraphicsStyleId = ElementId.InvalidElementId
            };

            tsb.OpenConnectedFaceSet(false);

            var v = rp.MeshVertices.ToList();

            for (int i = 0; i < v.Count; i += 9)
            {
                var a = new XYZ(v[i], v[i + 1], v[i + 2]);
                var b = new XYZ(v[i + 3], v[i + 4], v[i + 5]);
                var c = new XYZ(v[i + 6], v[i + 7], v[i + 8]);

                var face = new TessellatedFace(new List <XYZ>()
                {
                    a, b, c
                }, MaterialId != null ? MaterialId : MaterialsManager.Instance.DynamoMaterialId);
                tsb.AddFace(face);
            }

            tsb.CloseConnectedFaceSet();
            tsb.Build();
            var result = tsb.GetBuildResult();

            return(result.GetGeometricalObjects());
        }
        public void DefaultGraphicPrimitives_Constructor()
        {
            //Arrange
            var data                       = new List <IGraphicPrimitives>();
            var renderingFactory           = new DefaultRenderPackageFactory();
            List <IRenderPackage> packages = new List <IRenderPackage>();

            packages.Add(renderingFactory.CreateRenderPackage());

            //Act
            var render = new DefaultRenderPackage();

            render.SetColors(WhiteByteArrayOfLength(2));//This will set the Colors property

            foreach (var package in packages)
            {
                data.Add(new DefaultGraphicPrimitives(render));
            }

            //Assert
            Assert.IsNotNull(render);
            Assert.AreEqual((render.Colors as byte[]).Length, 8);
        }
예제 #4
0
        public void VertexColorsTest()
        {
            //Arrange
            var render = new DefaultRenderPackage();

            //Act
            render.ApplyPointVertexColors(WhiteByteArrayOfLength(3));
            render.ApplyLineVertexColors(WhiteByteArrayOfLength(2));
            render.SetColors(WhiteByteArrayOfLength(2));

            //Assert
            //Checking that the properties were populated correctly
            Assert.AreEqual((render.PointVertexColors as List <byte>).Count, 12);
            Assert.AreEqual((render.LineStripVertexColors as List <byte>).Count, 8);
            Assert.AreEqual((render.Colors as byte[]).Length, 8);

            render.Clear();//Empty some properties of the DefaultRenderPackage class

            //Assert
            //Checking that the properties were cleaned
            Assert.AreEqual((render.PointVertexColors as List <byte>).Count, 0);
            Assert.AreEqual((render.LineStripVertexColors as List <byte>).Count, 0);
        }