Ejemplo n.º 1
0
        public void Rotate_ZAxis()
        {
            var famSym  = FamilyType.ByName("Box");
            var pt      = Point.ByCoordinates(0, 1, 2);
            var famInst = FamilyInstance.ByPoint(famSym, pt);

            Assert.NotNull(famInst);

            var transform = famInst.InternalFamilyInstance.GetTransform();

            double[] rotationAngles;
            TransformUtils.ExtractEularAnglesFromTransform(transform, out rotationAngles);
            Assert.AreEqual(0.0, rotationAngles[0]);

            RevitServices.Persistence.DocumentManager.Instance.CurrentDBDocument.Regenerate();

            famInst.SetRotation(30);
            transform = famInst.InternalFamilyInstance.GetTransform();
            TransformUtils.ExtractEularAnglesFromTransform(transform, out rotationAngles);
            Assert.AreEqual(30.0, rotationAngles[0] * 180 / Math.PI, 1.0e-6);

            famInst.SetRotation(60);
            transform = famInst.InternalFamilyInstance.GetTransform();
            TransformUtils.ExtractEularAnglesFromTransform(transform, out rotationAngles);
            Assert.AreEqual(60.0, rotationAngles[0] * 180 / Math.PI, 1.0e-6);
        }
Ejemplo n.º 2
0
        public static bool IsMirrored(Revit.Elements.FamilyInstance familyInstance)
        {
            // Unwrap element
            var instance = (Autodesk.Revit.DB.FamilyInstance)familyInstance.InternalElement;

            return(instance.Mirrored);
        }
Ejemplo n.º 3
0
        public static Dictionary <string, Room> FromAndToRooms(Revit.Elements.FamilyInstance familyInstance, Revit.Elements.Element phase)
        {
            Autodesk.Revit.DB.FamilyInstance uwFi    = familyInstance.InternalElement as Autodesk.Revit.DB.FamilyInstance;
            Autodesk.Revit.DB.Phase          uwPhase = phase.InternalElement as Phase;

            Room fromRoom = null;
            Room toRoom   = null;

            var tempFromRoom = uwFi.get_FromRoom(uwPhase);
            var tempToRoom   = uwFi.get_ToRoom(uwPhase);

            if (tempFromRoom != null)
            {
                fromRoom = tempFromRoom.ToDSType(true) as Room;
            }

            if (tempToRoom != null)
            {
                toRoom = tempToRoom.ToDSType(true) as Room;
            }


            var returnDict = new Dictionary <string, Room>
            {
                { "FromRoom", fromRoom },
                { "ToRoom", toRoom },
            };

            return(returnDict);
        }
Ejemplo n.º 4
0
        public static Revit.Elements.FamilyInstance SuperComponent(Revit.Elements.FamilyInstance familyInstance)
        {
            // Unwrap input parameters
            var instance       = familyInstance.InternalElement as Autodesk.Revit.DB.FamilyInstance;
            var superComponent = instance.SuperComponent as Autodesk.Revit.DB.FamilyInstance;

            return(superComponent.ToDSType(true) as Revit.Elements.FamilyInstance);
        }
Ejemplo n.º 5
0
        public void FacingOrientation()
        {
            var famSym  = FamilyType.ByName("Box");
            var pt      = Point.ByCoordinates(0, 1, 2);
            var famInst = FamilyInstance.ByPoint(famSym, pt);

            Assert.NotNull(famInst);

            var dir = famInst.FacingOrientation;

            dir.IsAlmostEqualTo(Vector.ByCoordinates(0.0, 0.0, 1.0));
        }
Ejemplo n.º 6
0
        public static Revit.Elements.Room FromRoom(Revit.Elements.FamilyInstance familyInstance)
        {
            if (familyInstance == null)
            {
                return(null);
            }

            var instance = (Autodesk.Revit.DB.FamilyInstance)familyInstance.InternalElement;
            var fromRoom = instance.FromRoom;

            return(fromRoom == null ? null : fromRoom.ToDSType(true) as Revit.Elements.Room);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Flips the direction of FromRoom/ToRoom for this door or window.
        /// </summary>
        /// <param name="familyInstance"></param>
        /// <returns></returns>
        public static Revit.Elements.FamilyInstance FlipFromToRoom(Revit.Elements.FamilyInstance familyInstance)
        {
            Autodesk.Revit.DB.FamilyInstance uwFi = familyInstance.InternalElement as Autodesk.Revit.DB.FamilyInstance;

            TransactionManager.Instance.EnsureInTransaction(DocumentManager.Instance.CurrentDBDocument);

            uwFi.FlipFromToRoom();

            TransactionManager.Instance.TransactionTaskDone();
            //DocumentManager.Instance.CurrentDBDocument.Regenerate();

            return(familyInstance);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Returns true if the familyInstance has been flipped
        /// </summary>
        /// <param name="familyInstance"></param>
        /// <returns></returns>
        public static bool Flipped(Revit.Elements.FamilyInstance familyInstance)
        {
            Autodesk.Revit.DB.FamilyInstance uwFi = familyInstance.InternalElement as Autodesk.Revit.DB.FamilyInstance;

            if (!uwFi.CanFlipFacing && !uwFi.CanFlipHand)
            {
                throw new ArgumentException("familyInstance cannot be flipped");
            }

            bool flipped = (uwFi.FacingFlipped != uwFi.HandFlipped);

            return(flipped);
        }
Ejemplo n.º 9
0
        public static Revit.Elements.FamilyInstance ChangeType(
            Revit.Elements.FamilyInstance familyInstance,
            Revit.Elements.FamilyType familyType)
        {
            // Unwrap input parameters
            Autodesk.Revit.DB.FamilyInstance instance    = familyInstance.InternalElement as Autodesk.Revit.DB.FamilyInstance;
            Autodesk.Revit.DB.Element        anotherType = familyType.InternalElement;

            TransactionManager.Instance.EnsureInTransaction(DocumentManager.Instance.CurrentDBDocument);
            instance.ChangeTypeId(anotherType.Id);
            TransactionManager.Instance.TransactionTaskDone();

            return(familyInstance);
        }
Ejemplo n.º 10
0
        public void ByCoordinates_ProducesValidFamilyInstanceWithCorrectLocation()
        {
            var famSym  = FamilyType.ByName("Box");
            var famInst = FamilyInstance.ByCoordinates(famSym, 0, 1, 2);

            Assert.NotNull(famInst);

            var position = famInst.Location;

            position.ShouldBeApproximately(Point.ByCoordinates(0, 1, 2));

            // no unit conversion
            var internalPos =
                InternalLocation(famInst.InternalElement as Autodesk.Revit.DB.FamilyInstance);

            (internalPos * UnitConverter.HostToDynamoFactor(SpecTypeId.Length)).ShouldBeApproximately(
                Point.ByCoordinates(0, 1, 2));
        }
Ejemplo n.º 11
0
        public void CanPlaceFamilyInstanceByTypeAndCoordinateSystem()
        {
            // Arrange
            var famType          = ElementSelector.ByElementId(131610, true) as FamilyType;
            var coordinateSystem = CoordinateSystem.ByOrigin(0, 0)
                                   .Rotate(Autodesk.DesignScript.Geometry.Plane.ByOriginNormal(Point.ByCoordinates(0, 0), Vector.ByCoordinates(0, 0, 1)), 45);

            var expectedFacingOrientation = Vector.ByCoordinates(-0.707, 0.707, 0.000);

            // Act
            var familyInstance    = FamilyInstance.ByCoordinateSystem(famType, coordinateSystem);
            var facingOrientation = familyInstance.InternalFamilyInstance.FacingOrientation;

            // Assert
            Assert.AreEqual(expectedFacingOrientation.X, facingOrientation.X, Tolerance);
            Assert.AreEqual(expectedFacingOrientation.Y, facingOrientation.Y, Tolerance);
            Assert.AreEqual(expectedFacingOrientation.Z, facingOrientation.Z, Tolerance);
        }
Ejemplo n.º 12
0
        public void ByCoordinates_NullFamilySymbol()
        {
            var pt = Point.ByCoordinates(0, 1, 2);

            Assert.Throws(typeof(System.ArgumentNullException), () => FamilyInstance.ByCoordinates(null, 0, 1, 2));
        }
Ejemplo n.º 13
0
        public void ByPoint_NullPoint()
        {
            var famSym = FamilyType.ByName("Box");

            Assert.Throws(typeof(System.ArgumentNullException), () => FamilyInstance.ByPoint(famSym, null));
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Gets family instance from curtain Panel
 /// </summary>
 /// <returns></returns>
 public FamilyInstance AsFamilyInstance()
 {
     return(FamilyInstance.FromExisting(InternalElement as Autodesk.Revit.DB.FamilyInstance, true));
 }