
Đổ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
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…Các bước thực hiện
- Chọn màu. Màu là số nguyên chỉ số trong bảng màu NX (1-216).
- Đặt màu. obj.Color = chỉ số.
- Độ dày và kiểu nét. LineWidth, LineFont nhận giá trị enum.
- Ẩn đối tượng. session.DisplayManager.BlankObjects([obj]).
- 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.Lineslà 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
SetUndoMarktrướ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.