
Gọi hàm UF từ Python: AskTypeAndSubtype và AskName để biết kiểu nội bộ của đối tượng
#Python#UF1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Một số thông tin chỉ lấy được qua lớp UF cũ. Python gọi UF qua UFSession; tham số ra của hàm UF được trả về dưới dạng tuple. Bài này dùng UF.Obj để biết kiểu, kiểu con và tên của đối tượng.
Gọi hàm UF từ PythonCác bước thực hiện
- Lấy UFSession. NXOpen.UF.UFSession.GetUFSession().
- Chọn module. ufs.Obj cho thông tin đối tượng chung.
- Gọi hàm. Truyền obj.Tag, nhận tuple (type, subtype).
- Lấy tên. ufs.Obj.AskName(tag).
- Gom thống kê. Đếm đối tượng theo (type, subtype).
Code tham khảo (Python)
from collections import Counter import NXOpen import NXOpen.UF def kieu_noi_bo(doi_tuong): ufs = NXOpen.UF.UFSession.GetUFSession() loai, loai_con = ufs.Obj.AskTypeAndSubtype(doi_tuong.Tag) return loai, loai_con def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return dem = Counter() for tap in (part.Points, part.Lines, part.Arcs, part.Splines, part.Bodies): for o in tap: try: dem[kieu_noi_bo(o)] += 1 except Exception as ex: lw.WriteLine("Không đọc được kiểu: %s" % ex) return lw.WriteLine("%-8s %-8s %s" % ("Type", "Subtype", "Số đối tượng")) for (t, st), n in sorted(dem.items()): lw.WriteLine("%-8d %-8d %d" % (t, st, n)) if __name__ == "__main__": main()Giải thích code
- Hàm
AskTypeAndSubtype(tag, out type, out subtype)được Python bọc thành hàm nhậntagvà trả về tuple hai phần tử. obj.Taglà số định danh nội bộ mà mọi hàm UF yêu cầu.- Số type, subtype tra cứu trong tài liệu
uf_object_types.hđi kèm NX Open (ví dụ 70 là solid body).
Lỗi thường gặp
- Quy tắc trả tham số ra (tuple) áp dụng cho tham số vô hướng; mảng ra của UF khác nhau giữa các bản, nên thử trên máy bạn.
- UF đang dần được thay bằng NX Open; chỉ dùng khi NX Open chưa có chức năng tương đươ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.