Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 dragon01

dragon01

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 05 November 2016 - 10:25 AM

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


  • 1

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 07 November 2016 - 08:27 AM

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();
            }
        }

  • 1

#3 dragon01

dragon01

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 07 November 2016 - 12:56 PM

Thanks bác Gia_Bach, và sau khi nghiên cứu em đã chọn List để giải quyết vấn đề ^^


  • 0