/// <summary> /// Check if the position of a ModelText has changed, given the original ModelText Element /// and the new position in the SketchPlane /// </summary> /// <param name="oldModelText"></param> /// <param name="newSketchPlane"></param> /// <param name="xCoordinateInPlane"></param> /// <param name="yCoordinateInPlane"></param> /// <returns></returns> private static bool PositionUnchanged(Autodesk.Revit.DB.ModelText oldModelText, Autodesk.Revit.DB.SketchPlane newSketchPlane, double xCoordinateInPlane, double yCoordinateInPlane) { var oldPosition = ((LocationPoint)oldModelText.Location).Point; var plane = newSketchPlane.GetPlane(); var newPosition = plane.Origin + plane.XVec * xCoordinateInPlane + plane.YVec * yCoordinateInPlane; return (oldPosition.IsAlmostEqualTo(newPosition)); }
/// <summary> /// Create a ModelText element in the current Family Document /// </summary> /// <param name="text"></param> /// <param name="sketchPlane"></param> /// <param name="xCoordinateInPlane"></param> /// <param name="yCoordinateInPlane"></param> /// <param name="textDepth"></param> /// <param name="modelTextType"></param> /// <returns></returns> private static Autodesk.Revit.DB.ModelText CreateModelText(string text, Autodesk.Revit.DB.SketchPlane sketchPlane, double xCoordinateInPlane, double yCoordinateInPlane, double textDepth, Autodesk.Revit.DB.ModelTextType modelTextType) { TransactionManager.Instance.EnsureInTransaction(Document); // obtain the position of the ModelText element in the plane of the sketchPlane var plane = sketchPlane.GetPlane(); var pos = plane.Origin + plane.XVec * xCoordinateInPlane + plane.YVec * yCoordinateInPlane; // create the modeltext var mt = Document.FamilyCreate.NewModelText(text, modelTextType, sketchPlane, pos, HorizontalAlign.Left, textDepth); TransactionManager.Instance.TransactionTaskDone(); return mt; }