2015-06-15 24 views
8

Lớp trình chỉnh sửa có phương thức được gọi là GetString sẽ nhắc người dùng tìm giá trị chuỗi thông qua dấu nhắc lệnh của AutoCAD. Tôi gọi nó theo phương pháp bao bọc này:Đặt giá trị mặc định cho lời nhắc chuỗi

public static string PromptUserForString(string message = "Enter a string: ", string defaultAnswer = "") 
{ 
    return _editor.GetString("\n" + message).StringResult; 
} 

Thông báo đối số trở thành thông điệp mà người dùng nhìn thấy khi được nhắc chuỗi. Làm thế nào để thiết lập nó để giá trị của câu trả lời mặc định được tự động thiết lập để có câu trả lời để nếu người dùng nhấn Enter ngay lập tức mà trở thành giá trị như trong ảnh chụp màn hình dưới đây

enter image description here

Vì vậy 1 được tự động gõ như một câu trả lời có nghĩa là người dùng có thể hoặc nhấn enter cho giá trị của 1 hoặc thay đổi từ 1 tới bất cứ điều gì câu trả lời không phải mặc định họ muốn

+0

Bạn có biết nếu có tham chiếu API tốt? Tôi đã muốn xem tất cả các thuộc tính nằm trong lớp 'PromptResult' và nếu có bất kỳ quá tải nào cho' GetString', nhưng tất cả những gì tôi có thể tìm thấy là [ví dụ đơn giản] (http://help.autodesk.com/view/ACD/2015/ENU /? Guid = GUID-203F2756-1BA6-4226-A505-B776ED8AF0FB). Có vẻ như API Javascript có một số thuộc tính trên [PromptStringOptions] (http://app.autocad360.com/jsapi/v2/docs/[email protected]) có thể cho phép bạn làm việc với các giá trị mặc định, tôi đã tự hỏi liệu có là một song song trong .NET. –

+0

PromptStringOptions chắc chắn là những gì bạn đang tìm kiếm. Dưới đây là hướng dẫn giới thiệu về API của anh ấy: http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20Guide/index.html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-3cf7.htm,topicNumber=d0e30666 – Miiir

+0

Xin lỗi, đây là liên kết chính xác: http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20Guide/index.html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-3cf7.htm,topicNumber=d0e30666 – Miiir

Trả lời

3

tôi dán cho bạn một số mã như ví dụ cho các hướng dẫn khác nhau:

using System; 
using System.Collections.Generic; 
using Autodesk.AutoCAD.EditorInput; 
using Autodesk.AutoCAD.Geometry; 
using Autodesk.AutoCAD.ApplicationServices; 

namespace EditorUtilities 
{ 
    /// <summary> 
    /// Prompts with the active document (MdiActiveDocument) 
    /// </summary> 
    public class EditorHelper : IEditorHelper 
    { 
     private readonly Editor _editor; 

     public EditorHelper(Document document) 
     { 
      _editor = document.Editor; 
     } 

     public PromptEntityResult PromptForObject(string promptMessage, Type allowedType, bool exactMatchOfAllowedType) 
     { 
      var polyOptions = new PromptEntityOptions(promptMessage); 
      polyOptions.SetRejectMessage("Entity is not of type " + allowedType); 
      polyOptions.AddAllowedClass(allowedType, exactMatchOfAllowedType); 
      var polyResult = _editor.GetEntity(polyOptions); 
      return polyResult; 
     } 

     public PromptPointResult PromptForPoint(string promptMessage, bool useDashedLine = false, bool useBasePoint = false, Point3d basePoint = new Point3d(),bool allowNone = true) 
     { 
      var pointOptions = new PromptPointOptions(promptMessage); 
      if (useBasePoint) 
      { 
       pointOptions.UseBasePoint = true; 
       pointOptions.BasePoint = basePoint; 
       pointOptions.AllowNone = allowNone; 
      } 

      if (useDashedLine) 
      { 
       pointOptions.UseDashedLine = true; 
      } 
      var pointResult = _editor.GetPoint(pointOptions); 
      return pointResult; 
     } 

     public PromptPointResult PromptForPoint(PromptPointOptions promptPointOptions) 
     { 
      return _editor.GetPoint(promptPointOptions); 
     } 

     public PromptDoubleResult PromptForDouble(string promptMessage, double defaultValue = 0.0) 
     { 
      var doubleOptions = new PromptDoubleOptions(promptMessage); 
      if (Math.Abs(defaultValue - 0.0) > Double.Epsilon) 
      { 
       doubleOptions.UseDefaultValue = true; 
       doubleOptions.DefaultValue = defaultValue; 
      } 
      var promptDoubleResult = _editor.GetDouble(doubleOptions); 
      return promptDoubleResult; 
     } 

     public PromptIntegerResult PromptForInteger(string promptMessage) 
     { 
      var promptIntResult = _editor.GetInteger(promptMessage); 
      return promptIntResult; 
     } 

     public PromptResult PromptForKeywordSelection(
      string promptMessage, IEnumerable<string> keywords, bool allowNone, string defaultKeyword = "") 
     { 
      var promptKeywordOptions = new PromptKeywordOptions(promptMessage) { AllowNone = allowNone }; 
      foreach (var keyword in keywords) 
      { 
       promptKeywordOptions.Keywords.Add(keyword); 
      } 
      if (defaultKeyword != "") 
      { 
       promptKeywordOptions.Keywords.Default = defaultKeyword; 
      } 
      var keywordResult = _editor.GetKeywords(promptKeywordOptions); 
      return keywordResult; 
     } 

     public Point3dCollection PromptForRectangle(out PromptStatus status, string promptMessage) 
     { 
      var resultRectanglePointCollection = new Point3dCollection(); 
      var viewCornerPointResult = PromptForPoint(promptMessage); 
      var pointPromptStatus = viewCornerPointResult.Status; 
      if (viewCornerPointResult.Status == PromptStatus.OK) 
      { 
       var rectangleJig = new RectangleJig(viewCornerPointResult.Value); 
       var jigResult = _editor.Drag(rectangleJig); 
       if (jigResult.Status == PromptStatus.OK) 
       { 
        // remove duplicate point at the end of the rectangle 
        var polyline = rectangleJig.Polyline; 
        var viewPolylinePoints = GeometryUtility.GetPointsFromPolyline(polyline); 
        if (viewPolylinePoints.Count == 5) 
        { 
         viewPolylinePoints.RemoveAt(4); // dont know why but true, probably mirror point with the last point 
        } 
       } 
       pointPromptStatus = jigResult.Status; 
      } 
      status = pointPromptStatus; 
      return resultRectanglePointCollection; 
     } 

     public PromptSelectionResult PromptForSelection(string promptMessage = null, SelectionFilter filter = null) 
     { 
      var selectionOptions = new PromptSelectionOptions { MessageForAdding = promptMessage }; 
      var selectionResult = String.IsNullOrEmpty(promptMessage) ? _editor.SelectAll(filter) : _editor.GetSelection(selectionOptions, filter); 
      return selectionResult; 
     } 

     public PromptSelectionResult PromptForSelection(PromptSelectionOptions promptSelectionOptions,SelectionFilter filter = null) 
     { 
      return _editor.GetSelection(promptSelectionOptions, filter); 
     } 

     public void WriteMessage(string message) 
     { 
      _editor.WriteMessage(message); 
     } 

     public void DrawVector(Point3d from, Point3d to, int color, bool drawHighlighted) 
     { 
      _editor.DrawVector(from, to, color, drawHighlighted); 
     } 
    } 
} 
+0

Hoàn hảo , cảm ơn! –

Các vấn đề liên quan