NX Lab

Tạo sheet bản vẽ mới khổ A3 bằng DrawingSheetCollection.InsertSheet

#Python#Drafting1 lượt xem

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

    Câu hỏi ·

    Bản vẽ bắt đầu từ sheet. Script có thể tạo sheet đúng khổ giấy, tỉ lệ và góc chiếu theo chuẩn công ty, thay vì mỗi người tự chọn một kiểu.

    Tạo sheet bản vẽ mới khổ A3 bằng… Tạo sheet bản vẽ mới khổ A3 bằng…

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

    1. Vào ứng dụng Drafting. Sheet chỉ tạo được khi part có chế độ bản vẽ; code dùng session.ApplicationSwitchImmediate.
    2. Chọn đơn vị. Unit milimét từ UnitCollection.
    3. Đặt khổ giấy. A3 là 420 x 297 mm.
    4. Gọi InsertSheet. Tên sheet, đơn vị, rộng, cao, tỉ lệ (tử số/mẫu số), góc chiếu.
    5. Kiểm tra. Đọc lại Length, Height, ProjectionAngle.

    Code tham khảo (Python)

    import NXOpen
    
    KHO_GIAY = {"A4": (297.0, 210.0), "A3": (420.0, 297.0), "A2": (594.0, 420.0), "A1": (841.0, 594.0)}
    
    def tao_sheet(part, ten, kho="A3", tu_so=1.0, mau_so=1.0, goc_thu_ba=False):
        rong, cao = KHO_GIAY[kho]
        mm = part.UnitCollection.FindObject("MilliMeter")
        goc = (NXOpen.Drawings.DrawingSheet.ProjectionAngleType.ThirdAngle if goc_thu_ba
               else NXOpen.Drawings.DrawingSheet.ProjectionAngleType.FirstAngle)
        return part.DrawingSheets.InsertSheet(ten, mm, rong, cao, tu_so, mau_so, goc)
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
        session.ApplicationSwitchImmediate("UG_APP_DRAFTING")
        session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Tao sheet")
        try:
            sheet = tao_sheet(part, "SHEET_A3_01", "A3", 1.0, 2.0, goc_thu_ba=False)
            lw.WriteLine("Đã tạo sheet %s: %.0f x %.0f mm, góc chiếu %s" % (
                sheet.Name, sheet.Length, sheet.Height, sheet.ProjectionAngle))
        except NXOpen.NXException as ex:
            lw.WriteLine("Không tạo được sheet (tên trùng?): " + ex.Message)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • Chiều rộng của A3 là 420 mm và chiều cao 297 mm; bảng KHO_GIAY giúp đổi khổ giấy bằng tên.
    • Tỉ lệ viết bằng tử số và mẫu số: 1.0, 2.0 nghĩa là tỉ lệ 1:2.
    • Tiêu chuẩn Việt Nam và châu Âu thường dùng góc chiếu thứ nhất, Mỹ dùng góc thứ ba.

    Lỗi thường gặp

    • Tên sheet trùng với sheet có sẵn gây NXException; kiểm tra bằng part.DrawingSheets.FindObject trước.
    • Chuỗi tên ứng dụng (UG_APP_DRAFTING) cần đúng chính tả; nếu đã ở Drafting thì có thể bỏ dòng này.

    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.