NX Lab

Đổi màu, kiểu nét và độ dày nét của đối tượng; ẩn/hiện đối tượng bằng DisplayManager

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

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

    Câu hỏi ·

    Tô màu theo loại, ẩn hình học phụ, làm nổi bật kết quả kiểm tra: các thao tác hiển thị rất hay dùng trong script kiểm tra mô hình.

    Đổi màu, kiểu nét và độ dày nét của đối… Đổi màu, kiểu nét và độ dày nét của đối…

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

    1. Chọn màu. Màu là số nguyên chỉ số trong bảng màu NX (1-216).
    2. Đặt màu. obj.Color = chỉ số.
    3. Độ dày và kiểu nét. LineWidth, LineFont nhận giá trị enum.
    4. Ẩn đối tượng. session.DisplayManager.BlankObjects([obj]).
    5. Hiện lại. UnblankObjects.

    Code tham khảo (Python)

    import NXOpen
    
    MAU_DO = 186
    MAU_XANH = 211
    
    def to_mau(doi_tuong, mau):
        doi_tuong.Color = mau
        doi_tuong.RedisplayObject()
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
    
        cac_duong = [ln for ln in part.Lines]
        lw.WriteLine("Có %d đường thẳng" % len(cac_duong))
        for ln in cac_duong:
            dai = ((ln.EndPoint.X - ln.StartPoint.X) ** 2 +
                   (ln.EndPoint.Y - ln.StartPoint.Y) ** 2 +
                   (ln.EndPoint.Z - ln.StartPoint.Z) ** 2) ** 0.5
            to_mau(ln, MAU_DO if dai > 50.0 else MAU_XANH)
            ln.LineWidth = NXOpen.DisplayableObject.ObjectWidth.Thick
    
        ngan = [ln for ln in cac_duong if ln.Color == MAU_XANH]
        if ngan:
            session.DisplayManager.BlankObjects(ngan)
            lw.WriteLine("Đã ẩn %d đường ngắn" % len(ngan))
            session.DisplayManager.UnblankObjects(ngan)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • RedisplayObject() vẽ lại đối tượng ngay để màu mới hiện lên.
    • Chỉ số màu 186 là đỏ, 211 là xanh trong bảng mặc định; có thể khác nếu site dùng bảng màu riêng.
    • part.Lines là tập các đường thẳng, duyệt như danh sách.

    Lỗi thường gặp

    • Đối tượng bị ẩn vẫn có trong mô hình; đừng nhầm ẩn với xóa.
    • Thay đổi màu không có Undo trên một số loại đối tượng; đặt SetUndoMark trước khi tô hàng loạt.

    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.