NX Lab

Liệt kê toàn bộ sheet bản vẽ: khổ giấy, tỉ lệ, góc chiếu, số view và cờ lỗi thời

#Python#Drafting1 lượt xem

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

    Câu hỏi ·

    Kiểm kê bản vẽ của một chi tiết hay cả thư mục là bước đầu của mọi quy trình kiểm tra: có mấy sheet, khổ nào, view có lỗi thời (out of date) không.

    Liệt kê toàn bộ sheet bản vẽ Liệt kê toàn bộ sheet bản vẽ

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

    1. Lấy tập sheet. part.DrawingSheets.ToArray() hoặc duyệt trực tiếp.
    2. Đọc kích thước. Length, Height, đơn vị.
    3. Đọc tỉ lệ. sheet.GetScale() trả về (tử số, mẫu số).
    4. Đếm view. len(sheet.GetDraftingViews()).
    5. Phát hiện lỗi thời. IsOutOfDate cho sheet và cho từng view.

    Code tham khảo (Python)

    import NXOpen
    
    def thong_tin_sheet(sheet):
        tu, mau = sheet.GetScale()
        views = sheet.GetDraftingViews()
        return {
            "ten": sheet.Name,
            "rong": sheet.Length,
            "cao": sheet.Height,
            "ti_le": "%g:%g" % (tu, mau),
            "goc": str(sheet.ProjectionAngle).split(".")[-1],
            "so_view": len(views),
            "loi_thoi": sheet.IsOutOfDate or any(v.IsOutOfDate for v in views),
        }
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
        sheets = part.DrawingSheets.ToArray()
        if not sheets:
            lw.WriteLine("Part chưa có sheet bản vẽ")
            return
        lw.WriteLine("%-16s %-12s %-8s %-12s %-6s %s" % ("Sheet", "Khổ (mm)", "Tỉ lệ", "Góc", "View", "Lỗi thời"))
        for s in sheets:
            d = thong_tin_sheet(s)
            lw.WriteLine("%-16s %-12s %-8s %-12s %-6d %s" % (
                d["ten"][:16], "%.0fx%.0f" % (d["rong"], d["cao"]), d["ti_le"], d["goc"], d["so_view"],
                "CÓ" if d["loi_thoi"] else "không"))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • GetScale() có hai tham số ra (tử số, mẫu số) nên Python trả về tuple.
    • IsOutOfDate cho biết view cần cập nhật lại sau khi mô hình thay đổi.
    • Định dạng %g hiển thị số gọn (1 thay vì 1.0).

    Lỗi thường gặp

    • Part chỉ chứa mô hình mà không có bản vẽ trả danh sách rỗng; không phải lỗi.
    • Đơn vị của sheet có thể là inch ở bản vẽ cũ; đọc sheet.Units nếu cần quy đổi.

    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.