Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 hongtvtk

hongtvtk

    biết vẽ circle

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

Đã gửi 12 September 2010 - 04:41 PM

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

#2 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 14 September 2010 - 06:57 PM

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.

  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#3 hongtvtk

hongtvtk

    biết vẽ circle

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

Đã gửi 15 September 2010 - 07:19 PM

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