Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
jana1287

Giúp mình dùng lệnh List lấy tọa độ điểm PL !

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

jana1287    0

Bác nào giúp em cái lệnh LI này với! Em đang cần dùng lệnh LI để xuất tọa độ các điểm trong 1 đường PL ra excel nhưng mà số điểm chỉ hạn chế trên 1 đường PL có 11 điểm đỉnh. Em xin hỏi là có cách nào làm tăng được số điểm này lên nhiều nhất không?

Thanks/

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

Mình có một lsp như thế này: có một PL trong đó có nhiều đỉnh. nhưng tại các đỉnh này phải có 1 text tương ứng thì lsp này mới xuất ra toa độ của pl đó được. nếu bạn cần mình upfile lên cho.

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
phamthanhbinh    3.123

Bác nào giúp em cái lệnh LI này với! Em đang cần dùng lệnh LI để xuất tọa độ các điểm trong 1 đường PL ra excel nhưng mà số điểm chỉ hạn chế trên 1 đường PL có 11 điểm đỉnh. Em xin hỏi là có cách nào làm tăng được số điểm này lên nhiều nhất không?

Thanks/

Hề hề hề,

Nếu bạn đã cài bộ express tools Thì có thể dùng đoạn code sau đây để lấy danh sách các đỉnh của một pline:

(acet-geom-vertex-list (car (entsel "\n Hay chon mot polyline ")))

Còn nếu chưa cài thì vấn đề sẽ phức tạp hơn.

Nếu là LWpolyline:

 

(setq myVertexList(list)) ;create an empty list to store the vertices in. (Tạo một danh sách rỗng để lưu các đoạn polyline vào)

(foreach a enlist ;;;--- step through each sub-list (lặp qua tất cả các danh sách con trong danh sách enlist)

(if(= 10 (car a)) ;;;--- if the first item in the sub-list equals 10 then (khi mã nhóm là 10 thì thực hiện)

(setq myVertexList ;;;--- reset myVertexList to (đặt lại biến myVertexList)

(append myVertexList ;;;--- the old vertex list (Biến cũ của vòng lặp trước)

(list ;;;--- plus a list containing (cộng thêm biến trong vòng lặp)

(cdr a) ;;;--- the vertex point (Tọa độ của đỉnh polyline)

) ;;;--- close the list statement (Đóng hàm list)

) ;;;--- close the append statement (Đóng hàm append)

) ;;;--- close the setq statement (Đóng hàm đặt lại biến setq)

) ;;;--- close the if statement (Đóng hàm if không có else)

) ;;;--- close the foreach statement (Đóng hàm foreach)

Nếu là Mline:

 

(setq en(car(entsel "\n Select a MLine: ")));;;--- Get the entity name (Lấy tên đối tượng)

(setq enlist(entget en)) ;;;--- Get the dxf group codes (Lấy các mã nhóm DXF)

(setq myVertexList(list)) ;;;--- create an empty list to store the vertices in. (tạo một danh sách rỗng để lưu các tọa độ đỉnh )

(setq v1(cdr(assoc 10 enlist))) ;;;--- Get the starting point of the mline (lấy tọa độ điểm bắt đầu của tổ hợp các đoạn thẳng)

(setq myVertexList(append myVertexList (list v1))) ;;;--- Add the point to the list (Thêm toạ độ đỉnh vào danh sách)

(foreach a enlist ;;;--- step through each sub-list (Lặp qua các danh sách phụ)

(if(= 11 (car a)) ;;;--- if the first item in the sub-list equals 11 then (Khi mã nhóm là 11 thì thực hiện)

(setq myVertexList ;;;--- reset myVertexList to (Đặt lại giá trị biến myVertexList)

(append myVertexList ;;;--- the old vertex list (Danh sách tọa độ cũ)

(list ;;;--- plus a list containing (cộng thêm một danh sách)

(cdr a) ;;;--- the vertex point (tọa độ đỉnh)

) ;;;--- close the list statement (Đóng hàm list)

) ;;;--- close the append statement (Đóng hàm append)

) ;;;--- close the setq statement (đóng hàm đặt lại giá trị setq)

) ;;;--- close the if statement (Đóng hàm if không có else)

) ;;;--- close the foreach statement (Đóng hàm lặp foreach)

 

Còn nếu là polyline:

 

(defun C:PTEST()

;;;--- Get the entity's name (lấy tên đối tượng)

(setq en(car(entsel "\n Select a PolyLine: ")))

 

;;;--- Get the DXF group codes of the entity (lấy các mã nhóm DXF của đối tượng)

(setq enlist(entget en))

 

;;;--- Create an empty list to hold the points (tạo một danh sách rỗng để lưu các tọa độ điểm)

(setq ptList(list))

 

;;;--- Get the sub-entities name (lấy tên đối tượng phụ)

(setq en2(entnext en))

 

;;;--- Get the dxf group codes of the sub-entity (lấy các mã nhóm DXF của đối tượng phụ)

(setq enlist2(entget en2))

 

;;;--- While the polyline has a next vertice (Trong khi polyline có đỉnh tiếp theo)

(while (not (equal (cdr(assoc 0 (entget(entnext en2))))"SEQEND"))

 

;;;--- Get the next sub-entity (lấy đối tượng phụ tiếp theo)

(setq en2(entnext en2))

 

;;;--- Get its dxf group codes (Lấy mã nhóm DXF của nó)

(setq enlist2(entget en2))

 

;;;--- Check to make sure it is not a spline reference point (Kiểm soát để chắc chắn đó không phải là điểm Spline tham chiếu)

(if(/= 16 (cdr(assoc 70 enlist2)))

 

;;;--- It is a vertex, save the point in a list [ptlist] (lưu toạ độ điểm nếu nó là một đỉnh)

(setq ptList(append ptList (list (cdr(assoc 10 enlist2)))))

 

)

)

(princ)

)

 

Vậy đó, bạn hãy tùy nghi sử dụng theo ý bạn muốn hỉ....

Chúc bạn vui.

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  

×