
Khoan lỗ bằng Cylinder trừ vật liệu: cách ổn định cho lỗ trơn và lỗ hàng loạt
#Python#Hole1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Khi chỉ cần lỗ trơn hoặc lỗ giả lập cho test, tạo hình trụ rồi Subtract khỏi khối là cách đơn giản và ổn định giữa các phiên bản NX. Bài này khoan một hàng lỗ cách đều.
Khoan lỗ bằng Cylinder trừ vật liệuCác bước thực hiện
- Xác định mặt trên. Lấy độ cao Z lớn nhất của body.
- Tính vị trí lỗ. Hàng lỗ cách đều trên đường thẳng.
- Tạo hình trụ với Subtract. Cylinder builder, BooleanOption.Type = Subtract, đích là body.
- Lặp qua các vị trí. Mỗi lỗ là một feature.
- Tổng kết. In số lỗ đã khoan.
Code tham khảo (Python)
import NXOpen BOOL = NXOpen.GeometricUtilities.BooleanOperation.BooleanType def khoan_tru(part, body, x, y, z_mat, duong_kinh, do_sau): b = part.Features.CreateCylinderBuilder(NXOpen.Features.Feature.Null) try: b.Type = NXOpen.Features.CylinderBuilder.Types.AxisDiameterAndHeight b.Origin = NXOpen.Point3d(x, y, z_mat) b.Direction = NXOpen.Vector3d(0, 0, -1) # đi xuống từ mặt trên b.Diameter.RightHandSide = str(duong_kinh) b.Height.RightHandSide = str(do_sau) b.BooleanOption.Type = BOOL.Subtract b.BooleanOption.SetTargetBodies([body]) return b.CommitFeature() finally: b.Destroy() def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work solids = [x for x in part.Bodies if x.IsSolidBody] if not solids: lw.WriteLine("Không có khối đặc") return body = solids[0] z_mat = max(v.Z for e in body.GetEdges() for v in e.GetVertices()) session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Hang lo") n = 0 for i in range(4): khoan_tru(part, body, 10.0 + i * 12.0, 10.0, z_mat, 6.0, 8.0) n += 1 lw.WriteLine("Đã khoan %d lỗ Ø6 sâu 8" % n) if __name__ == "__main__": main()Giải thích code
- Hình trụ đặt gốc tại mặt trên và hướng xuống -Z, nên phần trụ nằm trong khối bị trừ đi.
SetTargetBodies([body])bảo đảm trụ chỉ trừ khỏi khối cần khoan.- Mỗi lỗ là một feature riêng; muốn gọn cây mô hình có thể gom bằng Pattern (bài sau).
Lỗi thường gặp
- Lỗ chạm ra ngoài biên khối hoặc chồng lên nhau tạo hình lạ; kiểm tra khoảng cách.
- Nếu
z_mattính nhầm (khối nghiêng), lỗ sẽ khoan ở độ cao sai.
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.