Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hoathuongphuoc

1 lệnh command thực hiện được nhiều lần

Các bài được khuyến nghị

Chào các bạn,

Mình có đoạn code minh họa như sau:

[CommandMethod("BoundaryTest")]

public static void BoundaryTest()

{

Document doc = Application.DocumentManager.MdiActiveDocument;

Database db=doc.Database;

........

}

Các bạn cho mình hỏi, có cách nào gọi lệnh BoundaryTest 1 lần mà có thể sử dụng được nhiều lần sau trên autocad không. Ví dụ như thay vì mình gọi lệnh BoundaryTest sau đó vẽ được một hình vuông chẳng hạn, sau khi vẽ xong, muốn vẽ lại lần nữa mình phải lại gọi lệnh BoundaryTest và vẽ tiếp. Với cách này mình thấy khá bất tiện. Nếu muốn vẽ nhiều hình vuông như vậy chả lẽ phải đánh nhiều lệnh command. Mình xin cảm ơn các bạn.

 

[CommandMethod("BoundaryTest")]

public static void BoundaryTest()

{

 Document doc = Application.DocumentManager.MdiActiveDocument;

 Database db = doc.Database;

 Editor ed = doc.Editor;

 

 PromptPointOptions ptOptions =

                     new PromptPointOptions("Select point ");

 ptOptions.AllowNone = false;

 PromptPointResult ptResult = ed.GetPoint(ptOptions);

 

 if (ptResult.Status != PromptStatus.OK)

     return;

 

 DBObjectCollection collection =

                ed.TraceBoundary(ptResult.Value, true);

 

 using (Transaction Tx =

           db.TransactionManager.StartTransaction())

 {

     ObjectId ModelSpaceId =

            SymbolUtilityServices.GetBlockModelSpaceId(db);

 

      BlockTableRecord model = Tx.GetObject(ModelSpaceId,

                     OpenMode.ForWrite) as BlockTableRecord;

 

     foreach (DBObject obj in collection)

     {

         Entity ent = obj as Entity;

 

         if (ent != null)

         {

             //make the color as red.

             ent.ColorIndex = 1;

  

             model.AppendEntity(ent);

             Tx.AddNewlyCreatedDBObject(ent, true);

 

         }

     }

 

     Tx.Commit();

 }

}

[CommandMethod("BoundaryTest")]

public static void BoundaryTest()

{

 Document doc = Application.DocumentManager.MdiActiveDocument;

 Database db = doc.Database;

 Editor ed = doc.Editor;

 

 PromptPointOptions ptOptions =

                     new PromptPointOptions("Select point ");

 ptOptions.AllowNone = false;

 PromptPointResult ptResult = ed.GetPoint(ptOptions);

 

 if (ptResult.Status != PromptStatus.OK)

     return;

 

 DBObjectCollection collection =

                ed.TraceBoundary(ptResult.Value, true);

 

 using (Transaction Tx =

           db.TransactionManager.StartTransaction())

 {

     ObjectId ModelSpaceId =

            SymbolUtilityServices.GetBlockModelSpaceId(db);

 

      BlockTableRecord model = Tx.GetObject(ModelSpaceId,

                     OpenMode.ForWrite) as BlockTableRecord;

 

     foreach (DBObject obj in collection)

     {

         Entity ent = obj as Entity;

 

         if (ent != null)

         {

             //make the color as red.

             ent.ColorIndex = 1;

  

             model.AppendEntity(ent);

             Tx.AddNewlyCreatedDBObject(ent, true);

 

         }

     }

 

     Tx.Commit();

 }

}

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào bạn Chủ topic!

Bạn có thể dùng lệnh Multiple -> tiếp đến đánh lệnh bạn thực hiện BoundaryTest

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×