/// <summary>Вставка мультивыноски</summary> /// <param name="txt">Содержимое мультивыноски</param> /// <param name="standardArrowhead">Стандартная стрелка. По умолчанию значение "_NONE"</param> public static void InsertMLeader(string txt, AutocadHelpers.StandardArrowhead standardArrowhead = AutocadHelpers.StandardArrowhead._NONE) { var doc = AcApp.DocumentManager.MdiActiveDocument; var ed = doc.Editor; var db = HostApplicationServices.WorkingDatabase; using (doc.LockDocument()) { var ppo = new PromptPointOptions($"\n{Language.GetItem(LangItem, "msg16")}") { AllowNone = true }; var ppr = ed.GetPoint(ppo); if (ppr.Status != PromptStatus.OK) { return; } // arrowHead var arrowHead = "_NONE"; if (standardArrowhead != AutocadHelpers.StandardArrowhead.closedFilled) { arrowHead = standardArrowhead.ToString(); } // Создаем текст var jig = new MLeaderJig { FirstPoint = AutocadHelpers.UcsToWcs(ppr.Value), MlText = txt, ArrowName = arrowHead }; var res = ed.Drag(jig); if (res.Status == PromptStatus.OK) { using (var tr = doc.TransactionManager.StartTransaction()) { var btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); btr.AppendEntity(jig.MLeader()); tr.AddNewlyCreatedDBObject(jig.MLeader(), true); tr.Commit(); } } doc.TransactionManager.QueueForGraphicsFlush(); } }
protected override bool WorldDraw(WorldDraw draw) { var wg = draw.Geometry; if (wg != null) { ObjectId arrId = AutocadHelpers.GetArrowObjectId(ArrowName); var mtxt = new MText(); mtxt.SetDatabaseDefaults(); mtxt.Contents = MlText; mtxt.Location = _secondPoint; mtxt.Annotative = AnnotativeStates.True; mtxt.TransformBy(AcApp.DocumentManager.MdiActiveDocument.Editor.CurrentUserCoordinateSystem); _mleader = new MLeader(); var ldNum = _mleader.AddLeader(); _mleader.AddLeaderLine(ldNum); _mleader.SetDatabaseDefaults(); _mleader.ContentType = ContentType.MTextContent; _mleader.ArrowSymbolId = arrId; _mleader.MText = mtxt; _mleader.TextAlignmentType = TextAlignmentType.LeftAlignment; _mleader.TextAttachmentType = TextAttachmentType.AttachmentBottomOfTopLine; _mleader.TextAngleType = TextAngleType.HorizontalAngle; _mleader.EnableAnnotationScale = true; _mleader.Annotative = AnnotativeStates.True; _mleader.AddFirstVertex(ldNum, FirstPoint); _mleader.AddLastVertex(ldNum, _secondPoint); _mleader.LeaderLineType = LeaderType.StraightLeader; _mleader.EnableDogleg = false; _mleader.DoglegLength = 0.0; _mleader.LandingGap = 1.0; _mleader.TextHeight = double.Parse(AcApp.GetSystemVariable("TEXTSIZE").ToString()); draw.Geometry.Draw(_mleader); } return(true); }