NX Lab
NX Open & Automation

Bắt đầu với NX Open: ghi journal và chỉnh sửa bằng Python/C#

Từ một thao tác lặp đi lặp lại đến một đoạn mã chạy được: ghi journal, đọc hiểu, dọn dẹp và nâng cấp thành chương trình Python hoặc C#.

Quản trị viên 5 phút đọc

Ảnh minh họa cho bài Bắt đầu với NX Open: ghi journal và chỉnh sửa bằng Python/C#

Nếu mỗi tuần bạn làm một thao tác giống hệt nhau cả chục lần (đổi tên hàng loạt, xuất STEP, gán thuộc tính, đo kích thước), bạn đang tiêu tiền công của mình cho việc máy làm tốt hơn. NX Open là bộ API để làm việc đó. Điểm vào dễ nhất không phải là sách mà là chính chức năng ghi journal của NX.

NX Open là gì, và nằm ở đâu trong bức tranh

NX Open là tập hợp thư viện cho phép chương trình bên ngoài điều khiển NX: tạo feature, đọc thuộc tính, duyệt assembly, mở hộp thoại. Các ngôn ngữ thường dùng là Python, C#, VB.NET, Java và C/C++ (tùy phiên bản, mức hỗ trợ có thể khác nhau). Mình khuyên người mới bắt đầu với Python (không cần biên dịch) hoặc C# (nếu quen .NET và muốn làm giao diện).

Ba cách đóng gói thường gặp:

  • Journal: một file script (.py, .cs, .vb...) chạy trực tiếp trong NX.
  • DLL/Assembly (C#, VB): biên dịch trước, chạy qua Execute NX Open; phù hợp khi mã dài và cần chia sẻ.
  • Add-in / Menu tùy biến: thêm nút bấm vào giao diện NX để người dùng cuối dùng như lệnh bình thường.

Hình 2: So sánh Journal, DLL và Add-in Hình 2. Chọn cách đóng gói theo mức độ triển khai: cá nhân, nhóm, toàn công ty.

Quy trình bốn bước

Hình 1: Quy trình bốn bước Hình 1. Ghi, đọc, sửa, chạy lại.

  1. Ghi: Bật ghi journal, làm thao tác thật trên một chi tiết thử, dừng ghi.
  2. Đọc: Mở file journal. Hầu hết mã là dài dòng và lặp lại, nhưng tên đối tượng và hàm cho bạn biết API cần dùng.
  3. Sửa: Xóa những dòng không cần, thay giá trị cố định bằng biến, thêm vòng lặp, kiểm tra lỗi.
  4. Chạy lại: Chạy trên dữ liệu khác để chắc chắn mã không phụ thuộc vào trạng thái ngẫu nhiên.

Bước 1: Ghi journal

Trong NX, vào thẻ View hoặc Developer (tùy phiên bản và role) → Record. Chọn ngôn ngữ ghi (Python, VB, C#...). Làm thao tác, nhấn Stop, rồi lưu file. Nếu không thấy thẻ Developer, bật Customize Ribbon hoặc dùng Command Finder gõ "Record Journal".

Hiểu một điều quan trọng: journal ghi lại thao tác giao diện, không phải ý định của bạn. Một lần chọn mặt có thể sinh ra hàng chục dòng. Việc của bạn là cô đọng lại.

Bước 2: Đọc mã

Một journal Python tối giản trông như sau (mã dưới đây là ví dụ liệt kê body của chi tiết đang mở):

import NXOpen

def main():
    s = NXOpen.Session.GetSession()
    part = s.Parts.Work
    lw = s.ListingWindow
    lw.Open()
    for body in part.Bodies:
        lw.WriteLine(str(body.JournalIdentifier))

if __name__ == '__main__':
    main()

Hình 3: Đọc từng dòng của journal Python Hình 3. Bốn khái niệm bạn gặp ở hầu hết chương trình: Session, Work Part, ListingWindow, vòng lặp trên collection.

Điểm quan trọng:

  • Session là điểm vào của mọi thứ.
  • Parts.Work là chi tiết đang được chỉnh sửa; Parts.Display là chi tiết đang hiển thị (có thể khác khi bạn làm việc trong assembly).
  • Hầu hết đối tượng nằm trong collection (part.Bodies, part.Features, part.Sketches...). Duyệt qua chúng là mô-típ cơ bản.
  • ListingWindow là nơi tiện lợi để in kết quả khi thử.

Cùng ví dụ bằng C#

using System;
using NXOpen;

public class ListBodies
{
    public static void Main(string[] args)
    {
        Session s = Session.GetSession();
        Part part = s.Parts.Work;
        ListingWindow lw = s.ListingWindow;
        lw.Open();

        foreach (Body b in part.Bodies)
        {
            lw.WriteLine(b.JournalIdentifier);
        }
    }

    public static int GetUnloadOption(string arg)
    {
        // Giải phóng thư viện ngay sau khi chạy xong
        return (int)Session.LibraryUnloadOption.Immediately;
    }
}

Hàm GetUnloadOption giúp NX không khóa file DLL sau khi chạy, nên bạn có thể biên dịch lại mà không phải đóng NX.

Chạy mã

  • Python / journal: File → Execute → Play Journal (đường dẫn menu có thể khác giữa các phiên bản), chọn file.
  • C# (DLL): biên dịch ra .dll, rồi File → Execute → NX Open và chọn file.
  • Chạy dòng lệnh: NX có tiện ích chạy journal không giao diện (batch) qua tiện ích dòng lệnh để xử lý hàng loạt file. Tên và tham số tùy phiên bản; tra tài liệu của bản bạn dùng.

Để gỡ lỗi, in ra ListingWindow là cách nhanh nhất. Với C#, bạn có thể gắn Visual Studio vào tiến trình ugraf.exe.

Những lỗi người mới hay mắc

  1. Quên dòng lw.Open(): không thấy gì in ra.
  2. Nhầm Work Part với Display Part trong assembly.
  3. Dùng Tag thay vì đối tượng: API hiện đại dùng đối tượng, đừng tìm tag.
  4. Không kiểm tra None/null: nếu không có chi tiết mở, Parts.Work là rỗng.
  5. Dùng mã ghi nguyên văn có chứa đường dẫn cố định, tên feature cố định. Hãy thay bằng biến.
  6. Không dùng Undo Mark: khi chương trình sửa model, hãy đặt Undo Mark trước và hoàn tác nếu lỗi.

Một vài lời khuyên từ kinh nghiệm

  • Giữ chương trình nhỏ, một việc một file.
  • Tách phần lõi (hàm thuần) khỏi phần giao diện để dễ thử.
  • Ghi nhật ký (log) vào file, không chỉ vào Listing Window.
  • Đặt phiên bản và ghi chú vào đầu file: tác giả, ngày, phiên bản NX đã thử.
  • Với việc ảnh hưởng dữ liệu (đổi tên, xóa), chạy thử trên bản sao trước.

Kết luận

NX Open không đòi hỏi bạn là lập trình viên chuyên nghiệp. Bắt đầu từ ghi journal, đọc, cô đọng, rồi lặp lại, bạn sẽ có bộ công cụ nhỏ mà cả nhóm dùng. Việc mất một buổi chiều để viết có thể tiết kiệm hàng chục giờ mỗi năm.

Lưu ý: tên lớp, tên phương thức và đường dẫn menu có thể thay đổi giữa các phiên bản NX. Hãy xem tài liệu API (NX Open Reference) đi kèm bản cài đặt của bạn.

Tài liệu tham khảo

Chia sẻ:FacebookXLinkedIn

Bình luận (0)

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.

    Đăng nhập để bình luận.

    Bài viết liên quan