
Tạo vỏ mỏng (Shell) bằng ShellBuilder: bỏ mặt trên và đặt độ dày thành
#Python#Shell1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Vỏ hộp, nắp, thân bình đều bắt đầu từ khối đặc rồi khoét ruột bằng Shell. Bài này bỏ mặt trên và đặt độ dày thành 2 mm.
Tạo vỏ mỏng (Shell) bằng ShellBuilderCác bước thực hiện
- Tìm mặt cần bỏ. Mặt phẳng ở cao nhất.
- Tạo collector mặt. Rule FaceDumb từ danh sách mặt.
- Tạo ShellBuilder. CreateShellBuilder rồi gán Body, RemovedFacesCollector.
- Đặt độ dày. SetDefaultThickness("2").
- Commit. CommitFeature.
Code tham khảo (Python)
import NXOpen def mat_cao_nhat(body): """Mặt phẳng có các đỉnh cao nhất.""" tot, z_best = None, -1e18 for f in body.GetFaces(): if f.SolidFaceType != NXOpen.Face.FaceType.Planar: continue zs = [v.Z for e in f.GetEdges() for v in e.GetVertices()] if zs and min(zs) > z_best: z_best, tot = min(zs), f return tot def tao_vo(part, body, mat_bo, day): b = part.Features.CreateShellBuilder(NXOpen.Features.Feature.Null) try: thu_vien = part.ScCollectors.CreateCollector() thu_vien.ReplaceRules([part.ScRuleFactory.CreateRuleFaceDumb([mat_bo])], False) b.RemovedFacesCollector = thu_vien b.Body = body b.SetDefaultThickness(str(day)) 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 mat = mat_cao_nhat(solids[0]) if mat is None: lw.WriteLine("Không tìm được mặt phẳng để bỏ") return session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Shell") f = tao_vo(part, solids[0], mat, 2.0) lw.WriteLine("Đã tạo vỏ: " + f.GetFeatureName()) if __name__ == "__main__": main()Giải thích code
- Mặt 'cao nhất' được xác định bằng giá trị Z nhỏ nhất của các đỉnh trên mặt; mặt trên của hộp thỏa điều kiện.
RemovedFacesCollectorchứa mặt bị bỏ đi để lộ phần rỗng.SetDefaultThicknessnhận chuỗi; có thể truyền tên expression.
Lỗi thường gặp
- Độ dày lớn hơn một nửa kích thước nhỏ nhất của khối khiến vỏ tự cắt nhau.
- Khối có bo tròn nhỏ hơn độ dày thành sẽ khó tạo vỏ; bo sau khi shell hoặc dùng bán kính lớn hơn.
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.