Đến nội dung


Hình ảnh
- - - - -

Lấy arc từ polyline


  • Please log in to reply
6 replies to this topic

#1 lispnewb

lispnewb

    Chưa sử dụng CAD

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

Đã gửi 22 January 2011 - 01:11 PM

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.
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 22 January 2011 - 09:17 PM

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.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 23 January 2011 - 01:45 PM

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....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 DuongTrungHuy

DuongTrungHuy

    biết lệnh copy

  • Members
  • PipPipPip
  • 116 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 23 January 2011 - 03:26 PM

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!
  • 0

#5 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 23 January 2011 - 04:52 PM

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))
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 24 January 2011 - 03:15 AM

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
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#7 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 27 January 2011 - 10:42 AM

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)
)

  • 0