Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
ngoctanvt

Nhờ Kiểm Tra Lỗi Chương Trình Vba

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

Em đang làm chương trình tính sự hiệu quả khi cắt thép tấm để thi công.

 

Trong bản vẽ cắt thép đính kèm theo:

- Các tấm tôn có màu 193

- Các chi tiết cần cắt có màu 20

- Các lỗ khoét của chi tiết có màu 72

Hiệu quả (%) = (tổng diện tích chi tiết cắt - tổng diện tích lỗ khoét) / tổng diện tích tôn * 100

 

Nhưng khi tính tổng diện tích theo từng màu thì ko được. Em muốn lọc các chi tiết theo màu, ko lọc theo layer.

 

Sub Nesting_Percentage()
 
    On Error Resume Next
    
    '-------------------------------
    
    Dim SS2 As AcadSelectionSet
    Dim FilterType2(0 To 7) As Integer
    Dim FilterData2(0 To 7) As Variant
    Dim ToleArea As Double
    Dim PartArea As Double
    Dim HoleArea As Double
    Dim SumToleArea As Double
    Dim SumPartArea As Double
    Dim SumHoleArea As Double
    Dim Percentage As Double
    Dim PolylineObj As AcadLWPolyline
    
    
    '-------------------------------------------------
    Set SS2 = ThisDrawing.SelectionSets("TNT2")
        If Err <> 0 Then
            Err.Clear
            Set SS2 = ThisDrawing.SelectionSets.Add("TNT2")
        Else
            SS2.Clear
        End If
 
    FilterType2(0) = -4: FilterData2(0) = "<AND"
    FilterType2(1) = 0: FilterData2(1) = "LWPolyline"
    FilterType2(2) = -4: FilterData2(2) = "<OR"
    FilterType2(3) = 62: FilterData2(3) = 193
    FilterType2(4) = 62: FilterData2(4) = 20
    FilterType2(5) = 62: FilterData2(5) = 72
    FilterType2(6) = -4: FilterData2(6) = "OR>"
    FilterType2(7) = -4: FilterData2(7) = "AND>"
    
    SS2.SelectOnScreen FilterType2, FilterData2
    
            
    For Each PolylineObj In SS2
        If PolylineObj.TrueColor = 20 Then
            PartArea = PolylineObj.Area
            SumPartArea = SumPartArea + PartArea
        ElseIf PolylineObj.TrueColor = 72 Then
            HoleArea = PolylineObj.Area
            SumHoleArea = SumHoleArea + HoleArea
        ElseIf PolylineObj.TrueColor = 193 Then
            ToleArea = PolylineObj.Area
            SumToleArea = SumToleArea + ToleArea
        End If
    Next PolylineObj
    SS2.Delete
    
    Percentage = Round((SumPartArea - SumHoleArea) / SumToleArea * 100, 2)
    MsgBox "Used: " & CStr(Percentage) & "%"
    
End Sub
 
 

 

http://www.cadviet.com/upfiles/6/57144_cutting.dwg

 

 

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

Thay PolylineObj.TrueColor bằng : PolylineObj.color

 

Tuy nhiên cần chú ý khi đối tượng có màu là ByLayer.

  • Vote tăng 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

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  

×