
Vẽ đường thẳng và hình chữ nhật bằng CurveCollection.CreateLine
#Python#Hình học1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Đường thẳng là cách nhanh nhất để thử một ý tưởng hình học. Bài này tạo đường thẳng đơn lẻ rồi ghép bốn đường thành hình chữ nhật có hàm dùng lại.
Vẽ đường thẳng và hình chữ nhật bằng…Các bước thực hiện
- Chuẩn bị hai điểm. Hai Point3d là điểm đầu và điểm cuối.
- Tạo đường. part.Curves.CreateLine(p1, p2) trả về Line.
- Ghép hình chữ nhật. Bốn đường nối đầu đuôi.
- Đọc thuộc tính. Line.StartPoint, Line.EndPoint cho tọa độ hai đầu.
- Trả danh sách. Trả về list để bước sau (extrude) dùng làm biên dạng.
Code tham khảo (Python)
import NXOpen def tao_duong(part, p1, p2): return part.Curves.CreateLine(NXOpen.Point3d(*p1), NXOpen.Point3d(*p2)) def tao_chu_nhat(part, x, y, rong, cao, z=0.0): """Hình chữ nhật trên mặt phẳng song song XY, góc dưới-trái tại (x, y).""" a = (x, y, z) b = (x + rong, y, z) c = (x + rong, y + cao, z) d = (x, y + cao, z) return [tao_duong(part, a, b), tao_duong(part, b, c), tao_duong(part, c, d), tao_duong(part, d, a)] def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return session.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Chu nhat") cac_duong = tao_chu_nhat(part, 0.0, 0.0, 80.0, 40.0) for i, ln in enumerate(cac_duong, 1): s, e = ln.StartPoint, ln.EndPoint lw.WriteLine("Cạnh %d: (%.1f, %.1f) -> (%.1f, %.1f)" % (i, s.X, s.Y, e.X, e.Y)) if __name__ == "__main__": main()Giải thích code
NXOpen.Point3d(*p1)giải nén tuple thành ba đối số.- Bốn cạnh được tạo đầu nối đuôi để chuỗi cạnh liên tục, thuận lợi cho thao tác tạo section sau này.
- Các đường tạo bằng
part.Curveslà đường không tham số (dumb); muốn tham số hóa hãy dùng Sketch.
Lỗi thường gặp
- Hai điểm trùng nhau gây NXException khi tạo đường.
- Đường rời rạc không có ràng buộc; nếu cần kích thước chỉnh sửa được, vẽ trong Sketch (bài sau).
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.