
Thêm hàng loạt component thành lưới: lắp 12 bu lông theo hàng và cột
#Python#Assembly1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Khi cần đặt nhiều bản sao cùng loại chi tiết (bu lông, đệm, chốt) theo lưới, vòng lặp AddComponent đơn giản và dễ hiểu hơn nhiều so với tạo pattern.
Thêm hàng loạt component thành lướiCác bước thực hiện
- Định nghĩa lưới. Số cột, số hàng, bước hai trục, điểm gốc.
- Đặt tên duy nhất. BU_LONG_01, BU_LONG_02...
- Gọi AddComponent trong vòng lặp. Mỗi lần một vị trí.
- Gom kết quả. Danh sách component.
- Bắt lỗi từng phần tử. Không để một lỗi dừng cả lưới.
Code tham khảo (Python)
import NXOpen def ma_tran_don_vi(): m = NXOpen.Matrix3x3() m.Xx, m.Xy, m.Xz = 1.0, 0.0, 0.0 m.Yx, m.Yy, m.Yz = 0.0, 1.0, 0.0 m.Zx, m.Zy, m.Zz = 0.0, 0.0, 1.0 return m def them_luoi(part, duong_dan, so_cot, so_hang, buoc_x, buoc_y, goc=(0.0, 0.0, 0.0), tien_to="BU_LONG"): ket_qua, loi = [], [] stt = 1 for i in range(so_cot): for j in range(so_hang): ten = "%s_%02d" % (tien_to, stt) p = NXOpen.Point3d(goc[0] + i * buoc_x, goc[1] + j * buoc_y, goc[2]) try: comp, st = part.ComponentAssembly.AddComponent(duong_dan, "Entire Part", ten, p, ma_tran_don_vi(), 1) st.Dispose() ket_qua.append(comp) except NXOpen.NXException as ex: loi.append("%s: %s" % (ten, ex.Message)) stt += 1 return ket_qua, loi 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, "Luoi bu long") ok, loi = them_luoi(part, "D:/Du_an/chi_tiet/bu_long_m8.prt", so_cot=4, so_hang=3, buoc_x=40.0, buoc_y=30.0) lw.WriteLine("Đã thêm %d component, lỗi %d" % (len(ok), len(loi))) for l in loi: lw.WriteLine(" LỖI " + l) if __name__ == "__main__": main()Giải thích code
- Hai vòng
forsinh 4×3 = 12 vị trí; thayso_cot,so_hangđể đổi quy mô. - Tên component có số thứ tự hai chữ số giúp sắp xếp đúng trong cây.
- Thêm nhiều bản cùng part chỉ nạp file một lần; các lần sau dùng lại bản trong bộ nhớ.
Lỗi thường gặp
- Thêm hàng trăm component trong một lệnh làm cây assembly chậm hẳn; cân nhắc
ComponentPatternkhi số lượng lớn. - Kiểm tra va chạm sau khi đặt: lưới không biết vị trí lỗ thật trên chi tiết.
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.