NX Lab

Tạo điểm bằng Point3d và PointCollection: một điểm, một hàng điểm, một lưới điểm

#Python#Hình học1 lượt xem

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

    Câu hỏi ·

    Điểm là đối tượng hình học đơn giản nhất và cũng là nền cho gần như mọi thao tác khác. Bài này tạo một điểm, rồi mở rộng thành hàng và lưới điểm có bước chỉnh được.

    Tạo điểm bằng Point3d và PointCollection Tạo điểm bằng Point3d và PointCollection

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

    1. Phân biệt Point3d và Point. Point3d chỉ là bộ ba số (cấu trúc dữ liệu); Point là đối tượng thật nằm trong part.
    2. Tạo điểm. part.Points.CreatePoint(Point3d) trả về Point; điểm xuất hiện trong mô hình.
    3. Lặp để tạo hàng. Dùng vòng for với bước cách đều.
    4. Lặp lồng nhau tạo lưới. Hai vòng for cho trục X và Y.
    5. Gom vào layer riêng. Giữ các điểm phụ ở layer khác để dễ ẩn.

    Code tham khảo (Python)

    import NXOpen
    
    def tao_diem(part, x, y, z):
        return part.Points.CreatePoint(NXOpen.Point3d(x, y, z))
    
    def tao_luoi(part, so_cot, so_hang, buoc_x, buoc_y, goc=(0.0, 0.0, 0.0)):
        diem = []
        for i in range(so_cot):
            for j in range(so_hang):
                diem.append(tao_diem(part, goc[0] + i * buoc_x, goc[1] + j * buoc_y, goc[2]))
        return diem
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            lw.WriteLine("Chưa có part")
            return
        mark = session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Luoi diem")
        luoi = tao_luoi(part, so_cot=5, so_hang=4, buoc_x=25.0, buoc_y=20.0)
        lw.WriteLine("Đã tạo %d điểm" % len(luoi))
        p = luoi[7]
        lw.WriteLine("Điểm #7: (%.1f, %.1f, %.1f)" % (p.Coordinates.X, p.Coordinates.Y, p.Coordinates.Z))
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • NXOpen.Point3d(x, y, z) là cấu trúc giá trị; đổi X, Y, Z được sau khi tạo.
    • CreatePoint(Point3d) tạo điểm không tham số hóa; muốn điểm gắn với biểu thức dùng overload nhận Expression.
    • p.Coordinates trả lại Point3d để đọc tọa độ.

    Lỗi thường gặp

    • Tọa độ luôn theo đơn vị của part (mm hoặc inch), không tự quy đổi.
    • Tạo hàng nghìn điểm trong một part làm cây mô hình nặng; xem xét dùng một spline hoặc pattern.

    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.