NX Lab

Session, Parts.Work và Parts.Display: khác nhau thế nào khi làm việc với assembly

#Python#Part2 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Rất nhiều lỗi 'tạo feature nhầm chi tiết' xuất phát từ việc không phân biệt Display Part và Work Part. Bài này giải thích hai khái niệm và đưa code in ra trạng thái hiện tại.

    Session, Parts.Work và Parts.Display Session, Parts.Work và Parts.Display

    Các bước thực hiện

    1. Hiểu Display Part. Là chi tiết đang được hiển thị trong cửa sổ đồ họa (thường là assembly cấp cao nhất).
    2. Hiểu Work Part. Là chi tiết nhận các thay đổi; khi Make Work Part trên một component thì Work Part khác Display Part.
    3. Đọc cả hai. So sánh đường dẫn của Parts.Work và Parts.Display.
    4. Liệt kê mọi part đang nạp. Duyệt session.Parts để thấy tất cả chi tiết trong bộ nhớ.
    5. Đặt Work Part. Dùng Parts.SetWork(part) để chuyển hướng thao tác sang part khác.

    Code tham khảo (Python)

    import NXOpen
    
    def mo_ta(part):
        if part is None:
            return "(không có)"
        return "%s  [%s]" % (part.Leaf, part.FullPath)
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
    
        lw.WriteLine("Display Part : " + mo_ta(session.Parts.Display))
        lw.WriteLine("Work Part    : " + mo_ta(session.Parts.Work))
        if session.Parts.Work is not session.Parts.Display:
            lw.WriteLine(">> Đang làm việc trên một component, KHÔNG phải assembly gốc.")
    
        lw.WriteLine("-- Tất cả part đang nạp --")
        for p in session.Parts:
            co_work = " (Work)" if p is session.Parts.Work else ""
            lw.WriteLine("  %s%s  đã sửa: %s" % (p.Leaf, co_work, p.IsModified))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • session.Parts duyệt được như danh sách; mỗi phần tử là NXOpen.BasePart (thường là Part).
    • p.IsModified cho biết part có thay đổi chưa lưu.
    • So sánh bằng is vì NX trả về cùng một đối tượng cho cùng một part.

    Lỗi thường gặp

    • Tạo feature bằng Parts.Display.Features khi Work Part là component sẽ tạo nhầm vào assembly.
    • Part ở chế độ nạp một phần (partially loaded) có thể chưa có đủ dữ liệu; gọi LoadFully() nếu cần.

    Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.

    Điểm: 0

Trả lời

Đăng nhập để tham gia thảo luận.