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

Làm sao để tạo Spline đi qua n điểm bằng hàm entmake?

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

Tôi muốn tạo 1 Spline đi qua n điểm Pi(xi,yi) bằng hàm entmake, nhưng không biết cách lấy mã DXF nào để đưa vào trong hàm (việc dùng lệnh command Spline để vẽ đường cong đi qua n điểm thì đã biết). Nhờ mọi người giúp đỡ.

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ôi muốn tạo 1 Spline đi qua n điểm Pi(xi,yi) bằng hàm entmake, nhưng không biết cách lấy mã DXF nào để đưa vào trong hàm (việc dùng lệnh command Spline để vẽ đường cong đi qua n điểm thì đã biết). Nhờ mọi người giúp đỡ.

Với mã DXF Việc đấy rất khó thực hiện bạn à vì toạ độ mỗi điểm nhập của bạn cad đã tự động chuyển sang thành toạ độ đỉnh của điểm cong không theo toạ độ có sẵn của bạn, vì vậy bạn phải nghiên cứu công thức chuyển đổi đỉnh của SPLINE trước rồi mới dùng lệnh entmake được. Chúc bạn may mắn.

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

Đây là ví dụ cho bạn nè

(defun c:thu ()
 (setq pt1 (getpoint "\n nhap diem: "))
 (setq pt2 (getpoint "\n nhap diem: "))
 (setq pt3 (getpoint "\n nhap diem: "))
 (entmake(list(cons 0 "SPLINE")(cons 100 "AcDbEntity")(cons 8 "0")(cons 100 "AcDbSpline") (cons 70 24) (cons 71 3) (cons 72 8) (cons 73 4) (cons 74 2)(cons 11 pt1)(cons 11 pt2)(cons 11 pt3)))
 )

Không biết kết quả như ý không bạn thử xem nếu được thì phát triển lên theo ý bạn nhé. Chúc bạn may mắn

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
Đây là ví dụ cho bạn nè

(defun c:thu ()
 (setq pt1 (getpoint "\n nhap diem: "))
 (setq pt2 (getpoint "\n nhap diem: "))
 (setq pt3 (getpoint "\n nhap diem: "))
 (entmake(list(cons 0 "SPLINE")(cons 100 "AcDbEntity")(cons 8 "0")(cons 100 "AcDbSpline") (cons 70 24) (cons 71 3) (cons 72 8) (cons 73 4) (cons 74 2)(cons 11 pt1)(cons 11 pt2)(cons 11 pt3)))
 )

Không biết kết quả như ý không bạn thử xem nếu được thì phát triển lên theo ý bạn nhé. Chúc bạn may mắn

Nói thế này thì không ai hiểu đuợc.

các đường Spline là loại đuờng đặc biệt đuợc biểu diễn bởi các hàm số toán học, mã 71 quy định bậc của hàm số dùng để vẽ.

Các đường Spline được vẽ theo cách thông thường bằng hàm command được biểu diễn bởi 1 hàm số bậc 3.

vẽ theo cách này thông thường ta nhận được 2 dạng đường Spline là spline đóng hoặc spline mở.

mã 70 quy định điều này.

1. đường spline đóng

2. đường spline tuần hoàn

mặc dù 2 giá trị trên là độc lập để quy định thuộc tính của spline nhưng theo cách vẽ thông thường thì ta luôn nhận được cả 2 giá trị trên khi vẽ spline đóng hoặc không nhận đc giá trị nào khi spline mở.

4. đường spline hữu tỷ

8. đường spline phẳng

16. đường spline tuyến tính

Vậy muốn vẽ spline phẳng và đóng bạn phải đưa vào giá trị là 11 (= 1+2+8) cho mã 70

Số đỉnh của Spline do mã 74 quy định. mã 73 hình như tuân theo mã 74 (cái này mình không chắc lắm. kệ nó, mình để mặc đinh)

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
Với mã DXF Việc đấy rất khó thực hiện bạn à vì toạ độ mỗi điểm nhập của bạn cad đã tự động chuyển sang thành toạ độ đỉnh của điểm cong không theo toạ độ có sẵn của bạn, vì vậy bạn phải nghiên cứu công thức chuyển đổi đỉnh của SPLINE trước rồi mới dùng lệnh entmake được. Chúc bạn may mắn.

Trước hết, cám ơn bạn. Tuy nhiên, cách làm theo file của bạn nếu các danh sách con đều viết trong cùng 1 hàm entmake thì tốt, chứ nếu tách ra từng danh sách hàm entmake thì không được. Trong khi nếu viết đúng mã DXF thì có thể được. Ví dụ hàm AA và BB dưới đây chạy tốt nhưng CC thì... bó tay.

;---------- ;Ham nay chay tot

(defun C:AA()

(entmake (list (cons 0 "POLYLINE")))

(setq a (+ 1 1))

(entmake (list (cons 0 "VERTEX") '(10 0.0 100.0 0.0)))

(entmake (list (cons 0 "VERTEX") '(10 100.0 150.0 0.0)))

(entmake (list (cons 0 "SEQEND"))))

;---------- ;Ham nay chay tot

(defun C:BB()

(entmake (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") '(71 . 3)

'(11 0.0 100.0 0.0) '(11 100.0 150.0 0.0) '(11 300.0 100.0 0.0))))

;---------- ;Ham nay botay.com

(defun C:CC()

(entmake (list '(0 . "SPLINE")))

(setq b (+ 1 1))

(entmake (list '(11 0.0 100.0 0.0)))

(entmake (list '(11 100.0 150.0 0.0)))

(entmake (list '(11 300.0 100.0 0.0)))

(entmake (list '(100 . "AcDbEntity")))

(entmake (list '(100 . "AcDbSpline")))

(entmake (list '(71 . 3))))

;----------

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  

×