NX Lab

Đặt tên cho đối tượng (SetName) và tìm lại bằng tên: nền tảng của script ổn định

#Python#Đối tượng1 lượt xem

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

    Câu hỏi ·

    Script phụ thuộc vào thứ tự đối tượng sẽ hỏng khi mô hình thay đổi. Đặt tên có ý nghĩa cho các đối tượng quan trọng rồi tìm lại theo tên giúp script bền hơn nhiều.

    Đặt tên cho đối tượng (SetName) và tìm lại… Đặt tên cho đối tượng (SetName) và tìm lại…

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

    1. Đặt tên. obj.SetName("TEN") với đối tượng NXObject.
    2. Đọc tên. obj.Name.
    3. Quy ước tên. Tiền tố theo loại: MAT_, LO_, CHUAN_.
    4. Tìm theo tên. Duyệt các collection so sánh Name.
    5. Báo cáo thiếu. Cảnh báo nếu không tìm được tên bắt buộc.

    Code tham khảo (Python)

    import NXOpen
    
    def dat_ten(doi_tuong, ten):
        doi_tuong.SetName(ten)
    
    def tim_theo_ten(part, ten):
        for tap in (part.Bodies, part.Curves, part.Points, part.Sketches, part.Datums):
            for o in tap:
                try:
                    if o.Name == ten:
                        return o
                except Exception:
                    continue
        return None
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
        session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Dat ten")
        solids = [b for b in part.Bodies if b.IsSolidBody]
        if solids:
            dat_ten(solids[0], "BODY_CHINH")
            lw.WriteLine("Đã đặt tên: " + solids[0].Name)
    
        can_co = ["BODY_CHINH", "CHUAN_A"]
        for ten in can_co:
            o = tim_theo_ten(part, ten)
            lw.WriteLine("%-12s : %s" % (ten, "tìm thấy" if o else "KHÔNG THẤY"))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • SetName đặt tên hiển thị; Name đọc lại. Tên không bắt buộc duy nhất nên cần quy ước.
    • Duyệt nhiều collection vì NX không có một ô tìm kiếm đối tượng chung theo tên.
    • Khối try bọc đọc Name vì không phải đối tượng nào cũng hỗ trợ.

    Lỗi thường gặp

    • Tên chứa ký tự đặc biệt hoặc dấu tiếng Việt có thể gây rắc rối khi xuất sang định dạng khác; dùng chữ không dấu.
    • Hai đối tượng cùng tên làm hàm tìm trả về cái đầu tiên; bắt trùng khi đặt tê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.