NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 4 11, 2015 Sub Inter_Point1() 'On Error Resume Next Dim TapDT As AcadSelectionSet Dim ftype(1) As Integer, fdata(1) ftype(0) = 0: fdata(0) = "POLYLINE" ftype(1) = 8: fdata(1) = "PLINETNTN" Set TapDT = CreateSelectionSet("Giaodiemzzz") TapDT.Select acSelectionSetAll, , , ftype, fdata Dim PL As AcadEntity Dim Duongdan As AcadEntity Dim pick As Variant ThisDrawing.Utility.GetEntity Duongdan, pick, vbCrLf & "Chon duong LWPolyline tim tuyen1" Dim pt As Variant, i As Integer For i = 0 To TapDT.Count - 1 pt = Duongdan.IntersectWith(TapDT.Item(i), 0) Next i Dim c As AcadCircle Set c = ThisDrawing.ModelSpace.AddCircle(pt, 1) End Sub Muc đích là tìm giao điểm của 1 đối tượng với tập đối tượng chọn Khi sử dụng hàm trên báo lỗi incorrect number of elements in safearray ???? Mặc dù cú pháp không hề sai. 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
dinhvantrang 151 Báo cáo bài đăng Đã đăng Tháng 4 20, 2015 Bạn chọn đối tượng ok chứ? Theo như bộ lọc của bạn thì bạn sẽ chọn đối tượng là Polyline thuộc layer "PLINETNTN" đúng ko 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
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 4 21, 2015 Bạn chọn đối tượng ok chứ? Theo như bộ lọc của bạn thì bạn sẽ chọn đối tượng là Polyline thuộc layer "PLINETNTN" đúng ko nhỉ? Mình chọn đối tuờn riêng lẻ bằng pick là ok, nhưng đưa vào bộ lọc bị lỗ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
ndtnv 481 Báo cáo bài đăng Đã đăng Tháng 4 21, 2015 Code trên sai ở chỗ nếu không có giao điểm của đối tượng cuối cùng trong TapDT với đường dẫn thì pt=nil Bạn xử lý tiếp cho trường hợp có nhiều giao điểm ... Dim c As AcadCircle Dim pt As Variant, i As Integer For i = 0 To TapDT.Count - 1 pt = Duongdan.IntersectWith(TapDT.Item(i), 0) If UBound(pt) = 2 Then Set c = ThisDrawing.ModelSpace.AddCircle(pt, 1) End If Next i ... 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
anhcos 196 Báo cáo bài đăng Đã đăng Tháng 4 24, 2015 Bạn chỉnh code lại như sau For i = 0 To TapDT.Count - 1 pt=nothingpt = Duongdan.IntersectWith(TapDT.Item(i), 0) --> pt là mảng giao với 1 đối tượng, còn pt1 là toàn bộ các điểm giao --> copy các phần tử trong mảng pt sang mảng pt1Next i 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