
Liệt kê dao trong Machine Tool View: tên, loại dao, đường kính và số dao (T) cho từng dao
#Python#CAM#Dao1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Bảng dao cần cho kho dụng cụ và người vận hành máy. Dao nằm ở Machine Tool View; mỗi dao có tên, loại, đường kính, chiều dài và số hiệu dao, đọc được qua MillToolBuilder.
Liệt kê dao trong Machine Tool ViewCác bước thực hiện
- Lấy nhóm gốc của Machine Tool View. GetRoot(View.MachineTool).
- Lọc dao. Đối tượng là NXOpen.CAM.Tool.
- Đọc loại dao. tool.GetTypeAndSubtype().
- Đọc kích thước. CreateMillToolBuilder(tool) rồi đọc TlDiameterBuilder.Value.
- Hủy builder. builder.Destroy() sau khi đọc.
Code tham khảo (Python)
import NXOpen import NXOpen.CAM def danh_sach_dao(setup): ket_qua, ngan_xep = [], [setup.GetRoot(NXOpen.CAM.CAMSetup.View.MachineTool)] while ngan_xep: nhom = ngan_xep.pop() for obj in nhom.GetMembers(): if setup.IsGroup(obj): ngan_xep.append(obj) elif isinstance(obj, NXOpen.CAM.Tool): ket_qua.append(obj) return ket_qua def doc_dao(setup, dao): loai, loai_con = dao.GetTypeAndSubtype() b = setup.CAMGroupCollection.CreateMillToolBuilder(dao) try: return { "ten": dao.Name, "loai": str(loai).split(".")[-1], "loai_con": str(loai_con).split(".")[-1], "duong_kinh": b.TlDiameterBuilder.Value, "chieu_dai": b.TlHeightBuilder.Value, "so_dao": b.TlNumberBuilder.Value, } finally: b.Destroy() def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work setup = part.CAMSetup if part else None if setup is None: lw.WriteLine("Part chưa có CAM Setup") return lw.WriteLine("%-24s %-8s %-12s %-8s %-8s %s" % ("Tên dao", "Loại", "Loại con", "Ø", "Dài", "T")) for d in danh_sach_dao(setup): try: t = doc_dao(setup, d) lw.WriteLine("%-24s %-8s %-12s %-8.2f %-8.2f %s" % ( t["ten"][:24], t["loai"], t["loai_con"], t["duong_kinh"], t["chieu_dai"], int(t["so_dao"]))) except NXOpen.NXException as ex: lw.WriteLine("%-24s (không đọc được bằng MillToolBuilder: %s)" % (d.Name[:24], ex.Message)) if __name__ == "__main__": main()Giải thích code
- Builder tạm chỉ để đọc nên luôn
Destroy()trongfinallymà khôngCommit(). GetTypeAndSubtypecó hai tham số ra nên Python trả về tuple(loại, loại con).- Dao khoan, tiện, ren có builder khác (
CreateDrillToolBuilder,CreateTurningToolBuilder...); ví dụ này chỉ đọc dao phay.
Lỗi thường gặp
- Dao không phải dao phay làm
CreateMillToolBuilderbáo lỗi; code đã bắt lỗi để không dừng cả bảng. - Đơn vị đường kính theo đơn vị của part; kiểm tra khi part dùng inch.
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.