Xuất Danh Sách Vật Tư (BOM) Tùy Chỉnh Excel bằng iLogic và API

Xuất Danh Sách Vật Tư (BOM) Tùy Chỉnh Excel bằng iLogic và API

Trong Autodesk Inventor, việc xuất danh sách vật tư (Bill of Materials – BOM) sử dụng lệnh Bill Of Materials đã được tích hợp sẵn. Tuy nhiên, công cụ này chỉ hỗ trợ một số tùy chỉnh cơ bản như thêm bớt số cột và thay đổi định dạng xuất. Khi bạn cần xuất danh sách vật tư với một mẫu thống nhất và lặp đi lặp lại, việc sử dụng iLogic kết hợp với API trở nên vô cùng hữu ích. Bài viết dưới đây sẽ hướng dẫn bạn cách xuất bảng vật tư bằng iLogicAPI để đạt được sự linh hoạt và tùy chỉnh tối đa.


1. Giới Thiệu

Việc quản lý và xuất danh sách vật tư (BOM) trong Autodesk Inventor là một phần quan trọng giúp các kỹ sư và nhà thiết kế theo dõi và kiểm soát các thành phần của sản phẩm. Mặc dù lệnh Bill Of Materials cung cấp một số tùy chọn cơ bản, nhưng khi bạn cần xuất BOM theo một mẫu cụ thể và lặp đi lặp lại nhiều lần, việc sử dụng iLogicAPI để tự động hóa quá trình này sẽ mang lại nhiều lợi ích hơn. Điều này không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu sai sót trong quá trình nhập liệu thủ công.

2. Bước 1: Tạo File Excel Mẫu

Trước tiên, bạn cần tạo một file Excel mẫu để xuất dữ liệu từ Inventor vào mẫu có sẵn này.

Các Bước Thực Hiện:

  1. Tạo File Excel Mẫu:
    • Mở Microsoft Excel và tạo một file mới.
    • Đặt tên file là BOM_Template.xlsx.
    • Tạo một sheet với tên là BOM.
  2. Thiết Kế Bảng Mẫu:
    • Tạo các cột cần thiết cho danh sách vật tư, ví dụ: Item Number, Description, Quantity, Unit, Part Number, v.v.
    • Định dạng các cột theo yêu cầu của bạn để đảm bảo sự thống nhất và dễ đọc.
  3. Lưu File Mẫu:
    • Lưu file Excel mẫu này vào thư mục dễ dàng truy cập để sử dụng trong quá trình xuất BOM.

3. Bước 2: Tạo Script iLogic

Sau khi đã có file Excel mẫu, bước tiếp theo là tạo script iLogic để tự động xuất BOM từ Inventor vào file Excel mẫu này.

Các Bước Thực Hiện:

  1. Mở File Lắp Ráp Trong Inventor:
    • Mở Autodesk Inventor và tải file lắp ráp (.iam) mà bạn muốn xuất BOM.
  2. Tạo Rule iLogic Mới:
    • Chuyển đến tab Manage trên thanh công cụ.
    • Chọn Add Rule để tạo một rule mới.
    • Đặt tên rule là BOMExport2Excel.
  3. Nhập Đoạn Code VBA:
    • Dán đoạn mã VBA dưới đây vào vùng code của rule. Đoạn mã này sẽ kết nối với file Excel mẫu và xuất dữ liệu BOM vào đó.
    vb
    Sub Main()
    ' Khai báo đối tượng
    Dim oAssyDoc As AssemblyDocument
    oAssyDoc = ThisApplication.ActiveDocument
    Dim oAssyCompDef As AssemblyComponentDefinition
    oAssyCompDef = oAssyDoc.ComponentDefinition
    ‘ Lấy đường dẫn của Assembly
    Dim sPath As String = ThisDoc.Path

    ‘ Đặt Master LevelOfDetail để thao tác với BOM
    Dim oLOD As LevelOfDetailRepresentation
    Try
    oLOD = oAssyCompDef.RepresentationsManager.LevelOfDetailRepresentations.Item(“Master”)
    Catch ex As System.ArgumentException
    Finally
    oLOD.Activate(True)
    End Try

    ‘ Lấy BOM từ Assembly
    Dim oBOM As BOM
    oBOM = oAssyCompDef.BOM
    Logger.Trace(“oBOM is set”)

    oBOM.StructuredViewEnabled = True

    Dim oBOMView As BOMView
    oBOMView = oBOM.BOMViews.Item(“Structured”)
    Logger.Trace(“oBOMView is set”)

    oBOM.StructuredViewFirstLevelOnly = False

    ‘ Xuất BOM
    Dim sJobBOMTempName As String = String.Concat(sPath, “\BOM_Template.xlsx”)
    Dim sJobBOMName As String = String.Concat(sPath, “\”, ThisDoc.FileName(False) & ” Part list” & “.xlsx”)
    Logger.Trace(“sJobBOMName: “ & sJobBOMName)

    Try
    IO.File.Copy(sJobBOMTempName, sJobBOMName, True)
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try

    Dim sMySheet As String = “BOM” ‘ Bắt đầu với sheet có tên là BOM
    Static iCurrRow As Integer = 9 ‘ Bắt đầu từ hàng số 9

    GoExcel.DisplayAlerts = False
    GoExcel.Open(sJobBOMName, sMySheet)

    ‘ Ghi giá trị từ BOM sang Excel
    Call QueryBOMRowProperties(oBOMView.BOMRows, sJobBOMName, iCurrRow)
    oAssyDoc.Save

    GoExcel.CellValue(“B2:F5”) = String.Concat(iProperties.Value(“Summary”, “Title”))
    GoExcel.CellValue(“H2”) = String.Concat(iProperties.Value(“Project”, “Part Number”))
    GoExcel.CellValue(“H3”) = DateTime.Now.ToString(“dd/MM/yyyy”)
    GoExcel.CellValue(“I3:J5”) = String.Concat(“NHO”)

    ‘ Lưu và đóng Excel
    GoExcel.Save
    GoExcel.Close

    ‘ Set to iLogic LevelOfDetail Try
    Try
    oLOD = oAssyCompDef.RepresentationsManager.LevelOfDetailRepresentations.Item(“iLogic”)
    Catch ex As System.ArgumentException
    oLOD = oAssyCompDef.RepresentationsManager.LevelOfDetailRepresentations.Add(“iLogic”)
    Finally
    oLOD.Activate(True)
    End Try

    ‘ Hiển thị thông báo khi hoàn thành
    Dim sMessage As String = “BOM đã được xuất.” & ” File BOM tại “ & sPath & “\” & ThisDoc.FileName(False) & ” Part list” & “.xlsx”
    Dim sCaption As String = “BOM Export Complete”
    Dim oButtons As MessageBoxButtons = MessageBoxButtons.OK
    Dim oIcons As MessageBoxIcon = MessageBoxIcon.Information

    Dim oResult As DialogResult

    ‘ Hiển thị MessageBox
    oResult = MessageBox.Show(sMessage, sCaption, oButtons, oIcons)
    End Sub

    Public Sub QueryBOMRowProperties(oBOMRows As BOMRowsEnumerator, JobSpreadsheetName As String, iCurrRow As Integer)
    ‘ Lặp lại thông qua nội dung của hàng BOM
    Static CurrentRow As Integer = iCurrRow
    Dim i As Long
    Dim sWriteCell As String

    For i = 1 To oBOMRows.Count

    ‘ Lấy dòng hiện tại
    Dim oRow As BOMRow
    oRow = oBOMRows.Item(i)

    ‘ Đặt tham chiếu đến định nghĩa linh kiện chính của hàng
    Dim oCompDef As ComponentDefinition
    oCompDef = oRow.ComponentDefinitions.Item(1)

    Dim oPropSets As PropertySets
    oPropSets = oCompDef.Document.PropertySets

    oDesignTrackingPropertySet = oPropSets.Item(“Design Tracking Properties”)
    oInventorSummaryPropertySet = oPropSets.Item(“Inventor Summary Information”)
    oCustomPropertySet = oPropSets.Item(“Inventor User Defined Properties”)

    ‘ Lấy các thuộc tính file được yêu cầu
    oItemNumberProperty = oRow.ItemNumber
    oPartNumProperty = oDesignTrackingPropertySet.Item(“Part Number”)
    oDescripProperty = oDesignTrackingPropertySet.Item(“Description”)
    oTitleProperty = oInventorSummaryPropertySet.Item(“Title”)

    Trace.WriteLine(“iLogic: oItemNumberProperty: “ & oItemNumberProperty & ” | “ & oPartNumProperty.Value & ” | “ & oDescripProperty.Value)

    sWriteCell = “A” & CurrentRow
    GoExcel.CellValue(sWriteCell) = oItemNumberProperty

    sWriteCell = “B” & CurrentRow
    D = CountDots(oItemNumberProperty)
    If D = 0 Then
    GoExcel.CellValue(sWriteCell) = “●”
    Else
    GoExcel.CellValue(sWriteCell) = ” “
    End If

    sWriteCell = “C” & CurrentRow
    D = CountDots(oItemNumberProperty)
    If D = 1 Then
    GoExcel.CellValue(sWriteCell) = “●”
    Else
    GoExcel.CellValue(sWriteCell) = ” “
    End If

    sWriteCell = “D” & CurrentRow
    D = CountDots(oItemNumberProperty)
    If D = 2 Then
    GoExcel.CellValue(sWriteCell) = “●”
    Else
    GoExcel.CellValue(sWriteCell) = ” “
    End If

    sWriteCell = “E” & CurrentRow
    D = CountDots(oItemNumberProperty)
    If D = 3 Then
    GoExcel.CellValue(sWriteCell) = “●”
    Else
    GoExcel.CellValue(sWriteCell) = ” “
    End If

    sWriteCell = “F” & CurrentRow
    D = CountDots(oItemNumberProperty)
    If D = 4 Then
    GoExcel.CellValue(sWriteCell) = “●”
    Else
    GoExcel.CellValue(sWriteCell) = ” “
    End If

    sWriteCell = “G” & CurrentRow
    GoExcel.CellValue(sWriteCell) = oPartNumProperty.Value

    sWriteCell = “H” & CurrentRow
    GoExcel.CellValue(sWriteCell) = oTitleProperty.Value

    sWriteCell = “I” & CurrentRow
    GoExcel.CellValue(sWriteCell) = oRow.ItemQuantity

    ‘ Tăng hàng hiện tại
    CurrentRow = CurrentRow + 1

    ‘ Lặp lại để quy hoạch các hàng con nếu có
    If Not oRow.ChildRows Is Nothing Then
    Call QueryBOMRowProperties(oRow.ChildRows, JobSpreadsheetName, CurrentRow)
    Else
    End If

    Next i
    End Sub

    Function CountDots(oItemNumberProperty) As Integer
    Dim dotCount As Integer
    Dim i As Integer
    A = CStr(oItemNumberProperty)
    dotCount = 0

    For i = 1 To Len(A)
    If Mid(A, i, 1) = “.” Or Mid(A, i, 1) = “,” Or Mid(A, i, 1) = “-“ Or Mid(A, i, 1) = “:” Or Mid(A, i, 1) = “/” Or Mid(A, i, 1) = “\” Then
    dotCount = dotCount + 1
    End If
    Next i

    CountDots = dotCount
    End Function

    Lưu Ý: Đoạn mã trên thực hiện việc:

    • Kết nối với file Assembly hiện tại.
    • Lấy dữ liệu BOM và sao chép vào file Excel mẫu.
    • Ghi các thuộc tính cần thiết vào các ô tương ứng trong Excel.
    • Tùy chỉnh tên file Excel xuất ra, dòng bắt đầu xuất dữ liệu, định dạng ngày tháng và người tạo.
  4. Lưu Script:
    • Sau khi nhập đoạn mã, nhấn OK để lưu rule.

4. Bước 3: Chạy Rule iLogic để Xuất BOM

Sau khi đã tạo xong script iLogic, bạn có thể sử dụng nó để xuất danh sách vật tư từ Assembly sang Excel một cách tự động và tùy chỉnh theo mẫu đã thiết lập.

Các Bước Thực Hiện:

  1. Chọn Rule iLogic:
    • Trong iLogic Browser, tìm rule BOMExport2Excel mà bạn vừa tạo.
  2. Chạy Rule:
    • Nhấp chuột phải vào rule BOMExport2Excel và chọn Run Rule.
    • Script sẽ tự động thực hiện các bước xuất BOM vào file Excel mẫu và lưu lại với tên tương ứng.
  3. Kiểm Tra Kết Quả:
    • Mở file Excel xuất ra (ví dụ: Surpass26 Part list.xlsx) để kiểm tra danh sách vật tư đã được xuất đúng theo mẫu.
    • Các thông tin như Item Number, Description, Quantity, Part Number, v.v. sẽ được điền tự động từ dữ liệu BOM trong Assembly.

5. Ví Dụ Minh Họa

Giả sử bạn có một Assembly với các bộ phận như sau:

  • Bulong A: 5 cái
  • Vòng Bi B: 3 cái
  • Khung C: 2 cái

Sau khi chạy rule BOMExport2Excel, file Excel xuất ra sẽ chứa danh sách vật tư như sau:

Item Number Description Quantity Unit Part Number Title
1 Bulong A 5 cái BA-001 Bulong A Detail
2 Vòng Bi B 3 cái VB-002 Vòng Bi B Detail
3 Khung C 2 cái KC-003 Khung C Detail

Các ô thông tin đã được điền tự động từ dữ liệu BOM trong Assembly, đảm bảo tính chính xác và nhất quán.

6. Kết Luận

Việc xuất danh sách vật tư (BOM) từ Autodesk Inventor vào file Excel tùy chỉnh bằng iLogicAPI không chỉ giúp bạn tiết kiệm thời gian mà còn đảm bảo sự chính xác và nhất quán trong quá trình quản lý vật tư. Bằng cách tạo một script iLogic phù hợp, bạn có thể tự động hóa quá trình xuất BOM theo mẫu đã thiết lập, giảm thiểu sai sót và tăng hiệu suất làm việc.

CHÚC BẠN THÀNH CÔNG!

Nếu bạn có bất kỳ thắc mắc hoặc cần hỗ trợ thêm về việc xuất danh sách vật tư bằng iLogic và API trong Autodesk Inventor, đừng ngần ngại liên hệ với Kỹ Thuật Công Nghiệp Ánh Dương để được tư vấn và hỗ trợ.

Liên Hệ Ngay Để Biết Thêm Thông Tin:

  • Website: anhduongvina.com
  • Hotline: 097 436 8457
  • Địa chỉ: 118-120-122 Đường TK8, Tiền Lân, Bà Điểm, Hóc Môn, TP.HCM.

7. Xem Thêm Bài Viết Liên Quan

Cập Nhật Kiểu Hiển Thị (Style) Trong Bản Vẽ 2D Trên Inventor

Hướng Dẫn Rule Cập Nhật Lại Tên Occurrence Trong Assembly

—Xuất Danh Sách Vật Tư (BOM) Tùy Chỉnh Excel bằng iLogic và API—

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
038.2217.980