Ejemplo n.º 1
0
        public void CanSetOrderOfTwoJoinedElements()
        {
            int cuttingElementId  = 208422;
            int cutElementId      = 208572;
            int unjoinedElementId = 208259;

            List <int> unchangedOrder = new List <int>()
            {
                cuttingElementId, cutElementId
            };
            string invalidSwitchJoinOrderMessages = Revit.Properties.Resources.InvalidSwitchJoinOrder;

            // Joined elements
            var cuttingFraming = ElementSelector.ByElementId(cuttingElementId, true);
            var cutFraming     = ElementSelector.ByElementId(cutElementId, true);

            // Not Joined element
            var unjoinedElement = ElementSelector.ByElementId(unjoinedElementId, true);

            // Elements already in the wanted join order
            IEnumerable <Element> orderedElements   = Element.SetGeometryJoinOrder(cuttingFraming, cutFraming);
            List <int>            orderedElementIds = orderedElements.Select(elem => elem.Id).ToList();

            CollectionAssert.AreEqual(unchangedOrder, orderedElementIds);

            // Elements not in wanted join order
            IEnumerable <Element> switchedElements  = Element.SetGeometryJoinOrder(cutFraming, cuttingFraming);
            List <int>            changedElementIds = switchedElements.Select(elem => elem.Id).ToList();

            unchangedOrder.Reverse();
            CollectionAssert.AreEqual(unchangedOrder, changedElementIds);

            // Element not joined
            var ex = Assert.Throws <InvalidOperationException>(() => Element.SetGeometryJoinOrder(cutFraming, unjoinedElement));

            Assert.AreEqual(ex.Message, invalidSwitchJoinOrderMessages);
        }