
Tô màu mặt theo loại hình học: phẳng, trụ, nón, cầu để kiểm tra đặc trưng nhanh
#Python#Hiển thị#Mặt1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Tô màu theo loại mặt giúp nhìn thấy ngay chi tiết có những bề mặt nào, và là cách kiểm tra trực quan kết quả nhận dạng đặc trưng.
Tô màu mặt theo loại hình họcCác bước thực hiện
- Định nghĩa bảng màu. Mỗi loại mặt một chỉ số màu.
- Duyệt mặt. Với mỗi mặt của body đặc.
- Gán màu. face.Color và RedisplayObject.
- In chú giải. Loại mặt và màu tương ứng.
- Khôi phục. Dùng Undo Mark để người dùng hoàn tác dễ dàng.
Code tham khảo (Python)
import NXOpen MAU = { "Planar": 211, # xanh "Cylindrical": 186, # đỏ "Conical": 6, # vàng "Spherical": 36, # xanh lục } MAU_KHAC = 31 def to_mau_theo_loai(body): dem = {} for f in body.GetFaces(): ten = str(f.SolidFaceType).split(".")[-1] f.Color = MAU.get(ten, MAU_KHAC) f.RedisplayObject() dem[ten] = dem.get(ten, 0) + 1 return dem 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, "To mau theo loai mat") for b in part.Bodies: if b.IsSolidBody: dem = to_mau_theo_loai(b) lw.WriteLine("Body %s: %s" % (b.JournalIdentifier, dem)) lw.WriteLine("Chú giải: " + ", ".join("%s=%d" % kv for kv in MAU.items())) if __name__ == "__main__": main()Giải thích code
str(f.SolidFaceType).split(".")[-1]lấy tên loại mặt dạng chuỗi để tra bảng màu.- Bảng màu NX gồm 216 màu; số trong code chỉ là gợi ý, hãy chỉnh theo bảng màu của site.
- Đặt Undo Mark để người dùng quay lại màu cũ bằng Ctrl+Z.
Lỗi thường gặp
- Màu đặt cho mặt là thay đổi thuộc tính hiển thị được lưu cùng file; hoàn tác trước khi lưu nếu không muốn giữ.
- Chi tiết có nhiều nghìn mặt tô màu chậm; chỉ tô khi kiểm tra.
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.