NX Lab

Thêm component vào assembly bằng AddComponent: file, vị trí, ma trận và reference set

#Python#Assembly1 lượt xem

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

    Câu hỏi ·

    Dựng assembly từ danh sách file là yêu cầu thường gặp. AddComponent nhận đường dẫn part, tên reference set, tên component, điểm đặt và ma trận định hướng, rồi trả về component mới.

    Thêm component vào assembly bằng… Thêm component vào assembly bằng…

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

    1. Chuẩn bị assembly đích. Part đang là Work Part, đã lưu.
    2. Chuẩn bị điểm và ma trận. Point3d và Matrix3x3 đơn vị.
    3. Gọi AddComponent. Trả về tuple (component, load_status).
    4. Kiểm tra trạng thái nạp. load_status.NumberUnloadedParts.
    5. Báo kết quả. Tên component vừa thêm.

    Code tham khảo (Python)

    import os
    import NXOpen
    
    def ma_tran_don_vi():
        m = NXOpen.Matrix3x3()
        m.Xx, m.Xy, m.Xz = 1.0, 0.0, 0.0
        m.Yx, m.Yy, m.Yz = 0.0, 1.0, 0.0
        m.Zx, m.Zy, m.Zz = 0.0, 0.0, 1.0
        return m
    
    def them_component(assembly_part, duong_dan, ten, x, y, z, ref_set="Entire Part"):
        if not os.path.isfile(duong_dan):
            raise FileNotFoundError(duong_dan)
        comp, status = assembly_part.ComponentAssembly.AddComponent(
            duong_dan, ref_set, ten, NXOpen.Point3d(x, y, z), ma_tran_don_vi(), 1)
        try:
            if status.NumberUnloadedParts > 0:
                raise RuntimeError("Có %d part không nạp được khi thêm %s" % (status.NumberUnloadedParts, ten))
        finally:
            status.Dispose()
        return comp
    
    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, "Them component")
        try:
            c = them_component(part, "D:/Du_an/chi_tiet/bu_long_m8.prt", "BU_LONG_1", 0.0, 0.0, 0.0)
            lw.WriteLine("Đã thêm component: " + c.DisplayName)
        except Exception as ex:
            lw.WriteLine("Không thêm được: %s" % ex)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Tham số cuối 1 là layer; hàm trả (Component, PartLoadStatus) do tham số loadStatus là tham số ra.
    • Tên reference set mặc định Entire Part hiển thị toàn bộ chi tiết; các reference set tùy chỉnh dùng tên của riêng site.
    • Ma trận đơn vị đặt component theo hướng của assembly; thay ma trận để xoay.

    Lỗi thường gặp

    • Component thêm bằng cách này chưa có ràng buộc, chỉ nằm ở vị trí đặt; thêm constraint nếu cần chuyển động.
    • Đường dẫn hoặc tên file chứa dấu cách và tiếng Việt cần kiểm tra mã hóa; tránh khi triển khai máy chủ.

    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.