lapnickchiviyeuem 1 Báo cáo bài đăng Đã đăng Tháng 1 5, 2009 hi everybody! em đang lập trình một ứng dụng nho nhỏ trong autolisp nhưng có một vấn đề chua thể giải quyết được. mong các bác giúp đỡ. vấn đề của em như sau : em đang muốn tìm giao điểm của 2 đối tượng( 2 đối tượng này có được bằng lệnh (entlast)) nhưng em không thể xác định được giao điểm của chúng, việc xác định giao điểm này cần cho việc tính khoảng cách ( ví dụ em vẽ 2 đường thẳng dt1 (o,o) đến (5,5); dt2 (0,5) đến (5,0), làm thế nào để xác định giao điểm của 2 đường thẳng này?) 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
Nguyen Hoanh 4.663 Báo cáo bài đăng Đã đăng Tháng 1 6, 2009 hi everybody! em đang lập trình một ứng dụng nho nhỏ trong autolisp nhưng có một vấn đề chua thể giải quyết được. mong các bác giúp đỡ. vấn đề của em như sau : em đang muốn tìm giao điểm của 2 đối tượng( 2 đối tượng này có được bằng lệnh (entlast)) nhưng em không thể xác định được giao điểm của chúng, việc xác định giao điểm này cần cho việc tính khoảng cách ( ví dụ em vẽ 2 đường thẳng dt1 (o,o) đến (5,5); dt2 (0,5) đến (5,0), làm thế nào để xác định giao điểm của 2 đường thẳng này?) bạn dùng lệnh (inters p1 p2 p3 p4) để xác định giao của 2 đoạn p1 p2 và p3 p4 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
lapnickchiviyeuem 1 Báo cáo bài đăng Đã đăng Tháng 1 6, 2009 bạn dùng lệnh (inters p1 p2 p3 p4) để xác định giao của 2 đoạn p1 p2 và p3 p4 cảm ơn nguyen hoanh. tôi đã làm như bạn bảo chương trình chạy ổn ròi, nhưng còn một vấn đề nữa, lệnh inters chỉ tìm được giao điểm của 2 đường thẳng, trong trường hợp tìm giao điểm với một đường cong thì sao? mong các bác giúp đỡ. cả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
ssg 1.102 Báo cáo bài đăng Đã đăng Tháng 1 6, 2009 cảm ơn nguyen hoanh. tôi đã làm như bạn bảo chương trình chạy ổn ròi, nhưng còn một vấn đề nữa, lệnh inters chỉ tìm được giao điểm của 2 đường thẳng, trong trường hợp tìm giao điểm với một đường cong thì sao? mong các bác giúp đỡ. cảm ơn Bạn dùng hàm GiaoDT sau. Cái này của anh Hoành viết lâu rồi ở đâu đó, ssg có biên tập thêm một chút: (defun GiaoDT (e1 e2 / ob1 ob2 g L i kq) (vl-load-com) (setq ob1 (vlax-ename->vla-object e1) ob2 (vlax-ename->vla-object e2) g (vlax-variant-value (vla-IntersectWith ob1 ob2 acExtendNone)) ) (if (/= (vlax-safearray-get-u-bound g 1) -1) (setq L (vlax-safearray->list g))) (setq i 0) (repeat (/ (length L) 3) (setq kq (append (list (list (nth i L) (nth (+ i 1) L) (nth (+ i 2) L))) kq)) (setq i (+ i 3)) ) kq ) Kết quả là một "list of 3Dpoint", gồm toàn bộ các giao điểm của 2 đối tượng, bất kể loại đối tượng nào, miễn là nó có dạng "đường", kể cả đường bao của đối tượng region. Nếu không có giao điểm, kết quả return nil. Không bàn đến ý nghĩa các code lúc này, cứ dùng đã rồi sẽ hiểu! Một ví dụ: (defun C:VD() (GiaoDT (car (entsel "\nEnt 1:")) (car (entsel "\nEnt 2:"))) ) Chạy lệnh VD, bấm F2 sẽ thấy giá trị return. 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