NX Lab

Duyệt Geometry View: MCS, WORKPIECE và các thông số hình học của gia công

#Python#CAM1 lượt xem

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

    Câu hỏi ·

    Geometry View chứa các MCS (hệ tọa độ gia công), WORKPIECE (phôi, chi tiết) và hình học dùng chung. Kiểm tra cấu trúc này giúp phát hiện sớm MCS thiếu hay đặt sai.

    Duyệt Geometry View Duyệt Geometry View

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

    1. Lấy gốc Geometry View. GetRoot(View.Geometry).
    2. Duyệt đệ quy. Cây MCS_MILL > WORKPIECE > operation.
    3. Nhận diện MCS. Tên bắt đầu bằng MCS hoặc kiểu nhóm.
    4. Đếm operation theo MCS. Cho biết gia công bao nhiêu mặt gá.
    5. Báo cáo. Cảnh báo MCS không có operation.

    Code tham khảo (Python)

    import NXOpen
    import NXOpen.CAM
    
    def duyet_hinh_hoc(setup, nhom, lw, muc=0, thong_ke=None):
        thong_ke = thong_ke if thong_ke is not None else {}
        so_op_truc_tiep = 0
        for obj in nhom.GetMembers():
            if setup.IsOperation(obj):
                so_op_truc_tiep += 1
            elif setup.IsGroup(obj):
                lw.WriteLine("%s[%s]" % ("  " * muc, obj.Name))
                so_op_con = duyet_hinh_hoc(setup, obj, lw, muc + 1, thong_ke)
                thong_ke[obj.Name] = so_op_con
        return so_op_truc_tiep + sum(v for k, v in thong_ke.items() if False)
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        setup = part.CAMSetup if part else None
        if setup is None:
            lw.WriteLine("Part chưa có CAM Setup")
            return
        goc = setup.GetRoot(NXOpen.CAM.CAMSetup.View.Geometry)
        thong_ke = {}
        lw.WriteLine("=== Geometry View ===")
        duyet_hinh_hoc(setup, goc, lw, 0, thong_ke)
        mcs_rong = [ten for ten, n in thong_ke.items() if ten.upper().startswith("MCS") and n == 0]
        for ten in mcs_rong:
            lw.WriteLine("CẢNH BÁO: %s chưa có operation trực tiếp" % ten)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Mỗi nhóm báo số operation trực tiếp bên dưới nó; operation thường nằm trong WORKPIECE chứ không trực tiếp dưới MCS nên cảnh báo MCS rỗng chỉ mang tính gợi ý.
    • Dòng return cuối hàm giữ lại để minh họa cách gộp số liệu; bạn có thể rút gọn khi dùng thật.
    • Tên MCS/WORKPIECE do người lập trình CAM đặt; quy ước đặt tên giúp script nhận dạng đúng.

    Lỗi thường gặp

    • Muốn đọc tọa độ MCS cần dùng MCSMillBuilder/MCSBuilder; bài này chỉ duyệt cấu trúc.
    • Cây Geometry View khác với Program Order, một operation có thể xuất hiện ở cả hai nên đừng cộng dồn số liệu giữa các view.

    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.