
Tạo cung tròn và đường tròn: theo tâm-bán kính và theo ba điểm
#Python#Hình học1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
NX tạo cung tròn theo nhiều cách. Hai cách thông dụng nhất là tâm và bán kính cùng góc đầu cuối, hoặc đi qua ba điểm. Đường tròn là cung có góc quét 360 độ.
Tạo cung tròn và đường trònCác bước thực hiện
- Cung theo tâm. CreateArc(tâm, trục X, trục Y, bán kính, góc đầu, góc cuối) với góc tính bằng radian.
- Đường tròn. Đặt góc đầu 0 và góc cuối 2π.
- Cung theo ba điểm. CreateArc(điểm đầu, điểm giữa, điểm cuối, đảo nghiệm, cờ).
- Đổi độ sang radian. math.radians để dễ nhập góc.
- Kiểm tra bán kính. Arc.Radius và Arc.CenterPoint.
Code tham khảo (Python)
import math import NXOpen def tao_cung(part, tam, ban_kinh, goc_dau_do, goc_cuoi_do): return part.Curves.CreateArc( NXOpen.Point3d(*tam), NXOpen.Vector3d(1, 0, 0), NXOpen.Vector3d(0, 1, 0), # trục X, Y của mặt phẳng cung ban_kinh, math.radians(goc_dau_do), math.radians(goc_cuoi_do)) def tao_duong_tron(part, tam, ban_kinh): return tao_cung(part, tam, ban_kinh, 0.0, 360.0) def tao_cung_3_diem(part, p1, p2, p3): # Python trả về tuple (arc, startAndEndGotFlipped) vì tham số cuối là tham số ra arc, _flipped = part.Curves.CreateArc( NXOpen.Point3d(*p1), NXOpen.Point3d(*p2), NXOpen.Point3d(*p3), False) return arc def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return c1 = tao_duong_tron(part, (0, 0, 0), 25.0) c2 = tao_cung(part, (80, 0, 0), 20.0, 30.0, 150.0) c3 = tao_cung_3_diem(part, (0, 60, 0), (15, 75, 0), (40, 60, 0)) for ten, c in (("Tròn", c1), ("Cung tâm", c2), ("Cung 3 điểm", c3)): lw.WriteLine("%s: R=%.2f, tâm=(%.1f, %.1f)" % (ten, c.Radius, c.CenterPoint.X, c.CenterPoint.Y)) if __name__ == "__main__": main()Giải thích code
- Góc trong NX Open tính bằng radian; chuyển bằng
math.radians. - Hai vectơ đơn vị xác định mặt phẳng chứa cung; đổi chúng để vẽ trên mặt phẳng khác XY.
- Hàm ba điểm có tham số ra nên Python trả về tuple hai phần tử, cần giải nén.
Lỗi thường gặp
- Ba điểm thẳng hàng không tạo được cung và NX báo lỗi.
- Nhập góc bằng độ mà quên đổi sang radian: cung sẽ lệch hoàn toàn.
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.