NX Lab

Thêm view chính (Base View) và view chiếu (Projected View) vào sheet bằng code

#Python#Drafting1 lượt xem

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

    Câu hỏi ·

    Dựng bộ ba hình chiếu tự động là ứng dụng kinh điển của NX Open. Bộ sưu tập view trên sheet có hàm tạo base view và projected view rất gọn.

    Thêm view chính (Base View) và view chiếu… Thêm view chính (Base View) và view chiếu…

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

    1. Chọn sheet. Sheet hiện hành hoặc theo tên.
    2. Chọn khung nhìn mô hình. ModelingViews.FindObject("FRONT").
    3. Tạo base view. sheet.SheetDraftingViews.CreateBaseView(...).
    4. Tạo view chiếu. CreateProjectedView(view cha, điểm đặt).
    5. Cập nhật. Chạy Update views nếu cần.

    Code tham khảo (Python)

    import NXOpen
    
    def tao_bo_ba_hinh(part, sheet, ti_le=0.5):
        mv = part.ModelingViews
        front = mv.FindObject("FRONT")
        views = sheet.SheetDraftingViews
        cx, cy = sheet.Length * 0.35, sheet.Height * 0.5
        base = views.CreateBaseView(front, NXOpen.Point3d(cx, cy, 0.0), ti_le, False)
        # Hình chiếu đứng (nhìn từ trên) đặt phía trên, hình chiếu cạnh đặt bên phải
        tren = views.CreateProjectedView(base, NXOpen.Point3d(cx, cy + sheet.Height * 0.3, 0.0))
        phai = views.CreateProjectedView(base, NXOpen.Point3d(cx + sheet.Length * 0.3, cy, 0.0))
        return base, tren, phai
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
        sheet = part.DrawingSheets.CurrentDrawingSheet
        if sheet is None:
            lw.WriteLine("Chưa có sheet hiện hành; hãy tạo hoặc kích hoạt một sheet")
            return
        session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Tao view")
        try:
            b, t, p = tao_bo_ba_hinh(part, sheet)
            lw.WriteLine("Đã tạo 3 view: %s, %s, %s" % (b.Name, t.Name, p.Name))
        except NXOpen.NXException as ex:
            lw.WriteLine("Lỗi tạo view: " + ex.Message)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Điểm đặt view là tọa độ tính từ góc dưới trái của sheet, theo đơn vị sheet.
    • Hình chiếu đặt lên trên hay sang phải do vị trí điểm đặt so với view cha quyết định; NX tự suy ra hướng chiếu.
    • inherit_clipping_boundary = False nghĩa là không dùng biên cắt của view gốc.

    Lỗi thường gặp

    • Tên khung nhìn mô hình (FRONT) phụ thuộc cấu hình ngôn ngữ và template; chỉnh cho khớp với part của bạn.
    • Tỉ lệ view khác tỉ lệ sheet là hợp lệ nhưng phải ghi chú trên bản vẽ theo tiêu chuẩ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.