NX Lab

Ẩn và hiện hàng loạt theo loại đối tượng bằng HideByType / ShowByType (datum, sketch, đường)

#Python#Hiển thị1 lượt xem

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

    Câu hỏi ·

    Mô hình lâu năm đầy datum, sketch và đường phụ che mất vật thể. Một dòng lệnh ẩn tất cả đối tượng thuộc một loại giúp màn hình gọn trước khi chụp ảnh hay in.

    Ẩn và hiện hàng loạt theo loại đối tượng… Ẩn và hiện hàng loạt theo loại đối tượng…

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

    1. Chọn loại cần ẩn. ShowHideType.Sketches, Datums, Curves, Points, Csys...
    2. Chọn phạm vi. ShowHideScope.AnyInAssembly hoặc WorkPartAndOccurrence.
    3. Gọi HideByType. Trả về số đối tượng bị ẩn.
    4. Chụp hoặc in. Làm việc cần thiết khi đã gọn.
    5. Gọi ShowByType. Hiện lại như cũ.

    Code tham khảo (Python)

    import NXOpen
    
    KIEU = NXOpen.DisplayManager.ShowHideType
    PHAM_VI = NXOpen.DisplayManager.ShowHideScope
    
    LOAI_PHU = [KIEU.Sketches, KIEU.Datums, KIEU.Curves, KIEU.Points, KIEU.Csys]
    
    def an_loai_phu(session):
        tong = 0
        for loai in LOAI_PHU:
            n = session.DisplayManager.HideByType(loai, PHAM_VI.AnyInAssembly)
            tong += n
        return tong
    
    def hien_loai_phu(session):
        tong = 0
        for loai in LOAI_PHU:
            tong += session.DisplayManager.ShowByType(loai, PHAM_VI.AnyInAssembly)
        return tong
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        if session.Parts.Work is None:
            return
        da_an = an_loai_phu(session)
        lw.WriteLine("Đã ẩn %d đối tượng phụ" % da_an)
        # ... chụp ảnh hoặc in ở đây ...
        da_hien = hien_loai_phu(session)
        lw.WriteLine("Đã hiện lại %d đối tượng" % da_hien)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Enum ShowHideType rất dài (hơn 150 giá trị) gồm cả bản vẽ, PMI, CAE; chỉ dùng vài giá trị liên quan mô hình.
    • Hàm trả về số đối tượng bị tác động, dùng để báo cáo hoặc kiểm tra.
    • ShowByType hiện lại cả những đối tượng người dùng cố ý ẩn trước đó; lưu danh sách đối tượng đã ẩn nếu cần khôi phục chính xác.

    Lỗi thường gặp

    • Hiện lại theo loại có thể làm hiện luôn các đối tượng đã ẩn từ trước; dùng BlankObjects/UnblankObjects với danh sách cụ thể để chính xác hơn.
    • Phạm vi AnyInAssembly tác động cả component; chọn WorkPartAndOccurrence để chỉ ảnh hưởng part hiện tại.

    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.