NX Lab

Tạo part mới từ template bằng FileNew builder (đơn vị, tên file, hiển thị)

#Python#Part3 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    Tạo file mới bằng script giúp mọi bản vẽ trong công ty có cùng template, cùng đơn vị. Công cụ là FileNew builder với vài thuộc tính cần đặt đúng.

    Tạo part mới từ template bằng FileNew… Tạo part mới từ template bằng FileNew…

    Chuẩn bị

    • Biết tên template trong NX của bạn (ví dụ Model, Assembly) và đơn vị mặc định (mm).

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

    1. Tạo builder. session.Parts.FileNew() trả về FileNew.
    2. Đặt template. Gán TemplateFileName và ApplicationName cho đúng với template.
    3. Đặt đơn vị và tên. Units, NewFileName; MakeDisplayedPart để hiển thị luôn.
    4. Commit. Gọi Commit() rồi Destroy().
    5. Lấy part mới. session.Parts.Work lúc này chính là part vừa tạo.

    Code tham khảo (Python)

    import os
    import NXOpen
    
    def tao_part_moi(duong_dan, template="Model", don_vi=None):
        session = NXOpen.Session.GetSession()
        os.makedirs(os.path.dirname(duong_dan), exist_ok=True)
        if don_vi is None:
            don_vi = NXOpen.Part.Units.Millimeters
    
        builder = session.Parts.FileNew()
        try:
            builder.TemplateFileName = template        # tên template, tùy cấu hình site
            builder.ApplicationName = "ModelTemplate"  # ứng dụng gắn với template
            builder.Units = don_vi
            builder.NewFileName = duong_dan
            builder.MakeDisplayedPart = True
            builder.Commit()
        finally:
            builder.Destroy()
        return session.Parts.Work
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        try:
            part = tao_part_moi("D:/Du_an/moi/chi_tiet_001.prt")
            lw.WriteLine("Đã tạo: " + part.FullPath)
        except NXOpen.NXException as ex:
            lw.WriteLine("Không tạo được part: " + ex.Message)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • TemplateFileName và ApplicationName phải khớp một template có thật trong thư mục template của site; sai là báo lỗi.
    • NXOpen.Part.Units.Millimeters / Inches chọn đơn vị gốc của part.
    • MakeDisplayedPart = True làm part mới trở thành Display Part.

    Lỗi thường gặp

    • Tên template tiếng Việt hoặc đã đổi tên trong site sẽ làm script lỗi; liệt kê template thực tế trong hộp thoại File > New để chép đúng.
    • Tên file đã tồn tại sẽ gây lỗi; kiểm tra bằng os.path.exists trướ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.