示例#1
0
        public void ToProtoType_ShouldReturnCorrectlyScaledMesh()
        {
            var allMeshesInDoc =
                ElementSelector.ByType <Autodesk.Revit.DB.Architecture.TopographySurface>(true)
                .Cast <Revit.Elements.Topography>()
                .SelectMany(x => x.InternalGeometry())
                .OfType <Autodesk.Revit.DB.Mesh>()
                .ToList();

            Assert.AreEqual(4, allMeshesInDoc.Count, "There should be 4 meshes in topography.rvt.  Has the file changed?");

            // get the big mesh in the doc
            var bigMesh = allMeshesInDoc.First(x => x.NumTriangles > 5000);

            // convert, performing unit conversion
            var convertedMesh = bigMesh.ToProtoType();

            var bb = BoundingBox.ByGeometry(convertedMesh.VertexPositions);

            var bbvol = BoundingBoxTests.BoundingBoxVolume(bb);
            var bbmin = bb.MinPoint;
            var bbmax = bb.MaxPoint;

            bbvol.ShouldBeApproximately(560845.185, 1e-2);
            bbmin.X.ShouldBeApproximately(-114.688, 1e-2);
            bbmax.X.ShouldBeApproximately(204.378, 1e-2);

            convertedMesh.Dispose();
        }
示例#2
0
        public void ByViewFacePointsAndValues_ValidArgs()
        {
            var fams    = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true);
            var famInst = fams.First() as Revit.Elements.FamilyInstance;

            var faceRef = famInst.ElementFaceReferences.First();

            var samplePoints = new[]
            {
                new double[] { 0, 0 },
                new[] { 0.1, 0.2 },
                new[] { 0, 0.1 }
            };

            var sampleValues = new[]
            {
                1.0,
                1092,
                -1
            };

            var doc  = Document.Current;
            var grid = FaceAnalysisDisplay.ByViewFacePointsAndValues(doc.ActiveView, faceRef, samplePoints,
                                                                     sampleValues);

            Assert.NotNull(grid);
        }
示例#3
0
        public void ByParametersOnFace_CreatesValidACFromElementFaceReference()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form  = ele as Form;
            var faces = form.ElementFaceReferences;

            Assert.IsTrue(faces.All(x => x != null));
            Assert.AreEqual(6, faces.Length);

            var ft = FamilyType.ByName("3PointAC");

            var uvs = new[]
            {
                Autodesk.DesignScript.Geometry.UV.ByCoordinates(0, 0),
                Autodesk.DesignScript.Geometry.UV.ByCoordinates(0.5, 0.5),
                Autodesk.DesignScript.Geometry.UV.ByCoordinates(0.5, 0)
            };

            var ac = AdaptiveComponent.ByParametersOnFace(uvs, faces.First(), ft);

            Assert.NotNull(ac);
        }
示例#4
0
        public void ByViewFacePointsAndValues_BadArgs()
        {
            var fams    = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true);
            var famInst = fams.First() as Revit.Elements.FamilyInstance;

            var faceRef = famInst.ElementFaceReferences.First();

            var samplePoints = new[]
            {
                new double[] { 0, 0 },
                new[] { 0.5, 0 },
                new[] { 0, 0.5 }
            };

            var sampleValues = new[]
            {
                1.0,
                1092,
                -1
            };

            var doc = Document.Current;

            Assert.Throws(typeof(System.ArgumentNullException), () => FaceAnalysisDisplay.ByViewFacePointsAndValues(null, faceRef, samplePoints, sampleValues));
            Assert.Throws(typeof(System.ArgumentNullException), () => FaceAnalysisDisplay.ByViewFacePointsAndValues(doc.ActiveView, null, samplePoints, sampleValues));
            Assert.Throws(typeof(System.ArgumentNullException), () => FaceAnalysisDisplay.ByViewFacePointsAndValues(doc.ActiveView, faceRef, null, sampleValues));
            Assert.Throws(typeof(System.ArgumentNullException), () => FaceAnalysisDisplay.ByViewFacePointsAndValues(doc.ActiveView, faceRef, samplePoints, null));
        }
示例#5
0
        public void CreateOverrideGraphicSettings_ValidArgs()
        {
            Revit.Filter.OverrideGraphicSettings overrides = Revit.Filter.OverrideGraphicSettings.ByProperties(null, null, null, null, null, null, null, null);

            Element   wall = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true).First();
            Parameter p    = new Parameter(wall.InternalElement.LookupParameter("Comments"));

            var filterRule = Revit.Filter.FilterRule.ByRuleType(Revit.Filter.FilterRule.RuleType.BeginsWith.ToString(), "my", p);

            var filter = Revit.Filter.ParameterFilterElement.ByRules("myFilter",
                                                                     new System.Collections.Generic.List <Category>()
            {
                Category.ByName("Walls")
            },
                                                                     new System.Collections.Generic.List <Revit.Filter.FilterRule>()
            {
                filterRule
            });

            Assert.NotNull(filter);
            Assert.AreEqual(filter.Name, "myFilter");


            Revit.Application.Document.Current.ActiveView.AddFilter(filter);
            Revit.Application.Document.Current.ActiveView.SetFilterOverrides(filter, overrides);

            var appliedOverrides = Revit.Application.Document.Current.ActiveView.FilterOverrides(filter);

            Assert.NotNull(appliedOverrides);
        }
示例#6
0
        public void ToProtoType_Boolean_ShouldConvertSolidInDocument()
        {
            var allGeometries = ElementSelector.ByType <Autodesk.Revit.DB.ImportInstance>(true)
                                .SelectMany(x => x.Geometry())
                                .ToList();

            Assert.AreEqual(5, allGeometries.Count);
        }
示例#7
0
        public void DuplicateSheet_BadArgs()
        {
            var sheets = ElementSelector.ByType <Autodesk.Revit.DB.ViewSheet>(true).Where(x => (x as Sheet).SheetNumber.Equals("A001"));
            var sheet  = sheets.First() as Sheet;

            Assert.Throws(typeof(ArgumentNullException), () => Sheet.DuplicateSheet(null, true, true, 0, "Test"));
            Assert.Throws(typeof(ArgumentException), () => Sheet.DuplicateSheet(sheet, true, true, 3));
        }
示例#8
0
        public void CreateFilterRule_ValidArgs()
        {
            Element   wall = ElementSelector.ByType <Autodesk.Revit.DB.Wall>(true).First();
            Parameter p    = new Parameter(wall.InternalElement.LookupParameter("Comments"));

            var filterRule = Revit.Filter.FilterRule.ByRuleType(Revit.Filter.FilterRule.RuleType.BeginsWith.ToString(), "my", p);

            Assert.NotNull(filterRule);
        }
        public void ToProtoType_Boolean_ShouldConvertAllHermiteFormsInDocument()
        {
            var formSolids = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true)
                             .Cast <Revit.Elements.Form>()
                             .SelectMany(x => x.InternalGeometry())
                             .OfType <Autodesk.Revit.DB.Solid>();

            AssertAllSolidsAreConvertedProperly(formSolids);
        }
        public void ToProtoType_Boolean_ShouldConvertCutWallsInDocument()
        {
            var allSolidsInDoc = ElementSelector.ByType <Autodesk.Revit.DB.Wall>(true)
                                 .Cast <Revit.Elements.Wall>()
                                 .SelectMany(x => x.InternalGeometry())
                                 .OfType <Autodesk.Revit.DB.Solid>()
                                 .ToList();

            Assert.AreEqual(3, allSolidsInDoc.Count);
            AssertAllSolidsAreConvertedProperly(allSolidsInDoc);
        }
示例#11
0
        public void SolidsProperty_ValidObject()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form   = ele as Form;
            var solids = form.Solids;

            Assert.IsTrue(solids.All(x => x != null));
            Assert.AreEqual(1, solids.Length);
        }
示例#12
0
        public void FaceReferencesProperty_ValidObject()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form  = ele as Form;
            var faces = form.ElementFaceReferences;

            Assert.IsTrue(faces.All(x => x != null));
            Assert.AreEqual(6, faces.Length);
        }
示例#13
0
        public void DuplicateSheet_ValidArgs()
        {
            var sheets = ElementSelector.ByType <Autodesk.Revit.DB.ViewSheet>(true).Where(x => (x as Sheet).SheetNumber.Equals("A001"));
            var sheet  = sheets.First() as Sheet;

            var newSheetNumber = "Test" + sheet.SheetNumber;

            var duplicateSheet = Sheet.DuplicateSheet(sheet, true, true, 0, "Test");

            Assert.NotNull(duplicateSheet);
            Assert.AreEqual(duplicateSheet.SheetNumber, newSheetNumber);
        }
示例#14
0
        public void ByFaceUVDivisions_InvalidDivisions()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form = ele as Form;
            var face = form.ElementFaceReferences.First();

            Assert.Throws(typeof(Exception), () => DividedSurface.ByFaceAndUVDivisions(face, 5, 0));
            Assert.Throws(typeof(Exception), () => DividedSurface.ByFaceAndUVDivisions(face, 0, 5));
            Assert.Throws(typeof(Exception), () => DividedSurface.ByFaceAndUVDivisions(face, 0, 0));
        }
        public void TestLocationOfStructuralFraming()
        {
            var e = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true).FirstOrDefault();

            Assert.NotNull(e);

            var beam = e as StructuralFraming;

            Assert.NotNull(beam);
            var curve = beam.Location;

            Assert.NotNull(curve.StartPoint);
            Assert.NotNull(curve.EndPoint);
        }
示例#16
0
        public void ByParametersOnFaceReference_ShouldPlaceReferencePointCorrectly()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form    = ele as Form;
            var faceRef = form.ElementFaceReferences.First();

            var pt = ReferencePoint.ByParametersOnFaceReference(faceRef, 0.5, 0.5);

            Assert.NotNull(pt);
            pt.X.ShouldBeApproximately(-18.19622727891606);
        }
示例#17
0
        public void ByLoftingCurveReferences_ValidArgs()
        {
            IEnumerable <ElementCurveReference> eles =
                ElementSelector.ByType <Autodesk.Revit.DB.CurveElement>(true)
                .Cast <ModelCurve>()
                .Select(x => x.ElementCurveReference);

            Assert.AreEqual(2, eles.Count());

            var loft = Form.ByLoftingCurveReferences(eles.ToArray(), false);

            Assert.NotNull(loft);
            Assert.IsTrue(DocumentManager.Instance.ElementExistsInDocument(
                              new ElementUUID(loft.InternalElement.UniqueId)));
        }
示例#18
0
        public void ByFaceUVDivisionsRotation_ValidArgs()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);

            var form = ele as Form;
            var face = form.ElementFaceReferences.First();

            var divSrf = DividedSurface.ByFaceUVDivisionsAndRotation(face, 5, 6, 30);

            Assert.NotNull(divSrf);

            Assert.AreEqual(5, divSrf.UDivisions);
            Assert.AreEqual(6, divSrf.VDivisions);
            Assert.AreEqual(30.0, divSrf.Rotation, 0.001);
        }
示例#19
0
        public void AllSolidsConvert()
        {
            var allSolidsInDoc = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true)
                                 .Cast <Revit.Elements.Form>()
                                 .SelectMany(x => x.InternalGeometry())
                                 .OfType <Autodesk.Revit.DB.Solid>()
                                 .ToList();

            foreach (var solid in allSolidsInDoc)
            {
                var asmSolid = solid.ToProtoType();

                asmSolid.Volume.ShouldBeApproximately(solid.Volume);
                asmSolid.Area.ShouldBeApproximately(solid.SurfaceArea);
                Assert.AreEqual(solid.Faces.Size, asmSolid.Faces.Length);
                asmSolid.Centroid().ShouldBeApproximately(solid.ComputeCentroid());
            }
        }
示例#20
0
        public void SetParameterByName_Element_CanSuccessfullySetMaterialByElement()
        {
            var mat = Revit.Elements.Material.ByName("Glass");

            var ele = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true).First();

            var paramName = "Body Material";
            var elemId0   = ele.GetParameterValueByName(paramName);

            Assert.AreNotEqual(mat.Id, elemId0);

            ele.SetParameterByName(paramName, mat);

            DocumentManager.Regenerate();

            var elemId1 = ele.GetParameterValueByName(paramName) as Element;

            Assert.AreEqual(mat.InternalElement.Id, elemId1.InternalElement.Id);
        }
示例#21
0
        public void CanCreateViewportOnSheet()
        {
            // Arrange
            var sheet = ElementSelector.ByType <Autodesk.Revit.DB.ViewSheet>(true).First() as Sheet;
            var view  = CreateTestView();
            var point = Point.ByCoordinates(250, 250);

            var expectedExceptionMessage = Revit.Properties.Resources.ViewAlreadyPlacedOnSheet;

            // Act
            var viewport          = Viewport.BySheetViewLocation(sheet, view, point);
            var viewportLocation  = viewport.InternalViewport.GetBoxCenter().ToPoint() as Point;
            var exceptionViewport = Assert.Throws <InvalidOperationException>(() => Viewport.BySheetViewLocation(sheet, view, point));

            // Assert
            Assert.AreEqual(viewport.GetType(), typeof(Viewport));
            Assert.AreEqual(point.X, viewportLocation.X, Tolerance);
            Assert.AreEqual(point.Y, viewportLocation.Y, Tolerance);
            Assert.AreEqual(expectedExceptionMessage, exceptionViewport.Message);
        }
示例#22
0
        public void CreateParameterFilterElement_ValidArgs()
        {
            Element   wall = ElementSelector.ByType <Autodesk.Revit.DB.FamilyInstance>(true).First();
            Parameter p    = new Parameter(wall.InternalElement.LookupParameter("Comments"));

            var filterRule = Revit.Filter.FilterRule.ByRuleType(Revit.Filter.FilterRule.RuleType.BeginsWith.ToString(), "my", p);

            var filter = Revit.Filter.ParameterFilterElement.ByRules("myFilter",
                                                                     new System.Collections.Generic.List <Category>()
            {
                Category.ByName("Walls")
            },
                                                                     new System.Collections.Generic.List <Revit.Filter.FilterRule>()
            {
                filterRule
            });

            Assert.NotNull(filter);
            Assert.AreEqual(filter.Name, "myFilter");
        }
示例#23
0
        public void ToProtoType_SucceedsForRevolvedEllipse()
        {
            // extract revolved solid from doc
            var revolvedEllipse = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true)
                                  .Cast <Revit.Elements.Form>()
                                  .SelectMany(x => x.InternalGeometry())
                                  .OfType <Autodesk.Revit.DB.Solid>()
                                  .First();

            // get the faces from the solid
            var faces = revolvedEllipse.Faces.Cast <Autodesk.Revit.DB.Face>();

            Assert.AreEqual(2, faces.Count());

            var face = faces.First();

            var r = face.ToProtoType(false);

            Assert.AreEqual(1, r.Count());

            r.First().Area.ShouldBeApproximately(face.Area, 1e-1);
        }
示例#24
0
        public void FormByType_ValidArgs()
        {
            var ele = ElementSelector.ByType <Autodesk.Revit.DB.Form>(true).FirstOrDefault();

            Assert.NotNull(ele);
        }