
Đọc cây feature của part: tên, kiểu, trạng thái suppress, cha và con của từng feature
#Python#Feature1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Muốn sửa mô hình bằng code thì trước hết phải đọc được cây feature. Bài này duyệt toàn bộ feature, in kiểu, thời điểm tạo, trạng thái suppress và các feature cha-con.
Đọc cây feature của partCác bước thực hiện
- Duyệt part.Features. Mỗi phần tử là một Feature, theo thứ tự timestamp.
- Đọc định danh. GetFeatureName(), FeatureType và Timestamp.
- Đọc trạng thái. Suppressed cho biết feature đang bị suppress.
- Đọc quan hệ. GetParents() và GetChildren().
- Báo lỗi feature. GetFeatureErrorMessages() để phát hiện feature hỏng.
Code tham khảo (Python)
import NXOpen def mo_ta_feature(f): cha = [p.GetFeatureName() for p in f.GetParents()] con = [c.GetFeatureName() for c in f.GetChildren()] loi = list(f.GetFeatureErrorMessages()) return { "ten": f.GetFeatureName(), "kieu": f.FeatureType, "thoi_diem": f.Timestamp, "suppress": f.Suppressed, "cha": cha, "con": con, "loi": loi, } def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: lw.WriteLine("Chưa có part") return ds = [mo_ta_feature(f) for f in part.Features] lw.WriteLine("Part %s có %d feature" % (part.Leaf, len(ds))) lw.WriteLine("%-4s %-28s %-22s %-8s" % ("TS", "Tên", "Kiểu", "Suppress")) for d in ds: lw.WriteLine("%-4d %-28s %-22s %-8s" % (d["thoi_diem"], d["ten"][:28], d["kieu"][:22], d["suppress"])) if d["cha"]: lw.WriteLine(" cha: " + ", ".join(d["cha"])) if d["con"]: lw.WriteLine(" con: " + ", ".join(d["con"])) for m in d["loi"]: lw.WriteLine(" LỖI: " + m) if __name__ == "__main__": main()Giải thích code
f.FeatureTypelà chuỗi kiểu nhưBLOCK,EXTRUDE,SKETCH, nên rất tiện để lọc theo loại.Timestamplà số thứ tự trong cây; feature có timestamp nhỏ được tạo trước.GetParents()cho biết feature nào phải tồn tại trước; xóa cha sẽ ảnh hưởng con.
Lỗi thường gặp
- Cây có hàng nghìn feature làm bảng rất dài; thêm bộ lọc theo
FeatureType. - Một số feature nội bộ (
IsInternal) không hiển thị trong Part Navigator; bỏ qua khi báo cáo cho người dùng.
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.