NX Lab

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

  1. 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… Dựng bu lông lục giác M6–M16 từ bảng kích…

    Các bước thực hiện

    1. Bảng kích thước. d, k (chiều cao đầu), s (cờ lê) theo M.
    2. Dựng thân trụ. Cylinder Ø d, dài L.
    3. Dựng đầu lục giác. Sáu đường nối thành lục giác, Extrude k.
    4. Gộp. Unite hai khối.
    5. Đặ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 s thì bán kính ngoại tiếp bằng s / 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.