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  
hongtvtk

giúp em tìm giao của 2 đoạn thẳng

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

hongtvtk    2

Chào các bác!

em định viết 1 sub trong đó tìm tất cả các đoạn thẳng có 1 điểm giao nhau và có góc quay bằng nhau rồi gán các đoạn thẳng này vào 1 mảng.(mảng này sẽ là các đoạn của dầm liên tục).

tuy nhiên trong trường hợp 2(xem bản vẽ cad) thì e ko tìm được điểm giao, kết quả UBound(Intpoints)=-1 của 2 trường hợp là giống nhau.

các bác giúp em tìm giao của trường hợp 2 với.

 

http://www.cadviet.com/upfiles/3/giaonhau1.dwg

 

Sub Tim_diem_giao()

Dim T1 As AcadLine

Dim T2 As AcadLine

Dim point As Variant

ThisDrawing.Utility.GetEntity T1, point, "chon duong thang 1:"

ThisDrawing.Utility.GetEntity T2, point, "chon duong thang 2:"

Dim Intpoints As Variant

Intpoints = T1.IntersectWith(T2, acExtendNone)

If (VarType(Intpoints) <> vbEmpty) Then

If (Round(Abs(Sin(T1.Angle)), 5) = Round(Abs(Sin(T2.Angle)), 5)) Then'Kiem tra xem goc quay bang nhau ko

 

If UBound(Intpoints) = -1 Then

'Khong co diem giao(2 duong thang song song)

 

MsgBox UBound(Intpoints)

End If

End If

End If

 

End Sub

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
phantuhuong    204

Trường hợp 2 có lẽ dùng cách so sánh toạ độ của điểm đầu cuối (StartPoint, EndPoint) thôi, có thể VBA không chấp nhận đây là đường giao nhau. Tôi chưa test thử.

 

Hoặc bạn thử nghiên cứu ExtendOption xem sao

 

RetVal = object.IntersectWith(IntersectObject, ExtendOption)

 

ExtendOption:

acExtendNone
Does not extend either object.

acExtendThisEntity
Extends the base object.

acExtendOtherEntity
Extends the object passed as an argument.

acExtendBoth
Extends both objects.

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
hongtvtk    2
Trường hợp 2 có lẽ dùng cách so sánh toạ độ của điểm đầu cuối (StartPoint, EndPoint) thôi, có thể VBA không chấp nhận đây là đường giao nhau. Tôi chưa test thử.

 

Hoặc bạn thử nghiên cứu ExtendOption xem sao

ExtendOption:

acExtendNone
Does not extend either object.

acExtendThisEntity
Extends the base object.

acExtendOtherEntity
Extends the object passed as an argument.

acExtendBoth
Extends both objects.

 

Em cũng đã phải giải quyết vấn đề bằng cách so sánh toạ độ rồi và thấy thủ công quá! nhưng chắc ko còn cách nào khác.

acExtendNone: để nguyên 2 đối tượng mà ko kéo dài

acExtendThisEntity: kéo dài 1 đối tượng

acExtendBoth: kéo dài cả 2 đối tượ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ạ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  

×