
Đọc hiểu một journal Python do NX ghi: cấu trúc 5 phần và cách dọn gọn
#Journal#Python5 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Journal do NX ghi ra là cách học NX Open nhanh nhất, nhưng file thô thường dài và khó đọc. Bài này chỉ ra 5 phần luôn có trong journal Python và cách tách lấy phần lõi để dùng lại.
Đọc hiểu một journal Python do NX ghiChuẩn bị
- Bật ghi journal: tab Developer (hoặc menu Tools > Journal) > Record, chọn ngôn ngữ Python.
- Làm một thao tác nhỏ (ví dụ vẽ một khối hộp) rồi bấm Stop.
Các bước thực hiện
- Mở file journal. Dùng Edit hoặc mở bằng trình soạn thảo bất kỳ; file có đuôi .py.
- Nhận diện phần đầu. Các dòng import, khai báo hàm main và lệnh lấy Session.
- Tìm khối builder. Mỗi thao tác tạo/sửa đối tượng đi qua một builder: Create...Builder, gán thuộc tính, Commit, Destroy.
- Xóa phần thừa. Bỏ các dòng markId, UndoMark, cài đặt hiển thị không liên quan.
- Bọc thành hàm. Gom phần lõi vào hàm có tham số để gọi lại nhiều lần.
Code tham khảo (Python)
# Bộ khung journal sau khi đã dọn gọn import NXOpen def tao_khoi_hop(chieu_dai, chieu_rong, chieu_cao): session = NXOpen.Session.GetSession() # (1) lấy Session work_part = session.Parts.Work # (2) chi tiết đang làm việc mark = session.SetUndoMark( NXOpen.Session.MarkVisibility.Visible, "Tao khoi hop") # (3) mốc hoàn tác builder = work_part.Features.CreateBlockFeatureBuilder(NXOpen.Features.Feature.Null) try: builder.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths builder.SetOriginAndLengths( # (4) tham số hình học NXOpen.Point3d(0.0, 0.0, 0.0), str(chieu_dai), str(chieu_rong), str(chieu_cao)) feature = builder.CommitFeature() # (5) tạo feature finally: builder.Destroy() # luôn hủy builder return feature if __name__ == "__main__": f = tao_khoi_hop(100, 50, 20) NXOpen.Session.GetSession().ListingWindow.Open() NXOpen.Session.GetSession().ListingWindow.WriteLine("Đã tạo: " + f.GetFeatureName())Giải thích code
Session.GetSession()là cửa vào duy nhất; mọi đối tượng khác đều đi ra từ đây.SetUndoMarkcho phép người dùng Ctrl+Z toàn bộ thao tác của script chỉ bằng một lần.CommitFeature()trả về Feature; cònCommit()trả về NXObject (dùng khi không cần kiểu Feature).Destroy()đặt trongfinallyđể builder luôn được giải phóng kể cả khi lỗi.
Lỗi thường gặp
- Chạy journal khi chưa có Work Part:
session.Parts.WorklàNone, dòng tiếp theo sẽ báo AttributeError. - Giữ nguyên tên biến kiểu
block1,point1khi đưa vào dự án thật sẽ rất khó bảo trì; đặt tên theo ý nghĩa. - Đừng xóa lệnh
Destroy()khi dọn journal: builder rò rỉ làm NX chậm dần.
Mở rộng
Bài tập: ghi journal tạo một lỗ (Hole) rồi tự tách thành hàm
tao_lo(x, y, duong_kinh).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.