public static void GetAngle() { PromptStatus status = new PromptStatus(); double userInput = DrawingSpace.GetAngle("Input angle:", ref status, AngleMode.Degrees); Editor command = Application.DocumentManager.MdiActiveDocument.Editor; command.WriteMessage("Result: " + userInput); }
public static void GeDouble() { PromptStatus status = new PromptStatus(); double userInput = DrawingSpace.GetDouble("Input double:", ref status, false); Editor command = Application.DocumentManager.MdiActiveDocument.Editor; command.WriteMessage("Result: " + userInput); }
internal PromptNestedEntityThroughViewportResult(PromptNestedEntityResult pneResult) { m_status = pneResult.Status; m_stringResult = pneResult.StringResult; m_pickPoint = pneResult.PickedPoint; m_value = pneResult.ObjectId; m_containers = pneResult.GetContainers(); m_mat = pneResult.Transform; m_viewport = Autodesk.AutoCAD.DatabaseServices.ObjectId.Null; }
internal PromptNestedEntityThroughViewportResult(PromptResult pneResult) { m_status = pneResult.Status; m_stringResult = pneResult.StringResult; m_pickPoint = Point3d.Origin; m_value = Autodesk.AutoCAD.DatabaseServices.ObjectId.Null; m_containers = null; m_mat = Matrix3d.Identity; m_viewport = Autodesk.AutoCAD.DatabaseServices.ObjectId.Null; }
internal PromptNestedEntityThroughViewportResult(PromptNestedEntityResult pneResult, ObjectId viewport) { m_status = pneResult.Status; m_stringResult = pneResult.StringResult; m_pickPoint = pneResult.PickedPoint; m_value = pneResult.ObjectId; m_containers = pneResult.GetContainers(); m_mat = pneResult.Transform; m_viewport = viewport; }
/// <summary> /// Prompts the user to input a distance. /// </summary> /// <param name="message">Message to display in the command line.</param> /// <returns>The distance input by the user.</returns> public static double GetDistance(string message, ref PromptStatus status) { PromptDistanceOptions options = new PromptDistanceOptions(System.Environment.NewLine + message); Editor command = Application.DocumentManager.MdiActiveDocument.Editor; PromptDoubleResult result = command.GetDistance(options); status = result.Status; return(result.Value); }
/// <summary> /// Prompts the user to select a point in the drawing. /// </summary> /// <param name="message">Message to display in the command line.</param> public static Point3d GetPoint3d(string message, ref PromptStatus status) { PromptPointOptions options = new PromptPointOptions(message); PromptPointResult result; Editor command = Application.DocumentManager.MdiActiveDocument.Editor; options.AllowNone = true; result = command.GetPoint(options); status = result.Status; return(result.Value); }
getPoint(string strPrompt, Point3d pnt3d, out bool escape, out PromptStatus promptStatus, int osMode) { object mode = SnapMode.getOSnap(); SnapMode.setOSnap(osMode); promptStatus = PromptStatus.Error; escape = false; Point3d pnt3dX = Pub.pnt3dO; Editor ED = BaseObjs._editor; PromptPointResult PPR = null; PromptPointOptions PPO = new PromptPointOptions(strPrompt); PPO.AllowNone = true; if (pnt3d != pnt3dX) { PPO.AllowNone = true; PPO.UseBasePoint = true; PPO.BasePoint = pnt3d; PPO.UseDashedLine = true; } try { PPR = ED.GetPoint(PPO); switch (PPR.Status) { case PromptStatus.Cancel: escape = true; break; case PromptStatus.Other: pnt3dX = Pub.pnt3dO; break; case PromptStatus.OK: pnt3dX = PPR.Value; break; } promptStatus = PPR.Status; } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " UserInput.cs: line: 138"); } finally { SnapMode.setOSnap((int)mode); } return(pnt3dX); }
public override PromptStatus JigDraw() { PromptStatus res = PromptStatus.Cancel; if ((res = base.JigDraw()) != PromptStatus.OK) { return(PromptStatus.Cancel); } if (!_lowerComplite) { _lowerComplite = true; } if ((res = base.JigDraw()) != PromptStatus.OK) { return(PromptStatus.Cancel); } if (!_lowerJigComplite) { _lowerJigComplite = true; var ids = Tools.AppendEntity(Entities); Entities.Clear(); var brId = ids.FirstOrDefault(); if (brId != ObjectId.Null) { Tools.StartTransaction(() => { brId.GetObjectForRead <BlockReference>(); var xrecord = CustomObjects.Helpers.XRecordTools.GetSetExtensionDictionaryEntry(brId, "ARROW_JigPosition").GetObjectForRead <Xrecord>(); xrecord.UpgradeOpen(); //Point3d p = _jigPoint.TransformBy(Arrow.GetToLocalTransform(_lowerPointUcs, _ucs)); Point3d p = _jigPoint.TransformBy(_ucs); ResultBuffer rb = new ResultBuffer( new TypedValue((int)DxfCode.Real, p.X), new TypedValue((int)DxfCode.Real, p.Y), new TypedValue((int)DxfCode.Real, p.Z) ); xrecord.Append(rb); }); } } /*if ((res = base.JigDraw()) != PromptStatus.OK) * return PromptStatus.Cancel; * if (!_upperComplite) * _upperComplite = true;*/ return(res); }
public static SelectionSet Implied() { Init(); var result = acEd.SelectImplied(); if (result.Status == PromptStatus.OK) { Console.WriteLine("Зашли в имплайед"); } status = result.Status; return(result.Value); }
public PromptStatus StartJig() { PromptStatus res = PromptStatus.Other; while ((res = Tools.GetAcadEditor().Drag(this).Status) != PromptStatus.Cancel) { if (res == PromptStatus.OK) { return(res); } } return(res); }
/*Переход на полилинию на перспективу * [RibbonCommandButton("Стрелки отклонения", "Стрелки")] * [Autodesk.AutoCAD.Runtime.CommandMethod("iCmd_DrawValueArrows", Autodesk.AutoCAD.Runtime.CommandFlags.UsePickSet)] * public static void DrawValueArrows() * { * Matrix3d ucs = CoordinateSystem.CoordinateTools.GetCurrentUcs(); * double tolerance = _dataProvider.Read("tolerance", 0.005d); * bool isToleranceOnly = _dataProvider.Read("isToleranceOnly", false); * * Polyline pline; * if (!ObjectCollector.TrySelectAllowedClassObject(out pline)) * return; * * * PromptPointOptions ppo = new PromptPointOptions("\nУкажите фактическое положение:"); * ppo.AllowArbitraryInput = false; * ppo.Keywords.Add("Tolerance", "ДОПуск", "ДОПуск", true, true); * ppo.Keywords.Add("IsToleranceOnlyTrue", "ТОЛькоВДопуске", "ТОЛько В Допуске", true, true); * ppo.Keywords.Add("IsToleranceOnlyFalse", "ФАКТически", "ФАКТические данные", true, true); * ppo.Keywords.Add("Exit", "ВЫХод", "ВЫХод", true, true); * * PromptPointResult ppr; * while ((ppr = Tools.GetAcadEditor().GetPoint(ppo)).Status == PromptStatus.OK || ppr.Status == PromptStatus.Keyword) * { * var insertPoint = pline.GetOrthoNormalPoint(ppr.Value, new Plane()); * if (insertPoint == null || !insertPoint.HasValue) * continue; * try * { * Vector3d axisVector = pline.GetFirstDerivative(insertPoint.Value); * ValueArrow mainBlock = new ValueArrow(axisVector, ucs); * mainBlock._isToleranceOnly = isToleranceOnly; * mainBlock._toleranceBottom = tolerance; * mainBlock._insertPointUcs = insertPoint.Value; * * PromptStatus res = PromptStatus.Cancel; * if ((res = mainBlock.JigDraw()) != PromptStatus.OK) * return; * * _dataProvider.Write("tolerance", mainBlock._toleranceBottom); * _dataProvider.Write("isToleranceOnly", mainBlock._isToleranceOnly); * } * catch (Exception ex) * { * Tools.GetAcadEditor().WriteMessage($"\n\aОшибка \n{ex.Message}"); * return; * } * } * * } */ #endregion /// <summary> /// Основной метод вывода данных. Рисует стрелки по полученным с экрана точкам /// </summary> /// <param name="axisVector">Вектор направления оси/грани (перпендикулярно стрелкам)</param> /// <param name="ucs">Текущая ПСК</param> /// <param name="onlyOnce">ИСТИНА если нужно выполнить только раз, иначе цикл</param> /// <returns></returns> public static PromptStatus DrawWallArrows(Vector3d axisVector, Matrix3d ucs, bool onlyOnce = false, bool mirrorText = false) { double toleranceBottom = /*0.005;*/ _dataProvider.Read("tolerance", 0.005d); bool isToleranceOnly = /*false;*/ _dataProvider.Read("isToleranceOnly", false); object mirrorTextValue = null; if (mirrorText) { mirrorTextValue = SetMirrorTextValue(1); } try { Point3d?insertPoint = Point3d.Origin; while ((insertPoint = GetInsertPoint(axisVector, ucs, ref toleranceBottom, ref isToleranceOnly)).HasValue) { PromptStatus res = PromptStatus.Cancel; ValueArrow mainBlock = new ValueArrow(axisVector, ucs); mainBlock._isToleranceOnly = isToleranceOnly; mainBlock._toleranceBottom = toleranceBottom; mainBlock._insertPointUcs = insertPoint.Value; if ((res = mainBlock.JigDraw()) != PromptStatus.OK) { return(res); } if (onlyOnce) { break; } _dataProvider.Write("tolerance", mainBlock._toleranceBottom); _dataProvider.Write("isToleranceOnly", mainBlock._isToleranceOnly); } return(PromptStatus.OK); } catch (Exception ex) { Tools.GetAcadEditor().WriteMessage(ex.Message); return(PromptStatus.Error); } finally { if (mirrorText) { SetMirrorTextValue(mirrorTextValue); } } }
FindAtPoint(Point3d worldPoint, bool selectAll = true) { List <ObjectId> ids = new List <ObjectId>(); Document doc = Application.DocumentManager.MdiActiveDocument; Matrix3d wcs2ucs = doc.Editor.CurrentUserCoordinateSystem.Inverse(); Point3d ucsPoint = worldPoint.TransformBy(wcs2ucs); string arg = selectAll ? ":E" : string.Empty; IntPtr ptrPoint = Marshal.UnsafeAddrOfPinnedArrayElement( worldPoint.ToArray(), 0); PromptStatus prGetResult = ArxImports.acedSSGet( arg, ptrPoint, IntPtr.Zero, IntPtr.Zero, out ArxImports.Ads_name sset); ArxImports.acedSSLength(ref sset, out int len); if (len <= 0) { return(ids); } for (int i = 0; i < len; ++i) { if (ArxImports.acedSSName( ref sset, i, out ArxImports.Ads_name name) != PromptStatus.OK) { continue; } if (ArxImports.acdbGetObjectId( out ObjectId id, ref name) != ErrorStatus.OK) { continue; } ids.Add(id); } ArxImports.acedSSFree(ref sset); return(ids); }
selectCogoPointByNode(string prompt, int osMode) { ObjectId id = ObjectId.Null; PromptStatus ps = PromptStatus.Cancel; Point3d pnt3dBase = UserInput.getPoint(prompt, out ps, osMode); BaseObjs._db.forEachMS <CogoPoint>(cg => { if (cg.Location == pnt3dBase) { id = cg.ObjectId; } }); return(id); }
/// <summary> /// Prompts the user to input a string. /// </summary> /// <param name="message">Message to display in the command line.</param> /// <returns>The string the user wrote or the default value if nothing was written.</returns> /// <remarks>If the user doesn't select anything, status will still return OK, not None.</remarks> public static string GetString(string message, ref PromptStatus status, bool allowSpaces, string defaultValue) { PromptStringOptions options = new PromptStringOptions(System.Environment.NewLine + message); options.AllowSpaces = allowSpaces; options.DefaultValue = defaultValue; Editor command = Application.DocumentManager.MdiActiveDocument.Editor; PromptResult result = command.GetString(options); status = result.Status; return(result.StringResult); }
/// <summary> /// Prompts the user to input a double. /// </summary> /// <param name="message">Message to display in the command line.</param> /// <param name="allowNone">If false, the user is forced to enter a number or cancel.</param> /// <returns>The integer the user wrote. Any other operation will return the default value.</returns> public static int GetInteger(string message, ref PromptStatus status, bool allowNone, int defaultValue) { PromptIntegerOptions options = new PromptIntegerOptions(System.Environment.NewLine + message); options.AllowNone = allowNone; options.DefaultValue = defaultValue; Editor command = Application.DocumentManager.MdiActiveDocument.Editor; PromptIntegerResult result = command.GetInteger(options); status = result.Status; return(result.Value); }
/// <summary> /// Prompts the user to select a keyword from a list. /// </summary> /// <param name="message">Message to display in the command line.</param> /// <param name="keywords">List of keywords from which the user will choose.</param> /// <returns>The keyword selected by the user.</returns> /// <remarks>The keywords must be single words. If a keyword includes spaces, /// only the first word will be returned.</remarks> public static string GetKeyword(string message, ref PromptStatus status, string[] keywords) { PromptKeywordOptions options = new PromptKeywordOptions(message); PromptResult result; Editor command = Application.DocumentManager.MdiActiveDocument.Editor; foreach (string keyword in keywords) { options.Keywords.Add(keyword); } result = command.GetKeywords(options); status = result.Status; return(result.StringResult); }
public PromptStatus JigDraw(bool isDestPointSelected) { PromptStatus promptStatus = PromptStatus.OK; if (!isDestPointSelected) { _jigSelected = false; promptStatus = base.JigDraw(); } if (promptStatus == PromptStatus.OK) { _jigSelected = true; base.JigDraw(); } return(promptStatus); }
selectCogoPointByNode(string prompt, ref Point3d pnt3dBase, out bool escape, out PromptStatus ps, int osMode) { ObjectId id = ObjectId.Null; pnt3dBase = UserInput.getPoint(prompt, pnt3dBase, out escape, out ps, osMode); Point3d pnt3dTar = pnt3dBase; BaseObjs._db.forEachMS <CogoPoint>(cg => { if (cg.Location == pnt3dTar) { id = cg.ObjectId; } }); return(id); }
S(Point3d pnt3d, string desc) { ObjectId idPnt3d = ObjectId.Null; Object osMode = SnapMode.getOSnap(); SnapMode.setOSnap(0); PromptStatus ps = PromptStatus.Cancel; try { if (pnt3d == Pub.pnt3dO) { pnt3d = UserInput.getPoint("New Point: ", out ps, osMode: 641); if (pnt3d == Pub.pnt3dO) { return(ObjectId.Null); } else { if (pnt3d.Z == 0.0) { double elev; bool escape = UserInput.getUserInput("Enter Elevation: ", out elev, 0.0); if (escape) { return(ObjectId.Null); } pnt3d = new Point3d(pnt3d.X, pnt3d.Y, elev); } } } uint pntNum; ObjectId idCgPnt = pnt3d.setPoint(out pntNum, desc); } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " cmdS.cs: line: 48"); } finally { SnapMode.setOSnap((int)osMode); } return(idPnt3d); }
public void InsertTabalimBlock() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; String blkDirectory = Assembly.GetAssembly(typeof(Tabalim.Addin.Runtime.Commands)).Location; blkDirectory = Path.GetDirectoryName(blkDirectory); blkDirectory = Path.Combine(blkDirectory, BLOCK_DIR); View.WinBlockInsert win = new View.WinBlockInsert(); win.ShowDialog(); AutoCADUtils.VoidTransaction((Document doc, Transaction tr) => { if (win.DialogResult.Value) { String blockName = win.SelectedBlock.Index.ToString(), file = Path.Combine(blkDirectory, String.Format("{0}.dwg", blockName)); tr.LoadBlock(doc.Database, file, blockName); } ; }); PromptStatus status = PromptStatus.OK; PromptPointResult res; while (status == PromptStatus.OK) { AutoCADUtils.VoidTransaction((Document doc, Transaction tr) => { String blockName = win.SelectedBlock.Index.ToString(); BlockTable blkTab = (BlockTable)doc.Database.BlockTableId.GetObject(OpenMode.ForRead); BlockTableRecord currentSpace = (BlockTableRecord)doc.Database.CurrentSpaceId.GetObject(OpenMode.ForWrite); res = ed.GetPoint(new PromptPointOptions("Selecciona el punto de inserción del bloque.") { AllowNone = true }); status = res.Status; if (status == PromptStatus.OK) { BlockReference blkRef = new BlockReference(res.Value, blkTab[blockName]); blkRef.Rotation = 0; blkRef.ScaleFactors = new Scale3d(16); currentSpace.AppendEntity(blkRef); tr.AddNewlyCreatedDBObject(blkRef, true); } ed.Regen(); }); } }
public PromptStatus Execute(Editor ed) { if (Application.DocumentManager.IsApplicationContext) { throw new Exception(ErrorStatus.InvalidContext); } if (!Settings.Variables.NEXTFIBERWORLD) { Application.ShowAlertDialog("Set NEXTFIBERWORLD = 0 & restart AutoCAD!"); } PromptStatus ps = PromptStatus.None; ed.InitCommandVersion(InitCommandVersion); IAcedCmdArg name = Argument(FormattedName); ps = name.Execute(ed); if (!IsActive() || _arguments.Count <= 0) { return(ps); } int index = 0; while (index < _arguments.Count && ps == PromptStatus.OK && IsActive()) { IAcedCmdArg arg = _arguments[index]; if (arg == null) { int argIndex = index + 1; throw new ArgumentNullException(argIndex.ToString(CultureInfo.InvariantCulture) + " argument for command is null"); } ps = arg.Execute(ed); index++; } if (!SendPauseForPrompts) { return(ps); } while (IsActive() && ps == PromptStatus.OK) { ps = Pause().Execute(ed); } return(ps); }
moveDimPL(MText mText = null) { Object osMode = Base_Tools45.SnapMode.getOSnap(); Base_Tools45.SnapMode.setOSnap(0); ObjectId idMtxt = ObjectId.Null; TypedValue[] tvsTX = null; Editor ed = BaseObjs._editor; PromptSelectionResult psr = ed.SelectImplied(); if (psr.Value == null) { bool escape = true; idMtxt = Select.selectMTextForMoving("TEXT", out escape); if (escape) { return; } tvsTX = idMtxt.getXData(apps.lnkDimPL).AsArray(); } else { ObjectId[] ids = psr.Value.GetObjectIds(); if (ids[0] is MText) { tvsTX = ids[0].getXData(apps.lnkDimPL).AsArray(); if (tvsTX == null) { return; } idMtxt = ids[0]; } } PromptStatus ps = PromptStatus.Cancel; Point3d pnt3dX = UserInput.getPoint("Pick desired location for text: ", out ps, osMode: 0); modTXlnkDimPl(idMtxt, tvsTX, pnt3dX); int osM; int.TryParse(osMode.ToString(), out osM); Base_Tools45.SnapMode.setOSnap(osM); }
/// <summary> /// Prompts the user to input an angle. /// </summary> /// <param name="message">Message to display in the command line.</param> /// <returns>The angle input by the user.</returns> public static double GetAngle(string message, ref PromptStatus status, AngleMode mode) { PromptAngleOptions options = new PromptAngleOptions(System.Environment.NewLine + message); Editor command = Application.DocumentManager.MdiActiveDocument.Editor; PromptDoubleResult result = command.GetAngle(options); status = result.Status; double angle = result.Value; if (mode == AngleMode.Degrees) { angle = angle * 180 / Math.PI; } return(angle); }
public static void DrawOneArrow() { Curve curve = PromptCurve(); if (curve == null) { return; } Polyline pline = null; Tools.StartTransaction(() => { pline = curve.ConvertToPolyline(); }); PromptStatus res = PromptStatus.OK; while (res == PromptStatus.OK) { var pos = PromptPosition(); //var vec = PromptVector(); if (!pos.HasValue) { return; } Point3d?normalPoint = pline.GetOrthoNormalPoint(pos.Value, null, false); if (normalPoint == null) { return; } Vector3d vec = pline.GetFirstDerivative(normalPoint.Value); Arrow arrow = new Arrow(pos.Value, vec, Matrix3d.Identity); Tools.StartTransaction(() => { if ((res = arrow.DrawJig()) == PromptStatus.OK) { arrow.SaveToDatabase(); } }); } }
public static void GetString() { PromptStatus status = new PromptStatus(); string userInput = DrawingSpace.GetString("Input string:", ref status, true); if (status == PromptStatus.OK) { Editor command = Application.DocumentManager.MdiActiveDocument.Editor; if (userInput != "") { command.WriteMessage("You wrote: " + userInput); } else { command.WriteMessage("No input"); } } }
public static void GetEntity() { Transaction transaction = HostApplicationServices.WorkingDatabase.TransactionManager .StartTransaction(); PromptStatus status = new PromptStatus(); Entity entity = DrawingSpace.GetEntity("Select object:", ref status, transaction, OpenMode.ForWrite); // The status lets us know if the user actually selected something or cancelled. if (status == PromptStatus.OK) { entity.Color = Color.FromColorIndex(ColorMethod.ByAci, 2); transaction.Commit(); } else { transaction.Dispose(); } }
public static string Text(string message, string[] keywords = null) { Init(); var pso = new PromptStringOptions(message); if (keywords != null) { for (int i = 0; i < keywords.GetLength(0); i++) { pso.Keywords.Add(keywords[i], keywords[++i]); } pso.AppendKeywordsToMessage = true; } var res = acEd.GetString(pso); status = res.Status; StringResult = res.StringResult; return(StringResult); }
public static int Integer(string message, string[] keywords = null) { Init(); var pio = new PromptIntegerOptions(message); if (keywords != null) { for (int i = 0; i < keywords.GetLength(0); i++) { pio.Keywords.Add(keywords[i], keywords[++i]); } pio.AppendKeywordsToMessage = true; } var pir = acEd.GetInteger(pio); status = pir.Status; StringResult = pir.StringResult; return(pir.Value); }
/// <summary> /// Prompts the user to select a single entity from the drawing. /// </summary> /// <param name="message">Message to display in the command line.</param> public static Entity GetEntity(string message, ref PromptStatus status, Transaction transaction, OpenMode mode, bool openErased, bool forceOpenOnLockedLayer) { PromptEntityOptions options = new PromptEntityOptions(System.Environment.NewLine + message); PromptEntityResult result; Entity entity = null; Editor command = Application.DocumentManager.MdiActiveDocument.Editor; options.AllowNone = true; result = command.GetEntity(options); status = result.Status; if (status == PromptStatus.OK) { entity = (Entity)transaction.GetObject(result.ObjectId, mode, openErased, forceOpenOnLockedLayer); } return(entity); }
public static double Double(string message, string[] keywords = null) { Init(); var pdo = new PromptDoubleOptions(message); if (keywords != null) { for (int i = 0; i < keywords.GetLength(0); i++) { pdo.Keywords.Add(keywords[i], keywords[++i]); } pdo.AppendKeywordsToMessage = true; } var pdr = acEd.GetDouble(pdo); status = pdr.Status; StringResult = pdr.StringResult; return(pdr.Value); }
public static void GetKeyword() { PromptStatus status = new PromptStatus(); string[] keywords = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" }; string userInput = DrawingSpace.GetKeyword("Select a day:", ref status, keywords); Editor command = Application.DocumentManager.MdiActiveDocument.Editor; if (status == PromptStatus.OK) { if (userInput != "") { command.WriteMessage("You selected: " + userInput); } } else { command.WriteMessage("No selection"); } }
public static void GetSelection() { Transaction transaction = HostApplicationServices.WorkingDatabase.TransactionManager .StartTransaction(); PromptStatus status = new PromptStatus(); DBObjectCollection selection = DrawingSpace.GetSelection("Select objects:", ref status, transaction, OpenMode.ForWrite); // Another way of dealing with the canceling of the operation or empty selection. if (status != PromptStatus.OK) { transaction.Dispose(); return; } foreach (Entity entity in selection) { entity.Color = Color.FromColorIndex(ColorMethod.ByAci, 4); } transaction.Commit(); }