Đến nội dung


Hình ảnh
- - - - -

Đếm số đối tượng


  • Please log in to reply
3 replies to this topic

#1 huyhoangute

huyhoangute

    biết zoom

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

Đã gửi 26 November 2010 - 08:52 AM

Em có 1 file thế này http://www.cadviet.c...es/3/vidu_3.dwg
Xin hỏi trong VBA làm thế nào để có thể đếm được số đối tượng có hình tròn có dấu cộng ở giữa, hình tròn có số dấu gạch chéo ở giữa, và đường tròn không có gì?
Em chỉ có thể đếm trên bản vẽ có bao nhiêu đường tròn (cà đường tròn có dấu cộng và hình tròn có dấu gạch chéo) theo code này:

Private Sub CommandButton1_Click()
UserForm1.Hide

Dim asset As AcadSelectionSet
Dim i As Integer
'Bo qua loi neu asset khong ton tai
On Error Resume Next
ActiveDocument.SelectionSets.Item("asset").Delete
'Tao asset
Set asset = ActiveDocument.SelectionSets.Add("asset")
'Chon toan bo doi tuong trong ban ve vao asset
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0
dataValue(0) = "Circle"
Dim groupCode As Variant, dataCode As Variant
groupCode = gpCode
dataCode = dataValue
asset.SelectOnScreen groupCode, dataCode
'Duyet cac doi tuong
Dim Doituong As AcadCircle
i = 0
For Each Doituong In asset
i = i + 1
Next
MsgBox " Co " & i & " duong tron."

End Sub
  • 0

#2 kimvantoan

kimvantoan

    biết vẽ line

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

Đã gửi 27 November 2010 - 07:26 AM

Em có 1 file thế này http://www.cadviet.c...es/3/vidu_3.dwg
Xin hỏi trong VBA làm thế nào để có thể đếm được số đối tượng có hình tròn có dấu cộng ở giữa, hình tròn có số dấu gạch chéo ở giữa, và đường tròn không có gì?
Em chỉ có thể đếm trên bản vẽ có bao nhiêu đường tròn (cà đường tròn có dấu cộng và hình tròn có dấu gạch chéo) theo code này:

Private Sub CommandButton1_Click()
UserForm1.Hide

Dim asset As AcadSelectionSet
Dim i As Integer
'Bo qua loi neu asset khong ton tai
On Error Resume Next
ActiveDocument.SelectionSets.Item("asset").Delete
'Tao asset
Set asset = ActiveDocument.SelectionSets.Add("asset")
'Chon toan bo doi tuong trong ban ve vao asset
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0
dataValue(0) = "Circle"
Dim groupCode As Variant, dataCode As Variant
groupCode = gpCode
dataCode = dataValue
asset.SelectOnScreen groupCode, dataCode
'Duyet cac doi tuong
Dim Doituong As AcadCircle
i = 0
For Each Doituong In asset
i = i + 1
Next
MsgBox " Co " & i & " duong tron."

End Sub



Mình giúp bạn đoạn mã này để đếm nốt số hình tròn có dấu "+" và số hình tròn có dấu "x". Bạn tham khảo nhé

Public Sub test1()

Dim sl, sl1 As AcadSelectionSet
Dim ft(0) As Integer
Dim fd(0) As Variant
Dim i As Variant
Dim goc As Double

ft(0) = 0
fd(0) = "line"

On Error Resume Next
Set sl = ThisDrawing.SelectionSets.Add("selectionset")
If Err <> 0 Then
Err.Clear
Set sl = ThisDrawing.SelectionSets("selectionset")
End If

sl.SelectOnScreen ft, fd

Dim i1, i2 As Integer
Dim tdt As Double
i1 = 0: j1 = 0
tdt = sl.Count
For Each i In sl
goc = i.Angle
If goc = 0 Then
i1 = i1 + 1
Else
i2 = i2 + 1
End If
Next
MsgBox "so duong tron co dau (+) la:" & i1
MsgBox "so duong tron co dau (X) la:" & (i2 - i1) / 2
sl.Delete
End Sub
  • 0

#3 kimvantoan

kimvantoan

    biết vẽ line

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

Đã gửi 27 November 2010 - 07:29 AM

xin lỗi bạn! Đoạn mã này, mình thừa biến tdt và dòng lệnh "tdt=sl.count", biến này không dùng đến, bạn bỏ đi nhé
  • 1

#4 huyhoangute

huyhoangute

    biết zoom

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

Đã gửi 29 November 2010 - 09:27 AM

ok, thanks!
đính chính lại 1 chút nữa "i1 = 0: j1 = 0" thành "i1 = 0: i2 = 0" :s_big: :leluoi: :cheers: :D
  • 0