2012년 3월 26일 월요일

GetPoint Method




using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

[CommandMethod("GetPointsFromUser")]
public static void GetPointsFromUser()
{
  // Get the current database and start the Transaction Manager
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  Database acCurDb = acDoc.Database;

  PromptPointResult pPtRes;
  PromptPointOptions pPtOpts = new PromptPointOptions("");

  //public PromptPointOptions(string message)


  // Prompt for the start point
  pPtOpts.Message = "\nEnter the start point of the line: "; //생성자에 넘겨주어도 됌
  pPtRes = acDoc.Editor.GetPoint(pPtOpts);
  Point3d ptStart = pPtRes.Value;


  // Exit if the user presses ESC or cancels the command
  if (pPtRes.Status == PromptStatus.Cancel) return;

  // Prompt for the end point
  pPtOpts.Message = "\nEnter the end point of the line: ";
  pPtOpts.UseBasePoint = true;  //public bool UseBasePoint { set; get; }
  pPtOpts.BasePoint = ptStart;
  pPtRes = acDoc.Editor.GetPoint(pPtOpts);
  Point3d ptEnd = pPtRes.Value;

  if (pPtRes.Status == PromptStatus.Cancel) return;

  // Start a transaction
  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  {
      BlockTable acBlkTbl;
      BlockTableRecord acBlkTblRec;

      // Open Model space for write
      acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                   OpenMode.ForRead) as BlockTable;

      acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
                                      OpenMode.ForWrite) as BlockTableRecord;

      // Define the new line
      Line acLine = new Line(ptStart, ptEnd);
      acLine.SetDatabaseDefaults();

      // Add the line to the drawing
      acBlkTblRec.AppendEntity(acLine);
      acTrans.AddNewlyCreatedDBObject(acLine, true);

      // Zoom to the extents or limits of the drawing
      acDoc.SendStringToExecute("._zoom _all ", true, false, false);

      // Commit the changes and dispose of the transaction
      acTrans.Commit();
  }
}

//두점을 입력받아 선을그리고 줌한다.


출처
http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20Guide/index.html

댓글 없음 :

댓글 쓰기