Đến nội dung


Hình ảnh
- - - - -

Tìm giao điểm các đối tượng trong Selectionset


  • Please log in to reply
4 replies to this topic

#1 conghoangxd037

conghoangxd037

    biết vẽ line

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

Đã gửi 12 November 2012 - 07:48 PM

trong bản vẽ cad gồm nhiều đường line.mấy anh chị giúp em code vba để tìm giao điểm của các đường line mà ta chọn trong tập selectionset.http://www.cadviet.c...63_drawing1.dwg.
  • 0

#2 conghoangxd037

conghoangxd037

    biết vẽ line

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

Đã gửi 13 November 2012 - 10:19 AM

Mong mấy anh chị cao thủ giúp em với đang bị vướng mắc
  • 0

#3 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 13 November 2012 - 11:08 PM

Giả sử tập chọn có n đối tượng

Dùng 2 vòng lặp lồng nhau, một cái chạy theo i = 1 .. n-1, cái kia chạy từ i+1 đến n để tránh trùng hợp.
Dùng hàm IntersectWith để tìm giao giữa 2 đối tượng.


IntersectWith Method

Gets the points where one object intersects another object in the drawing.

Signature
RetVal = object.IntersectWith(IntersectObject, ExtendOption)

object: All Drawing Objects (Except Pviewport and PolygonMesh)
The object or objects this method applies to.

IntersectObject: Object, input-only;
The object can be one of All Drawing Objects.

ExtendOption: AcExtendOption enum; input-only

This option specifies if none, one or both, of the objects are to be extended in order to attempt an intersection.
acExtendNone
Does not extend either object.
acExtendThisEntity
Extends the base object.
acExtendOtherEntity
Extends the object passed as an argument.
acExtendBoth
Extends both objects.

RetVal
Variant (array of doubles)
The array of points where one object intersects another object in the drawing.
Remarks
If the two objects do not intersect, no data is returned. You can request the point of intersection that would occur if one or both of the objects were extended to meet the other. For example, in the following illustration, Line1 is the base object from which this method was called and line3 is the object passed as a parameter. If the ExtendOption passed is acExtendThisEntity, point A is returned as the point where line1 would intersect line3 if line1 were extended. If the ExtendOption is acExtendOtherEntity, no data is returned because even if line3 were extended, it would not intersect line1.
If the intersection type is acExtendBothEntities and line2 is passed as the parameter entity, point B is returned. If the ExtendOption is acExtendNone and line2 is the parameter entity, no data is returned.


More information:
http://www.progecad....ex.pl?iid=21577
http://forums.autode...th/td-p/1343013
  • 1
Clear sky!

MF Rock collection.

#4 conghoangxd037

conghoangxd037

    biết vẽ line

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

Đã gửi 14 November 2012 - 09:28 AM

cảm ơn a nhiều đã gợi ý cho e.
  • 0

#5 kegiaumat

kegiaumat

    biết vẽ circle

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

Đã gửi 17 November 2012 - 01:30 PM

em tạo một topic mới nhưng lại bị mod xóa thì phải thui em đành nhờ topic này tạm vậy
em có một đoạn VBA sau
Sub a()
On Error Resume Next
Dim bbs As AcadSelectionSet

ThisDrawing.SelectionSets("bbs").Delete
Set bbs = ThisDrawing.SelectionSets.Add("bbs")

bbs.Select acSelectionSetAll
bbs.Select acSelectionSetAll
bbs.Select acSelectionSetAll
bbs.Select acSelectionSetAll
End Sub
trên là có 4 đoạn " bbs.Select acSelectionSetAll" giả sử trong đoạn mã của em mà có 100 đoạn thế thì khi thực hiện lệnh cái dòng command line của em nhảy 100 phát gây ức chế quá. em đã thử dùng "ThisDrawing.SetVariable "cmdecho", 0" mà vẫn ko ăn thua. bác nào có chiu nào chỉ giáo em với. Trong excel thì có "screenupdating" lisp thì có "Cmdecho" còn VBA for cad thì em tìm mãi chả thấy đâu cả cảm ơn các bác đã quan tâm.
  • 0