NX Lab

Layer bằng NX Open: đặt layer làm việc, chuyển đối tượng sang layer khác

#Python#Layer1 lượt xem

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

    Câu hỏi ·

    Layer giữ cho mô hình gọn: hình học phụ, kích thước, bề mặt tham chiếu mỗi loại một layer. Script nên tạo đối tượng ở layer đúng ngay từ đầu.

    Layer bằng NX Open Layer bằng NX Open

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

    1. Đọc layer làm việc. part.Layers.WorkLayer.
    2. Đặt layer làm việc. Gán WorkLayer = số layer (1-256).
    3. Đọc layer của đối tượng. obj.Layer.
    4. Chuyển layer. Gán obj.Layer hoặc dùng MoveDisplayableObjects.
    5. Bật/tắt hiển thị layer. Dùng ChangeStates với StateInfo.

    Code tham khảo (Python)

    import NXOpen
    
    LAYER_HINH = 1
    LAYER_PHU = 61
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
    
        lw.WriteLine("Layer làm việc hiện tại: %d" % part.Layers.WorkLayer)
        part.Layers.WorkLayer = LAYER_PHU          # từ giờ mọi đối tượng mới nằm ở layer 61
        diem = part.Points.CreatePoint(NXOpen.Point3d(0, 0, 0))
        lw.WriteLine("Điểm mới ở layer %d" % diem.Layer)
    
        part.Layers.WorkLayer = LAYER_HINH
        duong = part.Curves.CreateLine(NXOpen.Point3d(0, 0, 0), NXOpen.Point3d(50, 0, 0))
        lw.WriteLine("Đường mới ở layer %d" % duong.Layer)
    
        # Chuyển điểm sang layer hình và đổi hiển thị
        diem.Layer = LAYER_HINH
        lw.WriteLine("Sau khi chuyển, điểm ở layer %d" % diem.Layer)
    
        # Ẩn layer phụ rồi đọc lại trạng thái
        part.Layers.SetState(LAYER_PHU, NXOpen.Layer.State.Hidden)
        lw.WriteLine("Trạng thái layer %d: %s" % (LAYER_PHU, part.Layers.GetState(LAYER_PHU)))
        # Chuyển nhiều đối tượng cùng lúc
        part.Layers.MoveDisplayableObjects(LAYER_HINH, [duong])
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • WorkLayer quyết định layer cho mọi đối tượng sinh ra sau đó.
    • obj.Layer đọc/ghi được cho các đối tượng hiển thị (DisplayableObject).
    • SetState/GetState đặt và đọc trạng thái layer (Visible, Hidden, Selectable, WorkLayer); MoveDisplayableObjects chuyển cả danh sách đối tượng một lần.

    Lỗi thường gặp

    • Layer hợp lệ từ 1 đến 256; số ngoài khoảng gây lỗi.
    • Quên trả WorkLayer về giá trị ban đầu làm các thao tác thủ công sau đó tạo đối tượng ở layer lạ.

    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.