public MLeaderDraw(string content, List <Point3d> points, Point3d basePt) { Init(); PrepareMtext(basePt, content); Vector3d offset = new Vector3d(2, 3.6, 0); MLeader mleader = new MLeader(); mleader.SetDatabaseDefaults(); mleader.ContentType = ContentType.MTextContent; mt.TransformBy(Matrix3d.Displacement(offset.DivideBy(asc.Scale))); mleader.MText = mt; foreach (Point3d ptt in points) { int idx = mleader.AddLeaderLine(basePt); mleader.SetFirstVertex(idx, ptt); } }
/// <summary> /// Выноска, которая создается если группа объектов вертикальная /// </summary> void PrepareSubLeader() { var pm = Input.Point("Выберите точку для дополнительной выноски"); if (Input.StatusBad) { return; } MLeader add_mleader = new MLeader(); add_mleader.SetDatabaseDefaults(); add_mleader.ContentType = ContentType.MTextContent; mt.Rotation = 0; mt.Location = pm; add_mleader.MText = mt; int idx = add_mleader.AddLeaderLine(pm); add_mleader.SetFirstVertex(idx, mtp); geometry.Add(add_mleader); }
static void PropertyMLeader(string name, int pow) { var acDoc = App.DocumentManager.MdiActiveDocument; var acCurDb = acDoc.Database; var acEd = acDoc.Editor; var sset = Input.Objects("Выберите объект"); if (Input.StatusBad) { return; } asc = UT.GetAnnoScale("CANNOSCALE"); Vector3d offset = new Vector3d(2, 3.6, 0); var areas = new List <double>(); using (var th = new TransactionHelper()) { var ents = th.EditObjects(sset); foreach (var e in ents) { var p = PropertyWorker.GetProperty(e, name); if (p == null) { Messaging.Tweet("Skip"); continue; } areas.Add((double)p.pValue); } } foreach (var d in areas) { double measured_d = PKUserTools.Measurings.UnitsForm.measuringUnits.Value(PKUserTools.Measurings.UnitsForm.modelUnits, d, pow); using (var th = new TransactionHelper()) { var pt1 = Input.Point("Первая точка выноски"); if (Input.StatusBad) { return; } var pt2 = Input.Point("Вторая точка выноски"); if (Input.StatusBad) { return; } //TODO сделать общий класс создания мультивыносок var mleader = new MLeader(); MText mt; PrepareMtext(0, out mt, acCurDb, pt2); mleader.SetDatabaseDefaults(); mleader.ContentType = ContentType.MTextContent; mt.TransformBy(Matrix3d.Displacement(offset.DivideBy(asc.Scale))); mt.Contents = string.Format("{0:F3}", measured_d); mleader.MText = mt; int idx = mleader.AddLeaderLine(pt1); mleader.SetFirstVertex(idx, pt1); th.WriteObject(mleader); } } }
/// <summary> /// Мультивыноска из объектов со стрелками на одной линии /// </summary> public void MakeArrowsInline() { base.Execute(); asc = UT.GetAnnoScale("CANNOSCALE"); var objects = new List <Entity>(); var points = new List <Point3d>(); Point3d p1, p2; Line p1p2; Vector3d offset = new Vector3d(2, 3.6, 0); var sset = Input.Objects("Выберите объекты"); if (Input.StatusBad) { return; } p1 = Input.Point("Выберите точку мультивыноски"); if (Input.StatusBad) { return; } p2 = Input.Point("Выберите точку для задания направления"); if (Input.StatusBad) { return; } p1p2 = new Line(p1, p2); Tweet("\nНачинаем транзакцию"); using (var th = new TransactionHelper()) { objects = th.ReadObjects(sset); Tweet("\nНачинаем поиск точек"); foreach (Entity ent in objects) { var pt_arr = UT.IntersectWith(p1p2, ent); if (pt_arr.Count > 0) { points.Add(pt_arr[0]); } } Tweet("\nНачинаем подготовку текста"); mtp = p1; text = "хх"; PrepareMtext(0); Tweet("\nНачинаем подготовку выноски"); MLeader mleader = new MLeader(); mleader.SetDatabaseDefaults(); mleader.ContentType = ContentType.MTextContent; mt.TransformBy(Matrix3d.Displacement(offset.DivideBy(asc.Scale))); mleader.MText = mt; Tweet("\nДобавляем линии"); foreach (Point3d ptt in points) { int idx = mleader.AddLeaderLine(p1); mleader.SetFirstVertex(idx, ptt); } Tweet("\nЗаписываем объекты"); th.WriteObject(mleader); } }