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); }
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); }
/// <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)); }
/// <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)); }
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)); }
public static Point Duplicate(this Point point) => Point.ByCoordinates(point.X, point.Y, point.Z);
public static Point ToPoint(this Triple t) => Point.ByCoordinates(t.X, t.Y, t.Z);