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);
        }
Beispiel #2
0
        public static string AddSplitLineWithElevation(global::Revit.Elements.Element roof, Curve curve, double elevation)
        {
            Autodesk.Revit.DB.Document doc          = DocumentManager.Instance.CurrentDBDocument;
            Autodesk.Revit.DB.RoofBase internalRoof = (Autodesk.Revit.DB.RoofBase)roof.InternalElement;

            Point startPoint = Point.ByCoordinates(curve.StartPoint.X, curve.StartPoint.Y, elevation);
            Point endPoint   = Point.ByCoordinates(curve.EndPoint.X, curve.EndPoint.Y, elevation);

            string result;

            try
            {
                TransactionManager.Instance.EnsureInTransaction(DocumentManager.Instance.CurrentDBDocument);
                internalRoof.SlabShapeEditor.Enable();
                SlabShapeVertex vertex1 = internalRoof.SlabShapeEditor.DrawPoint(startPoint.ToXyz());
                SlabShapeVertex vertex2 = internalRoof.SlabShapeEditor.DrawPoint(endPoint.ToXyz());
                internalRoof.SlabShapeEditor.DrawSplitLine(vertex1, vertex2);
                TransactionManager.Instance.TransactionTaskDone();
                result = "Success.";
            }
            catch (Exception)
            {
                result = "not so success.";
            }

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 点投影到线
        /// </summary>
        /// <param name="po"></param>
        /// <param name="l"></param>
        /// <returns></returns>
        public static Point ProjectTo(this Point po, Line l)
        {
            XYZ     dbpo   = po.ToXyz();
            DBcurve dbline = l.ToRevitType();
            XYZ     newpo  = dbline.Project(dbpo).XYZPoint;

            return(Point.ByCoordinates(newpo.X, newpo.Y, newpo.Z));
        }
Beispiel #4
0
        /// <summary>
        /// Place a Revit FamilyInstance given the FamilyType (also known as the FamilySymbol in the Revit API) and its coordinates in world space
        /// </summary>
        /// <param name="familyType">Family Type. Also called Family Symbol.</param>
        /// <param name="x">X coordinate in meters</param>
        /// <param name="y">Y coordinate in meters</param>
        /// <param name="z">Z coordinate in meters</param>
        /// <returns></returns>
        public static FamilyInstance ByCoordinates(FamilyType familyType, double x = 0, double y = 0, double z = 0)
        {
            if (familyType == null)
            {
                throw new ArgumentNullException("familyType");
            }

            var pt = Point.ByCoordinates(x, y, z);

            return(ByPoint(familyType, pt));
        }
        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));
        }
Beispiel #6
0
        public static List <Point> TestInitPositions(int n)
        {
            List <Point> positions = new List <Point>();

            float r = 10f;

            for (int i = 0; i < n; i++)
            {
                positions.Add(Point.ByCoordinates(r * Math.Cos((float)i / n * Math.PI * 2f), r * Math.Sin((float)i / n * Math.PI * 2f), 0f));
            }

            return(positions);
        }
        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(UnitType.UT_Length)).ShouldBeApproximately(
                Point.ByCoordinates(0, 1, 2));
        }
        public void ByCoordinates_NullFamilySymbol()
        {
            var pt = Point.ByCoordinates(0, 1, 2);

            Assert.Throws(typeof(System.ArgumentNullException), () => FamilyInstance.ByCoordinates(null, 0, 1, 2));
        }
Beispiel #9
0
 public static Point Duplicate(this Point point) => Point.ByCoordinates(point.X, point.Y, point.Z);
Beispiel #10
0
 public static Point ToPoint(this Triple t) => Point.ByCoordinates(t.X, t.Y, t.Z);