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

Xin Hỏi Các Bác 1 Chút Về Code Chọn Nhiều Point Trong C#

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

Xin hỏi các  bác về code pick nhiều điểm trong C#, sẽ lưu lại tọa độ các point để mình xử lý sau, mà point1 mình lưu lại này có dạng là x1,y1,z1 trong 1 mảng x1,y1,z1,x2,y2,z2....phải không ạ

hay nó lưu dạng tọa độ point3d_1 point3d_2.........

Mình thấy hướng dẫn Getpoint Method chỉ chọn dc 1 point

  • 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

Xin hỏi các  bác về code pick nhiều điểm trong C#, sẽ lưu lại tọa độ các point để mình xử lý sau, mà point1 mình lưu lại này có dạng là x1,y1,z1 trong 1 mảng x1,y1,z1,x2,y2,z2....phải không ạ

hay nó lưu dạng tọa độ point3d_1 point3d_2.........

Mình thấy hướng dẫn Getpoint Method chỉ chọn dc 1 point

Phụ thuộc vào mục đích sử dụng chúng ta có nhiều cách lưu khác nhau.

- mảng các số thực: x1,y1,z1,x2,y2,z2 ... .

- mảng các điểm 2D: point2d_1, point2d_2, ...

- mảng các điểm 3D: point3d_1, point3d_2, ...

- hoặc ArrayList, List<Point2d>, List<Point3d>, ...

 

Ngoài ra, AutoCad.Net cung cấp các lớp 

- Point2dCollection để lưu các điểm 2D

- Point3dCollection để lưu các điểm 3D

 

Tham khảo code dùng Point3dCollection để lưu các điểm 3D khi nhập liệu bằng GetPoint()

        [CommandMethod("PointColection")]
        public void PointColection()
        {
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            Database db = doc.Database;
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                Point3dCollection pts = new Point3dCollection();
                PromptPointOptions ppos = new PromptPointOptions("\n pick point");
                ppos.AllowNone = true;
                PromptPointResult ppr = ed.GetPoint(ppos);
                while (ppr.Status == PromptStatus.OK)
                {
                    Point3d pt = ppr.Value;
                    pts.Add(pt);
                    ppr = ed.GetPoint(ppos);
                }

                
                if (pts.Count > 0)
                {
                    BlockTableRecord btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
                    int i = 0;
                    foreach (Point3d pt in pts)
                    {
                        // Create a single-line text object
                        DBText txt = new DBText();
                        txt.Position = pt;
                        txt.Height = 10;
                        txt.TextString = System.Convert.ToString(i++);

                        btr.AppendEntity(txt);
                        tr.AddNewlyCreatedDBObject(txt, true);
                    }
                }
                tr.Commit();
            }
        }
  • 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  

×