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  
18011985

[Yêu cầu] Lisp tìm giao điểm

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

18011985    61

Mình đang định viết lsp với ý tưởng như sau:

Một bình đồ có các đường đồng mức(các đường đồng mức là các đường chưa xác định "Polyline, spline, lwpolyline.....") như hình vẽ:

http://www.cadviet.com/upfiles/3/10633_nhan_2.dwg

Mình kẻ 1 đường thẳng với cao độ 0

Mình không biết có hàm nào của lsp có thể tìm giao điểm của đường thẳng với đường đồng mức và xuất dữ liệu thành tập list

'((X1 Y1 Z1) ....... (X12 Y12 Z12)).

Rất mong nhận được sự giúp đỡ của các bạ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
phamthanhbinh    3.123

Mình cần lisp tìm giao điểm các đường thẳng tạo bởi line polyline .......

VD: Mình có 5 đường đồng mức với các cao độ khác nhau: +5 +10 +15 +20 +25

Mình kẻ 1 đường Line hoặc polyline với cao độ 0

Mình muốn tìm điểm giao giữa đường CD0 với các đường trên.

Và lấy tọa độ điểm giao đó nằm trên các đường đồng mức

điểm 1 có tọa độ (X Y 5)

điểm 2 có tọa độ (X Y 10)

......

Trong cad có chế độ Apparent intersecstion để bắt các giao điểm này.

Mình muốn đưa nó sang lisp.

Cảm ơn các bạn nhiều.

Hề hề hề,

Bạn hoàn toàn không phải là người mới tham gia vào diễn đàn và cũngkho7ng6 phải là người chưa bao giờ có yêu cầu về lisp.

Bạn cũng đã được nhắc nhở không ít về cách đặt các yêu cầu về lisp. 

Nhưng hình như bạn không muốn quan tâm tới những điều giúp cho diễn đàn này phát triển tốt hơn mà chỉ biết ích kỷ theo những quan điểm cá nhân của bạn.

Yêu cầu lần này của bạn không phải không thể làm nhưng nếu bạn không sửa lại yêu cầu theo đúng những quy định của diễn đàn thì sau 48 giờ nưã bài này sẽ bị xóa đấy.

Bạn cần có bản vẽ thể hiện rõ những gì bạn có trước khi dùng lisp và những gì bạn cần sau khi dùng lisp.

Tỷ như sau khi tìm được giao điểm (nếu có) thì các điểm này sẽ được lưu vào đâu, hay được thể hiện như thế nào???

Hay như các đường đồng mức bạn có là loại đường gì line, lwpolyline hay 3dpolyline .....

........

Rất mong bạn lưu tâm đến những quy định chung của diễn đàn để cho diễn đàn phát triển ngày một tốt hơn và tránh được những xung đột không đáng có trên diễn đàn. Đồng thời diễn đàn cũng sớm trở thành diễn đàn của những các bộ kỹ thuật có trách nhiệm với bản thân và với cộng đồng.

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
18011985    61

Lâu rồi không gặp Phamthanhbinh!

Mình lâu rồi mới quay lại diễn đàn, mình cũng đã tìm hướng dẫn về quy định chung khi Post bài nhưng mình chỉ nhớ là nếu nêu yêu cầu hay hỏi đáp vấn đề nào đấy thì đưa lên tittle. Bạn có thể sửa bài của mình lại cho đúng với quy định của diễn đàn không? Cảm ơn 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
phamthanhbinh    3.123

Lâu rồi không gặp Phamthanhbinh!

Mình lâu rồi mới quay lại diễn đàn, mình cũng đã tìm hướng dẫn về quy định chung khi Post bài nhưng mình chỉ nhớ là nếu nêu yêu cầu hay hỏi đáp vấn đề nào đấy thì đưa lên tittle. Bạn có thể sửa bài của mình lại cho đúng với quy định của diễn đàn không? Cảm ơn bạn đã quan tâm.

Hề hề hề,

Về các quy định post bài chung của diễn đàn cũng như quy định về post bài yêu cầu trong box Autolisp bạn chịu khó tìm trên diễn đàn sẽ dễ dàng thấy thôi. Mong rằng bạn lưu tâm nhé.

Cơ bản bạn đã sửa lại bài post gần đúng với yêu cầu, chỉ thiếu tí ti và vì cái thiếu ấy mà cái lisp dưới dây có thể chưa đúng với yêu cầu của bạn. Hãy thử dùng và cho ý kiên nếu cần sửa chữa.

http://www.cadviet.com/upfiles/3/5194_timgiaodiemvoiddm.lsp

  • 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
18011985    61

Cảm ơn bạn đã giúp đỡ mình hiểu ra nhiều nhưng vẫn chưa đúng với ý mình lắm.

Vì đường thẳng cắt 1 đường đồng mức tại 2 điểm nhưng kết quả ghi tại 2 thời điểm khác nhau.

Như trong bản vẽ của mình lần lượt kết quả sẽ ghi ra là điểm 1, 2, 3, .... 12.

Nhưng kết quả của bạn trả là 1, 12, 2, 11 ...... 6, 7.

Bạn chỉnh lại giúp mình nhé.

PS: Cho mình xin tài liệu hướng dẫn mấy mã acet nhé. Thanks

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

Cảm ơn bạn đã giúp đỡ mình hiểu ra nhiều nhưng vẫn chưa đúng với ý mình lắm.

Vì đường thẳng cắt 1 đường đồng mức tại 2 điểm nhưng kết quả ghi tại 2 thời điểm khác nhau.

Như trong bản vẽ của mình lần lượt kết quả sẽ ghi ra là điểm 1, 2, 3, .... 12.

Nhưng kết quả của bạn trả là 1, 12, 2, 11 ...... 6, 7.

Bạn chỉnh lại giúp mình nhé.

PS: Cho mình xin tài liệu hướng dẫn mấy mã acet nhé. Thanks

Hề hề hề,

1/- Có nghĩa là bạn muốn sắp xếp lại cái list các giao điểm này theo một trật tự nào đó. Vậy trật tự ấy được quy định ra sao??? Từ trên xuống dưới hay từ đưới lên trên, từ trái qua phải hay từ phải qua trái ??? hay là từ đầu đường giao tới đít đường giao ????

2/-Không có tài liệu nào về mả acet cả vì chả có mã nào goi là mã acet hết.

Các hàm acet có đây đủ trong bộ express tools của CAD, nếu bạn đã cài nó thì chỉ việc lấy ra mà xà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
18011985    61

MÌnh muốn hướng lấy giao điểm từ điểm đầu đường thẳng đến điểm cuối đường thằng

Hàm acet có trong Express tool nhưng bật help trong Vlide thì không có hướng dẫn cụ thể.

Hì thôi để mình tìm xem nếu không thủng chỗ nào hỏi bạn sau vậ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
phamthanhbinh    3.123

MÌnh muốn hướng lấy giao điểm từ điểm đầu đường thẳng đến điểm cuối đường thằng

Hàm acet có trong Express tool nhưng bật help trong Vlide thì không có hướng dẫn cụ thể.

Hì thôi để mình tìm xem nếu không thủng chỗ nào hỏi bạn sau vậy.

Hề hề hề,

1/- Giá như bạn nói rõ cái trật tự này ngay từ đầu có phải tốt hơn không nhỉ???

Muốn vậy bạn hãy thêm đoạn code dưới đây dùng để sắp xếp lại trật tự của các giao điểm theo ý bạn. Đoạn code này được thêm vào ngay phía dưới dấu ngoặc kết thúc của hàm foreach và ngay bên trê dòng code gọi lại biến plst.

(setq plst (vl-sort plst '(lambda (x y) (> (vlax-curve-getparamatpoint e2 (list (car x) (cadr x) 0)) (vlax-curve-getparamatpoint e2 (list (car y) (cadr y) 0))))))

 

2/- Bạn làm đúng rồi đó. Nên tự tìm hiểu trước rồi chỗ nào chưa thủng hỏi chỗ đó sẽ dễ dàng hơn cho người trả lời. Còn bạn hỏi chung chung như vầy rất khó trả lời bởi các hàm (acet-....) này có không ít chút nào.

Để tìm hiểu về các hàm acet này, bạn cứ việc nhập nó vào dòng command và test, sau đó xem kết quả và từ đó luận ra chức năng của từng thằng . Khi đã thủng thì cứ thế mà xài, khỏi cần lăn tăn vì sao nó thế.

 

Hề hề hề, đó cũng là cách mót của mình bởi muốn hiểu tường tận về các hàm (acet-...) này e rằng mình xuống lỗ vẫn còn chưa xong.

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
18011985    61

ops!!!

Cái đó tách được 2 điểm cùng 1 đường đồng mức nhưng chưa đúng ý mình.

- Mình muốn nó sắp xếp kết quả theo điểm đầu và điểm cuối của đường thẳng hoặc đường Polyline

VD:

Mình kẻ đường thẳng từ trên xuống thì kết quả nhận được lần lượt là điểm từ trên xuống và ngược lại.

Đường thẳng hoặc polyline có thể vẽ theo hướng bất kỳ nhưng hướng trả kết quả là từ điểm đầu đến điểm cuối của đường cần tìm giao điể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
phamthanhbinh    3.123

ops!!!

Cái đó tách được 2 điểm cùng 1 đường đồng mức nhưng chưa đúng ý mình.

- Mình muốn nó sắp xếp kết quả theo điểm đầu và điểm cuối của đường thẳng hoặc đường Polyline

VD:

Mình kẻ đường thẳng từ trên xuống thì kết quả nhận được lần lượt là điểm từ trên xuống và ngược lại.

Đường thẳng hoặc polyline có thể vẽ theo hướng bất kỳ nhưng hướng trả kết quả là từ điểm đầu đến điểm cuối của đường cần tìm giao điểm.

Hề hề hề, 

Cái ý của bạn khó diễn đạt đến vậy ư??? Phải qua vài ba lần théc méc mới có thể hiểu nổi bạn cần gì. Thiệt tình .....

Mình sort như vậy là do cố tình bắt bạn trả lời để bạn hiểu cần phải làm gì khi muốn có một lisp theo ý mình.

Việc bạn cần đơn giản chỉ là đổi dầu > thành dấu < trong cái dòng code thêm vào ở bài trước.

Hy vọng bạn sẽ rut kinh nghiệm cho việc trình bày các ya6u cầu của mình. Đừng làm khó những người muốn giúp bạ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
18011985    61

hì hì mình diễn tả ý tưởng kém lắm.

Mình cũng đã đổi dấu < > với nhau trước khi bạn nói vì trước đây mình đã từng biết nhưng vấn đề ở đây làm sao để nó tự hiểu lúc nào cần < lúc nào cần >.

Ý tưởng của mình đường cần tìm giao điểm là vecto các điểm trả kết quả lần lượt là các điểm mà vecto gặp đầu tiên.

Nên khi mình thay chiều vecto no lại khác.

PS: Mình thêm thắt một tý như trong bản vẽ của mình tới đường đồng mức CT+6.00 nhưng thực tế nó không kết thúc tại đó. Nó còn đỉnh nữa vậy có cách nào gắn 1 text (cao độ đỉnh) điểm đặt trên đường cần tìm giao điểm và cho cùng kết quả vào list.

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
18011985    61

OK mình tìm được cách gán thêm text vào rồi. Nhưng có 1 vấn đề mình chưa giải quyết được đó là trùng đường đồng mức.

VD cùng 1 đường đồng mức CT+5.00 nhưng có tới 5 đường trùng nhau thì làm sao mình loại bỏ được các toạ độ trùng lặp. Mình đã viết thử 1 đoạn code để loại bỏ điểm trùng lọc, kết quả máy mình treo đơ.

PS sao mình không Post được code trực tiếp vào bài viết nhỉ.

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  

×