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

Tìm giao điểm từ 4 điểm đã cho

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

Xin hỏi các bác,e có 4 điểm A,B,C,D .Bây giờ e muôn gán điểm E cho giao điểm Của 2 đường AB,CD mà ko cần vẻ 2 Đường này thì làm sao ạ.Mục đích của e là vẽ mỗi đường AE trên màn hình.Em cảm ơn

  • 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

Cái này đâu cần phải lập trình VBA. Bạn chỉ cần làm như sau:

Đánh lệnh PLine (hoặc Line),

Đánh lệnh 'CAL

Rồi nhập ILLE, sau đó bạn chọn 4 điểm End (theo thứ tự A, B, C, D). Như vậy là đã bắt được giao điểm của 2 đường Ab và CD rồi.

Công việc tiếp theo là rất đơn giản đúng không 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

-k biet day la ban do hay ban hoi vay nhi?

-con theo cach bac nvson noi thi phai ve dc line oy, trong khi do caibutchi hoi la k can ve line ma chi co 4 diem thoi!

-ke ra kung hay, ve thi don gian oy nhung cach lam khac ma k ve thi kung hay, ai bit thi chi giao!hj

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

Xin hỏi các bác,e có 4 điểm A,B,C,D .Bây giờ e muôn gán điểm E cho giao điểm Của 2 đường AB,CD mà ko cần vẻ 2 Đường này thì làm sao ạ.Mục đích của e là vẽ mỗi đường AE trên màn hình.Em cảm ơn

tùy theo 2D hay 3D nhưng nói chung như sau:

Viết 2 phương trình 2 đường thẳng giải hệ => nghiệm (điểm E (x,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

Chỉ có 4 điểm thì bạn dùng ILL(p1, p2, p3, p4) là được.

(bạn chỉ cần thay p1, p2, p3, p4 thành các điểm để bắt như End, Mid, Int, Per....)

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

-k biet day la ban do hay ban hoi vay nhi?

-con theo cach bac nvson noi thi phai ve dc line oy, trong khi do caibutchi hoi la k can ve line ma chi co 4 diem thoi!

-ke ra kung hay, ve thi don gian oy nhung cach lam khac ma k ve thi kung hay, ai bit thi chi giao!hj

Hề hề hề,

Cái cách đặt vấn đề của bạn hay đấy nhỉ???

Không biết đi hỏi người khác, vậy mà khi người ta trả lời lại không thèm test thử xem sao???

Chẳng thà bạn đã làm theo mà chưa được thì hỏi lại lại là một nhẽ, đằng này không thèm test hay không thèm hiểu lại là một nhẽ khác.

Cách mà bác NVson bày là một cách khá thông dụng trong CAD đó. Hãy thử làm và bạn sẽ thấy nó có hiệu quả ra sao.

Cách này tuy không phải vẽ các line ra nhưng thực chất cũng là xác định các line đó bằng các hàm giải tích để tìm giao điểm của chúng rồi trả về giao điểm đó.

Theo như bài toán bạn đặt ra;

Xin hỏi các bác,e có 4 điểm A,B,C,D .Bây giờ e muôn gán điểm E cho giao điểm Của 2 đường AB,CD mà ko cần vẻ 2 Đường này thì làm sao ạ.Mục đích của e là vẽ mỗi đường AE trên màn hình,

Bạn hãy làm như sau:

1/- Trên dòng command, gõ lệnh line rồi enter

2/- di chuột tới điểm A và click để chọn điểm bắt đầu vẽ line

3/- gõ 'cal trên dòng command rồi enter

4/- Gõ tiếp ill ( nod,nod,nod,nod) rồi enter

5/- Lần lượt di chuột tới 4 điểm A,B,C,D theo thứ tự bạn muốn và click tại các điểm đó và bạn sẽ có đường AE như bạn yêu cầu.

 

Chú ý là ở đây mình dùng truy bắt điểm là nod với điều kiện là đã có các point tại các điểm A,B,C,D.

Trong trường hợp chưa có các point bạn phải linh động mà chọn kiểu truy bắt điểm cho phù hợp nhé.

 

Có vẻ hơi loằng ngoằng nhưng lại rất tiện lợi cho những yêu cầu tương tự của bạn.

Hy vọng bạn nên rút kinh nghiệm để có thể học hỏi được nhiều hơn.

Hề hề hề...

  • 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

Xin hỏi các bác,e có 4 điểm A,B,C,D .Bây giờ e muôn gán điểm E cho giao điểm Của 2 đường AB,CD mà ko cần vẻ 2 Đường này thì làm sao ạ.Mục đích của e là vẽ mỗi đường AE trên màn hình.Em cảm ơn

Đúng như Detailing nói trong VBA không có cách gì tìm được giao điểm với 4 điểm đó. Chỉ có cách vẽ 2 đường line rồi tìm giao điểm của chúng. Trong lisp thì việc này lại đơn giản chỉ cần dùng hàm (inters p1 p2 p3 p4 nil) là được 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

Cái này đâu cần phải lập trình VBA. Bạn chỉ cần làm như sau:

Đánh lệnh PLine (hoặc Line),

Đánh lệnh 'CAL

Rồi nhập ILLE, sau đó bạn chọn 4 điểm End (theo thứ tự A, B, C, D). Như vậy là đã bắt được giao điểm của 2 đường Ab và CD rồi.

Công việc tiếp theo là rất đơn giản đúng không bạn?

Không đơn giản nếu có nhiếu hơn 100 or nhiều hơn lần như thế, khi chủ thớt post vào chuyên mục này là có dụng ý riêng.

 

Đúng như Detailing nói trong VBA không có cách gì tìm được giao điểm với 4 điểm đó. Chỉ có cách vẽ 2 đường line rồi tìm giao điểm của chúng. Trong lisp thì việc này lại đơn giản chỉ cần dùng hàm (inters p1 p2 p3 p4 nil) là được giao điểm.

 

Cái này sai, VBA dư sức làm chuyện này bằng cách sử dụng hàm IntersectWith, và có thể tìm giao giữa 2 đối tượng bằng cách kết hợp có kéo dài và không kéo dài 2 đối tượng giao.

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

Cái này sai, VBA dư sức làm chuyện này bằng cách sử dụng hàm IntersectWith, và có thể tìm giao giữa 2 đối tượng bằng cách kết hợp có kéo dài và không kéo dài 2 đối tượng giao.

Khi dùng hàm IntersectWith bạn đã tạo ra 2 line (entity) nhưng chủ topic lại ko thích như vậy (ko hiểu tại sao hehe)

Đôi khi có những cách suy nghĩ tự làm khó mình như chủ topic đây ???? Tại sao ko dc vẽ thêm 2 line để dễ tìm giao điểm nhỉ? hehehe

 

Do right thing not do thing right

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

Khi dùng hàm IntersectWith bạn đã tạo ra 2 line (entity) nhưng chủ topic lại ko thích như vậy (ko hiểu tại sao hehe)

Đôi khi có những cách suy nghĩ tự làm khó mình như chủ topic đây ???? Tại sao ko dc vẽ thêm 2 line để dễ tìm giao điểm nhỉ? hehehe

 

Do right thing not do thing right

Hề hề hề,

Mình không rành lắm về VBA, nhưng thiết nghĩ hẳn là nó cũng cho phép thực hiện các phép tính đại số trên đò. Như vậy nếu vận dụng các công thức tính toán trong hình học giải tích hẳn sẽ xác định được giao điểm của các line mà không nhất thiết phải vẽ nó ra (tức là phải thêm các đối tượng vào trong CAD).

Đây là cái mình ăn cắp từ Wikipedia, chả biết có giúp gì được cho các bác khi xài VBA để tìm giao điểm hay không, nhưng hy vọng nó sẽ gợi ra được một vài ý tưởng hay ho nào đó để giải quyết cái oái oăm mà chủ thớt đặt ra.

Hề hề hề.

 

 

Mathematics

 

The intersection of two lines 8a52ff4466c68a9d09b923690ea1a22c.png and 8e0e009222687614b36e19e95dcc00b7.png in 2 dimensional space. With line 8a52ff4466c68a9d09b923690ea1a22c.png being defined by two points c18690c9b0018c4214cb55731d078a1d.png and 54120f89532a77552d50e3f050b542da.png, and line 8e0e009222687614b36e19e95dcc00b7.png being defined by two points 6c80062f6d5c94f7dfcfe2ea211c2ba5.png and dca4e7a58151d4667523874e190b29f7.png.[1]

The intersection 8a140337171d690f8dd0eebd94448bf0.png of line 8a52ff4466c68a9d09b923690ea1a22c.png and 8e0e009222687614b36e19e95dcc00b7.png can be defined using determinants. 820cd692435487e246e636dc70afd86a.png0f67217a414c340bfd7376bc9a2f6d7f.png

The determinants can be written out as:

21ceac5c99d33abfe53e0c7bea32121d.png

Note that the intersection point is for the infinitely long lines defined by the points, rather than the line segments between the points, and can produce an intersection point beyond the lengths of the line segments.

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

Khi dùng hàm IntersectWith bạn đã tạo ra 2 line (entity) nhưng chủ topic lại ko thích như vậy (ko hiểu tại sao hehe)

Đôi khi có những cách suy nghĩ tự làm khó mình như chủ topic đây ???? Tại sao ko dc vẽ thêm 2 line để dễ tìm giao điểm nhỉ? hehehe

 

Chúng ta cùng bàn nau về ý tưởng và thuật toán thôi, chứ chủ thớt quẳng topic đâu mất rồi à.

 

Đúng là tạo ra 2 đối tượng, tìm ra giao xong rồi xóa, vừa dễ mà chính xác.

 

Như vậy nếu vận dụng các công thức tính toán trong hình học giải tích hẳn sẽ xác định được giao điểm của các line mà không nhất thiết phải vẽ nó ra (tức là phải thêm các đối tượng vào trong CAD).

 

Để tính toán theo công thức như bác nêu là chuẩn nhất, nhưng triển khai thì rất mất thời gian và phức tạ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

Xin hỏi các bác,e có 4 điểm A,B,C,D .Bây giờ e muôn gán điểm E cho giao điểm Của 2 đường AB,CD mà ko cần vẻ 2 Đường này thì làm sao ạ.Mục đích của e là vẽ mỗi đường AE trên màn hình.Em cảm ơn

Anh không nên "hình sự hóa" và "phức tạp hóa" những vấn đề cỏn con như thế!!!

Có gì khó khăn lắm đâu, chỉ cần :

- Gõ lệnh L vẽ 2 phát được 02 đường AB, CD.

- Gõ lệnh F với tham số mặc định R=0 >> Bấm chọn hai phát >>là ra AE và CE.

- Gõ lệnh E >>>Xóa CE đi là xong!

Tất cả những thao tác ứ chỉ tốn có 10 giây, với người mới làm quen với AutoCAD; nhanh hơn rất nhiều khi phải chờ đèn Đỏ đếm ngược, khi đi làm qua ngã tư! Làm gì phải tự mình làm khổ mình thế hả anh????

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

- Gõ lệnh L vẽ 2 phát được 02 đường AB, CD.

- Gõ lệnh F với tham số mặc định R=0 >> Bấm chọn hai phát >>là ra AE và CE.

- Gõ lệnh E >>>Xóa CE đi là xong!

 

Cái này đâu cần phải lập trình VBA. Bạn chỉ cần làm như sau:

Đánh lệnh PLine (hoặc Line),

Đánh lệnh 'CAL

Rồi nhập ILLE, sau đó bạn chọn 4 điểm End (theo thứ tự A, B, C, D). Như vậy là đã bắt được giao điểm của 2 đường Ab và CD rồi.

Công việc tiếp theo là rất đơn giản đúng không bạn?

 

Chỉ có 4 điểm thì bạn dùng ILL(p1, p2, p3, p4) là được.

(bạn chỉ cần thay p1, p2, p3, p4 thành các điểm để bắt như End, Mid, Int, Per....)

 

Bạn hãy làm như sau:

1/- Trên dòng command, gõ lệnh line rồi enter

2/- di chuột tới điểm A và click để chọn điểm bắt đầu vẽ line

3/- gõ 'cal trên dòng command rồi enter

4/- Gõ tiếp ill ( nod,nod,nod,nod) rồi enter

5/- Lần lượt di chuột tới 4 điểm A,B,C,D theo thứ tự bạn muốn và click tại các điểm đó và bạn sẽ có đường AE như bạn yêu cầu.

 

Trước khi trả lời các bạn có tự hỏi xem tại sao chủ topic lại hỏi trong khu vực VBA nhỉ? Hỏi nhầm chỗ chăng??

 

Có 1 câu hỏi thế này trong khu vực VBA: làm sao tạo dc box (solid)?

trả lời: đánh lệnh box rồi enter .....

have fun!

  • Vote tăng 2

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

Trước khi trả lời các bạn có tự hỏi xem tại sao chủ topic lại hỏi trong khu vực VBA nhỉ? Hỏi nhầm chỗ chăng??

 

Có 1 câu hỏi thế này trong khu vực VBA: làm sao tạo dc box (solid)?

trả lời: đánh lệnh box rồi enter .....

have fun!

Nếu chỉ là have fun! Ý kiến của anh về câu hỏi trên "dư... lào"???

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

Nếu chỉ là have fun! Ý kiến của anh về câu hỏi trên "dư... lào"???

hehe,

câu trả lời của mình hả:

trong khu vực VBA: Mở cuốn Apress.AutoCAD.2006.VBA.A.Programmers.Reference.Sep.2005 trang 174-176

trong khu vực câu hỏi thường gặp : gõ Box , enter .....

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

 

 

 

 

 

 

 

Trước khi trả lời các bạn có tự hỏi xem tại sao chủ topic lại hỏi trong khu vực VBA nhỉ? Hỏi nhầm chỗ chăng??

 

Có 1 câu hỏi thế này trong khu vực VBA: làm sao tạo dc box (solid)?

trả lời: đánh lệnh box rồi enter .....

have fun!

Hề hề hề,

Thanks bác Detailing đã nhắc nhở. Sở dĩ có sự nhầm lẫn này là do khi vào diễn đàn , đọc trên main forum thì chỉ thấy độc có cái tên topic là Tìm giao điểm từ 4 điểm đã cho mà chả hề thấy có chú thích là của chuyên mục VBA ở đâu cả.

Vậy nên mấy bác mới sốt suột giả nhời theo tư duy CAD và lisp, những người vào sau cũng ăn theo các bài post này mà cho ý kiến của mình.

Chỉ tới khi có một số bác chuyên gia VBA nhảy vô cho ý kiến thì mới có sự ngờ ngợ rằng khéo mà mình bé cái tòm.

Về việc này có nhẽ các bác bên chuyên mục VBA nên có thêm chú thích chi chi đó trên cái tiêu đề của topic để người đọc đỡ nhầm lẫn.

Vấn đề này chắc chắn không phải là lần đầu nên bác Detailing mới có cái cơ hội để Have Fun.

Mong rằng các bác bên nờ chớ có giận,(nhất là cái bác chủ thớt). và thông cảm cho cái "Nhiệt tình + Ngu dốt = Phá hoại" này.

Hề hề hề.

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

Cái này sai, VBA dư sức làm chuyện này bằng cách sử dụng hàm IntersectWith, và có thể tìm giao giữa 2 đối tượng bằng cách kết hợp có kéo dài và không kéo dài 2 đối tượng giao.

có thể cho em ví dụ (1 đoạn code về hàm này đc khô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

Tại sao không vẽ thẳng 2 cái Line đó ra rồi tìm được cái giao điểm (trong Vba nó hỗ trợ tìm giao điểm của đối tượng này với đối tượng khác cơ mà) , sau xóa nó đi rồi vẽ cài cần là được 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

Anh không nên "hình sự hóa" và "phức tạp hóa" những vấn đề cỏn con như thế!!!

Có gì khó khăn lắm đâu, chỉ cần :

- Gõ lệnh L vẽ 2 phát được 02 đường AB, CD.

- Gõ lệnh F với tham số mặc định R=0 >> Bấm chọn hai phát >>là ra AE và CE.

- Gõ lệnh E >>>Xóa CE đi là xong!

Tất cả những thao tác ứ chỉ tốn có 10 giây, với người mới làm quen với AutoCAD; nhanh hơn rất nhiều khi phải chờ đèn Đỏ đếm ngược, khi đi làm qua ngã tư! Làm gì phải tự mình làm khổ mình thế hả anh????

 

Bạn đó hỏi là hỏi ở chuyên mục VBA , tại sao các bạn lại trả lời là làm trực tiếp trên Cad , nếu làm trên cad thì cần j

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  

×