public void MyMLeaderJig() { Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; string text = null; bool escape = false; // Get the text outside of the jig PromptStringOptions pso = new PromptStringOptions("\nEnter text: "); pso.AllowSpaces = true; PromptResult pr = ed.GetString(pso); text = pr.StringResult; do { PromptStringOptions pso2 = new PromptStringOptions("\nEnter Next Line: "); PromptResult pr2 = ed.GetString(pso2); text = text + @"\P" + pr2.StringResult; if (pr2.StringResult == "") { escape = true; } }while (!escape); if (pr.Status == PromptStatus.OK) { // Create MleaderJig MLeaderJig jig = new MLeaderJig(text); // Loop to set vertices bool bSuccess = true; for (int i = 0; i < 2; i++) { PromptResult dragres = ed.Drag(jig); bSuccess = (dragres.Status == PromptStatus.OK); // A new point was added if (bSuccess) { jig.AddVertex(); } } jig.RemoveLastVertex(); // Append entity Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead, false); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); btr.AppendEntity(jig.GetEntity()); tr.AddNewlyCreatedDBObject(jig.GetEntity(), true); tr.Commit(); } } }
/// <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(); } }
public void MyConduitTable() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; //Get the text oustide of the jig string conduits = SelectConduits(); //Set layer for ellipse to equal _mlLayer Transaction trLt = db.TransactionManager.StartTransaction(); using (trLt) { try { LayerTable lt = (LayerTable)trLt.GetObject(db.LayerTableId, OpenMode.ForRead); if (lt.Has(_mlLayer) == true) { db.Clayer = lt[_mlLayer]; trLt.Commit(); } else { try { CreateLayer(_mlLayer); db.Clayer = lt[_mlLayer]; trLt.Commit(); } catch (System.Exception ex) { ed.WriteMessage("Error: Can't create layer"); trLt.Abort(); } } } catch (System.Exception ex) { ed.WriteMessage("error: Can't make layer current."); trLt.Abort(); } } //End transaction to set layer and/or create it if doesn't exist to prevent crash. if (conduits == "" || conduits == null || conduits == "FAIL") { ed.WriteMessage("\nMust select at least [1] Conduit"); } else { //Call ellipse command first bool ec = EllipseCall.EllipseJigWait(); if (ec == true) { //Create MLeaderJig MLeaderJig jig = new MLeaderJig(conduits); //Loop to set vertices bool bSuccess = true, bComplete = false; while (bSuccess && !bComplete) { PromptResult dragres = ed.Drag(jig); bSuccess = (dragres.Status == PromptStatus.OK); if (bSuccess) jig.AddVertex(); bComplete = (dragres.Status == PromptStatus.None); if (bComplete) jig.RemoveLastVertex(); } if (bComplete) { //Append entity Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead, false); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false); btr.AppendEntity(jig.GetEntity()); tr.AddNewlyCreatedDBObject(jig.GetEntity(), true); tr.Commit(); } } } } }