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  
lispnewb

Lấy arc từ polyline

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

lispnewb    0

Mấy bấc pro giúp em với. Em search trong diễn đàn rồi mà không thấy. Em có một polyline gồm các đường line và arc, em muốn lấy ra thông tin của tất cả các đối tượng này. Line thì lấy được rồi, nhưng còn các arc thì bó tay. Có ai giúp em với.

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
Doan Van Ha    2.680
Mấy bấc pro giúp em với. Em search trong diễn đàn rồi mà không thấy. Em có một polyline gồm các đường line và arc, em muốn lấy ra thông tin của tất cả các đối tượng này. Line thì lấy được rồi, nhưng còn các arc thì bó tay. Có ai giúp em với.

Có thể dùng lệnh "Explode" để "xả" nó ra, sau đó lấy thông tin, rồi dùng lệnh "undo" để "hàn" nó lại.

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
Mấy bấc pro giúp em với. Em search trong diễn đàn rồi mà không thấy. Em có một polyline gồm các đường line và arc, em muốn lấy ra thông tin của tất cả các đối tượng này. Line thì lấy được rồi, nhưng còn các arc thì bó tay. Có ai giúp em với.

Hề hề hề,

Với các polyline chứa arc, bạn hoàn toàn có thể lấy được các thông số của arc dựa trên các thông số thu được từ elist của nó bạn ạ. Chỉ có điều nó hơi rắc rối đổi kẹo mà thôi.

Này nhé, bằng hàm (entget (car (entsel))) bạn sẽ có cái elist bao gồm tất cả các đỉnh của polyline. Vậy là ban đã có các điểm đầu và cuối của mỗi arc rồi. Từ tham số độ cong (bulge) của arc (mã dxf 42) bạn hoàn toàn có thể xác định được bán kính và tọa độ tâm của arc nhờ vào các công thức hình học và lượng giác đã học.

Bạn hãy thử ngồi xem lại một chút xem sao. Hy vọng bạn sẽ gỡ rối được....

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
Em có một polyline gồm các đường line và arc, em muốn lấy ra thông tin của tất cả các đối tượng này. Line thì lấy được rồi, nhưng còn các arc thì bó tay....

Bạn load đoạn chương trình sau:

;;;;;;

(setq e1 (entsel "\nBam chon Poly.") ds1 (acet-pline-segment-list e1))

(print ds1)

;;;;;;

Bạn tự tìm hiếu các ý nghĩa của các giá trị trong ds1 nhé!

Good luck!

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
ketxu    2.653
Bạn load đoạn chương trình sau:

;;;;;;

(setq e1 (entsel "\nBam chon Poly.") ds1 (acet-pline-segment-list e1))

(print ds1)

;;;;;;

Bạn tự tìm hiếu các ý nghĩa của các giá trị trong ds1 nhé!

Good luck!

Hình như bác sót chỗ setq e1 (car(entsel))

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
Thaistreetz    515
Mấy bấc pro giúp em với. Em search trong diễn đàn rồi mà không thấy. Em có một polyline gồm các đường line và arc, em muốn lấy ra thông tin của tất cả các đối tượng này. Line thì lấy được rồi, nhưng còn các arc thì bó tay. Có ai giúp em với.

 

Bạn tham khảo lisp PLJointsup trong bộ express

Đây là 1 đoạn mình tìm thấy, chưa có nhiều thời gian để đọc code

p1 : the iner segement

p2 : the end point (first or last)

a : the bulge

(setq C (acet-geom-pline-arc-info p1 p2 a)) ;arc segment

(caddr C) ; get delta angle from arc_info

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
thiep    263
Bạn tham khảo lisp PLJointsup trong bộ express

Đây là 1 đoạn mình tìm thấy, chưa có nhiều thời gian để đọc code

p1 : the iner segement

p2 : the end point (first or last)

a : the bulge

(setq C (acet-geom-pline-arc-info p1 p2 a)) ;arc segment

(caddr C) ; get delta angle from arc_info

Chào Thaistreetz, hàm (acet-geom-pline-arc-info p1 p2 a) được sử dụng chỉ khi biết p1 p2 và a (độ cong của arc). Hàm này trả về 1 list có 5 thông tin. Muốn tìm a thì có thể dùng hàm (acet-pline-segment-list e1). Tuy nhiên để thông suốt theo yêu cầu của lispnewb, Thiep đưa ra lisp có (acet-geom-pline-arc-info p1 p2 a) sau:

(defun c:iapl (/ doc mspace obj num n str bul p1 p2 infArc tam)
 (setq	doc (vla-get-ActiveDocument
      (vlax-get-acad-object)
    )
 )
 (setq mspace (vla-get-modelspace doc))
 (setq	obj (vlax-ename->vla-object (car (entsel "\nPick a Pline: ")))
num (vlax-curve-getParamAtPoint obj (vlax-curve-getendPoint obj))
 )
 (setq n 0
str "")
 (repeat (fix num)
   (if	(/= (setq bul (vla-getbulge obj n)) 0)
     (progn
(setq p1     (vlax-curve-getPointAtParam obj n)
      p2     (vlax-curve-getPointAtParam obj (1+ n)))
     (setq infArc (acet-geom-pline-arc-info p1 p2 bul)
    tam	   (nth 0 infArc)
    str	   (strcat str
		   "\nDoan so "
		   (itoa (1+ n))
		   " la 1 Arc"
		   " co tam: "
		   "("
		   (rtos (car tam) 2 2)
		   " , "
		   (rtos (cadr tam) 2 2)
		   " , "
		   (rtos (caddr tam) 2 2)
		   "); "
		   "ban kinh: "
		   (rtos (nth 1 infArc) 2 2)
		   "; goc truong cung: "
		   (rtos (abs (nth 2 infArc)) 2 2)
		   " rad; "
		   " chieu dai cung tron: "
		   (rtos (nth 3 infArc) 2 2)
	   )
     )
     )
   )
   (setq n (1+ n))
 )
 (setq str (strcat "\nPline nay co:" str))
 (textscr)
 (princ str)
)

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  

×