Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
18 replies to this topic

#1 caibutchi

caibutchi

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 07 October 2011 - 10:56 AM

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
  • 1

#2 nvson

nvson

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 20 October 2011 - 10:33 AM

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?
  • 0

#3 exbrayat

exbrayat

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 20 October 2011 - 10:51 AM

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

#4 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 20 October 2011 - 01:25 PM

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))
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#5 nvson

nvson

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 20 October 2011 - 01:48 PM

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....)
  • 0

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 20 October 2011 - 03:11 PM

-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ề...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 23 October 2011 - 10:07 PM

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.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#8 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 24 October 2011 - 04:00 PM

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.
  • 0
Clear sky!

MF Rock collection.

#9 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 24 October 2011 - 04:20 PM

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

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#10 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 24 October 2011 - 05:35 PM

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 Hình đã gửi and Hình đã gửi in 2 dimensional space. With line Hình đã gửi being defined by two points Hình đã gửi and Hình đã gửi, and line Hình đã gửi being defined by two points Hình đã gửi and Hình đã gửi.[1]
The intersection Hình đã gửi of line Hình đã gửi and Hình đã gửi can be defined using determinants. Hình đã gửiHình đã gửi
The determinants can be written out as:
Hình đã gửi
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.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 24 October 2011 - 09:26 PM

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.
  • 0
Clear sky!

MF Rock collection.

#12 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 24 October 2011 - 10:11 PM

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????
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#13 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 24 October 2011 - 10:28 PM

- 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!
  • 2

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#14 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 24 October 2011 - 10:42 PM

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"???
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#15 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 25 October 2011 - 12:23 AM

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 .....
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#16 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 25 October 2011 - 09:47 AM








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ề.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#17 tochat

tochat

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 07 December 2011 - 11:20 PM

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)
  • 0

#18 garupro

garupro

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 02 July 2012 - 01:21 PM

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à
  • 0

#19 garupro

garupro

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 02 July 2012 - 01:24 PM

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