private static void AddVertexToCurrentWipeout(ObjectId wipeoutId) { var doc = Application.DocumentManager.MdiActiveDocument; var loop = true; while (loop) { using (doc.LockDocument()) { using (var tr = doc.TransactionManager.StartTransaction()) { var wipeout = tr.GetObject(wipeoutId, OpenMode.ForWrite) as Wipeout; if (wipeout != null) { var points3D = wipeout.GetVertices(); var polyline = new Polyline(); for (var i = 0; i < points3D.Count; i++) { polyline.AddVertexAt(i, new Point2d(points3D[i].X, points3D[i].Y), 0.0, 0.0, 0.0); } var jig = new AddVertexJig(); var result = jig.StartJig(polyline); if (result.Status != PromptStatus.OK) { loop = false; } else { polyline.AddVertexAt(jig.Vertex() + 1, jig.PickedPoint(), 0.0, 0.0, 0.0); var new2DPoints = new Point2dCollection(); for (var i = 0; i < polyline.NumberOfVertices; i++) { new2DPoints.Add(polyline.GetPoint2dAt(i)); } wipeout.SetFrom(new2DPoints, polyline.Normal); } } tr.Commit(); } } } }
public static void StartFunction() { #if !DEBUG Statistic.SendCommandStarting(ModPlusConnector.Instance); #endif try { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; var peo = new PromptEntityOptions($"\n{Language.GetItem(PlinesEditFunction.LangItem, "k13")}:") { AllowNone = false, AllowObjectOnLockedLayer = true }; peo.SetRejectMessage($"\n{Language.GetItem(PlinesEditFunction.LangItem, "wrong")}"); peo.AddAllowedClass(typeof(Polyline), true); var per = ed.GetEntity(peo); if (per.Status != PromptStatus.OK) { return; } var polylineId = per.ObjectId; var loop = true; using (doc.LockDocument()) { while (loop) { using (var tr = db.TransactionManager.StartTransaction()) { var dbObj = tr.GetObject(polylineId, OpenMode.ForWrite); if (dbObj is Polyline polyline) { var jig = new AddVertexJig(); var jigResult = jig.StartJig(polyline); if (jigResult.Status != PromptStatus.OK) { loop = false; } else { if (!polyline.IsWriteEnabled) { polyline.UpgradeOpen(); } polyline.AddVertexAt(jig.Vertex() + 1, jig.PickedPoint(), 0.0, 0.0, 0.0); } } tr.Commit(); } } } } catch (System.Exception exception) { ExceptionBox.Show(exception); } }