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  
haimed

Vẽ đường thẳng vuông góc với 1 spline cho trước

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

haimed    2

Bác nào giúp mình đoạn lisp này với: có 1 đường spline cho trc, từ các điểm cho trước nằm ngoài đường spline kẻ các đường thẳng vuông góc với đường spline đó. Thanks các bạn đã quan tâm

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
ssg    1.088
Bác nào giúp mình đoạn lisp này với: có 1 đường spline cho trc, từ các điểm cho trước nằm ngoài đường spline kẻ các đường thẳng vuông góc với đường spline đó. Thanks các bạn đã quan tâm

Là "dân lập trình", bạn nên phát biểu chính xác vấn đề. Đường spline cho trước thì OK, nhưng các điểm cho trước nó mơ hồ lắm! Nếu nói rằng "các đối tượng point cho trước" thì chuẩn hơn, nhưng không chắc là đúng ý bạn!

Trong trường hợp tổng quát, bạn thử dùng hàm LPP2C sau:

 

(defun LPP2C (p1 c / p2);;;Line from Point p1 Perpendicular To Curve c
(vl-load-com)
(setq p2 (vlax-curve-getClosestPointTo c p1 T))
(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
)

 

Trong đó:

p1: một list biểu diễn điểm

c: curve, một "đối tượng đường cong" bất kỳ, nghĩa là bao hàm cả line, polyline, spline, circle, arc, ellipse

 

Nếu bạn thay:

(vlax-curve-getClosestPointTo c p1 T)

bằng:

(vlax-curve-getClosestPointTo c p1 nil)

hoặc:

(vlax-curve-getClosestPointTo c p1)

Kết quả có khác một chút.

Hãy thử và tự chiêm nghiệm kết quả!

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
haimed    2
Là "dân lập trình", bạn nên phát biểu chính xác vấn đề. Đường spline cho trước thì OK, nhưng các điểm cho trước nó mơ hồ lắm! Nếu nói rằng "các đối tượng point cho trước" thì chuẩn hơn, nhưng không chắc là đúng ý bạn!

Trong trường hợp tổng quát, bạn thử dùng hàm LPP2C sau:

 

(defun LPP2C (p1 c / p2);;;Line from Point p1 Perpendicular To Curve c
(vl-load-com)
(setq p2 (vlax-curve-getClosestPointTo c p1 T))
(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
)

 

Trong đó:

p1: một list biểu diễn điểm

c: curve, một "đối tượng đường cong" bất kỳ, nghĩa là bao hàm cả line, polyline, spline, circle, arc, ellipse

 

Nếu bạn thay:

(vlax-curve-getClosestPointTo c p1 T)

bằng:

(vlax-curve-getClosestPointTo c p1 nil)

hoặc:

(vlax-curve-getClosestPointTo c p1)

Kết quả có khác một chút.

Hãy thử và tự chiêm nghiệm kết quả!

Thanks ssg, mình đã làm thử nhưng hàm đó chỉ đúng cho line, arc, polyline hay cirle còn đối với spline nó toàn trả về điểm đầu tiên của spline chứ ko phải điểm nearest point, bạn xem lại thử hộ mình coi

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
ssg    1.088
Thanks ssg, mình đã làm thử nhưng hàm đó chỉ đúng cho line, arc, polyline hay cirle còn đối với spline nó toàn trả về điểm đầu tiên của spline chứ ko phải điểm nearest point, bạn xem lại thử hộ mình coi

Ssg đã dùng (vlax-curve-getClosestPointTo c p1 T) trong rất nhiều chương trình, đã được kiểm nghiệm nhiều lần qua thực tế sử dụng, chưa bao giờ gặp phải tình trạng như bạn nói. Hay là bạn chưa thiết lập (setvar "osmode" 0) khi gọi command?

  • Vote tăng 1

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
haimed    2
Ssg đã dùng (vlax-curve-getClosestPointTo c p1 T) trong rất nhiều chương trình, đã được kiểm nghiệm nhiều lần qua thực tế sử dụng, chưa bao giờ gặp phải tình trạng như bạn nói. Hay là bạn chưa thiết lập (setvar "osmode" 0) khi gọi command?

Thanks ssg, mình đã thử lại đc. Mình mới học lisp nên chưa biết nhiều về các hàm trong lisp, những thắc mắc thế này bạn có thể hướng dẫn mình sử dụng hàm nào là đc chứ ko cần viết cụ thể, như thế chắc đỡ mất thời gian của bạn hơn. Thanks nhiều

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

Em học hoài mà vẫn dốt lisp :D , toàn đi mót của thiên hạ về phục vụ công việc bản thân chứ không có khả năng viết giúp người  khác được . Nay đi mót được của Người ngoại quốc về dùng chẳng may vẫn gặp chút trắc trở :( , đối với SPL1 màu tím (cần dùng) đã qua nhiều lisp tự động tạo ra và convert phẳng thì không chạy lisp được, còn SPL2 màu vàng vẽ thủ công thì chạy lisp phà phà....

 

http://www.cadviet.com/upfiles/4/63543_vuong_goc_spline_1.dwg

Lisp tự  động vẽ đường vuông với với spline tại mỗi node của spline

 Vậy em mạo muội post lên diễn đàn (có gì sai sót với nội quy diễn đàn xin bỏ qua) nhờ các Bác có hảo tâm giúp đỡ chỉnh sửa để em dùng lisp này chạy với SPL1(màu tím) và nếu có thể chỉ em cách thay độ dài Xline ...em xin cám ơn  :D và chúc diễn đàn luôn phát triển

http://www.cadviet.com/upfiles/4/63543_vuonggoc_spl_1.lsp

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  

×