
Dựng bu lông lục giác M6–M16 từ bảng kích thước tiêu chuẩn bằng Extrude đầu và thân trụ
#Python#Tham số#Bu lông1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Thư viện bu lông riêng của công ty có thể được dựng bằng script từ một bảng kích thước chuẩn: đường kính ren, chiều cao đầu, kích thước cờ lê. Ví dụ dưới dựng mô hình đơn giản (không có ren) để dùng cho lắp ráp.
Dựng bu lông lục giác M6–M16 từ bảng kích…Các bước thực hiện
- Bảng kích thước. d, k (chiều cao đầu), s (cờ lê) theo M.
- Dựng thân trụ. Cylinder Ø d, dài L.
- Dựng đầu lục giác. Sáu đường nối thành lục giác, Extrude k.
- Gộp. Unite hai khối.
- Đặt tên và lưu. BULONG_M8x30.prt.
Code tham khảo (Python)
import math import NXOpen BOOL = NXOpen.GeometricUtilities.BooleanOperation.BooleanType BANG_M = { # M: (k đầu cao, s cờ lê) theo bảng bu lông lục giác thông dụng (mm) 6: (4.0, 10.0), 8: (5.3, 13.0), 10: (6.4, 16.0), 12: (7.5, 18.0), 16: (10.0, 24.0), } def luc_giac(part, s, z): """Lục giác đều có khoảng cách hai cạnh song song = s, tâm tại (0, 0, z).""" r = s / math.sqrt(3.0) # bán kính ngoại tiếp diem = [(r * math.cos(math.radians(60 * i)), r * math.sin(math.radians(60 * i))) for i in range(6)] return [part.Curves.CreateLine(NXOpen.Point3d(*diem[i], z), NXOpen.Point3d(*diem[(i + 1) % 6], z)) for i in range(6)] def extrude_len(part, duong, cao, z0): b = part.Features.CreateExtrudeBuilder(NXOpen.Features.Feature.Null) try: sec = part.Sections.CreateSection(0.0095, 0.01, 0.5) b.Section = sec rule = part.ScRuleFactory.CreateRuleCurveDumb(duong) sec.AddToSection([rule], duong[0], NXOpen.NXObject.Null, NXOpen.NXObject.Null, NXOpen.Point3d(0, 0, z0), NXOpen.Section.Mode.Create, False) b.Direction = part.Directions.CreateDirection(NXOpen.Point3d(0, 0, z0), NXOpen.Vector3d(0, 0, 1), NXOpen.SmartObject.UpdateOption.WithinModeling) b.Limits.StartExtend.Value.RightHandSide = "0" b.Limits.EndExtend.Value.RightHandSide = str(cao) b.BooleanOperation.Type = BOOL.Create return b.CommitFeature() finally: b.Destroy() def than_tru(part, d, dai): b = part.Features.CreateCylinderBuilder(NXOpen.Features.Feature.Null) try: b.Type = NXOpen.Features.CylinderBuilder.Types.AxisDiameterAndHeight b.Origin = NXOpen.Point3d(0, 0, -dai) b.Direction = NXOpen.Vector3d(0, 0, 1) b.Diameter.RightHandSide = str(d) b.Height.RightHandSide = str(dai) b.BooleanOption.Type = BOOL.Create return b.CommitFeature() finally: b.Destroy() def dung_bu_long(part, m, dai): k, s = BANG_M[m] dau = extrude_len(part, luc_giac(part, s, 0.0), k, 0.0) thanh = than_tru(part, m, dai) return dau, thanh 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, "Bu long") dau, thanh = dung_bu_long(part, 8, 30.0) lw.WriteLine("Đã dựng đầu và thân bu lông M8x30: %s, %s" % (dau.GetFeatureName(), thanh.GetFeatureName())) lw.WriteLine("Bước tiếp theo: dùng Unite (xem bài Boolean) để gộp hai khối, đặt tên BULONG_M8x30.") if __name__ == "__main__": main()Giải thích code
- Lục giác đều có khoảng cách hai cạnh song song
sthì bán kính ngoại tiếp bằngs / sqrt(3). - Bảng kích thước trong ví dụ là các giá trị thông dụng cho bu lông lục giác hệ mét; hãy đối chiếu tiêu chuẩn (ISO 4014/4017, DIN 931/933) của công ty.
- Mô hình không có ren, đủ để lắp ráp và tính khối lượng gần đúng.
Lỗi thường gặp
- Bu lông thật cần ren hoặc chú thích ren; mô hình đơn giản không dùng để gia công.
- Thân dựng từ độ cao âm đến 0 (hướng +Z) để đầu nằm trên; đổi hướng nếu quy ước công ty khác.
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.