
Đọc và đặt WCS (hệ tọa độ làm việc): gốc, hướng và lưu thành Csys
#Python#WCS1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
WCS quyết định nhiều thao tác: mặt phẳng vẽ mặc định, hướng nhập vectơ. Script nên đọc WCS trước khi làm việc và trả lại nguyên trạng sau khi xong.
Đọc và đặt WCS (hệ tọa độ làm việc)Các bước thực hiện
- Đọc gốc WCS. part.WCS.Origin cho Point3d.
- Lưu trạng thái. Lưu gốc và hướng cũ để khôi phục sau.
- Đặt WCS mới. SetOriginAndMatrix(origin, matrix).
- Quay WCS. Rotate quanh trục theo góc radian.
- Khôi phục. Đưa WCS về giá trị cũ trong finally.
Code tham khảo (Python)
import math import NXOpen def luu_wcs(part): wcs = part.WCS return wcs.Origin, wcs.CoordinateSystem.Orientation.Element def khoi_phuc_wcs(part, goc, huong): part.WCS.SetOriginAndMatrix(goc, huong) def dat_wcs_tai(part, x, y, z): huong = part.WCS.CoordinateSystem.Orientation.Element part.WCS.SetOriginAndMatrix(NXOpen.Point3d(x, y, z), huong) def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return goc, huong = luu_wcs(part) lw.WriteLine("WCS cũ: (%.2f, %.2f, %.2f)" % (goc.X, goc.Y, goc.Z)) try: dat_wcs_tai(part, 50.0, 25.0, 0.0) o = part.WCS.Origin lw.WriteLine("WCS mới: (%.2f, %.2f, %.2f)" % (o.X, o.Y, o.Z)) # Quay WCS 90 độ quanh trục Z: dùng trục của hệ tọa độ tuyệt đối truc_z = part.Axes.CreateAxis(NXOpen.Point3d(0, 0, 0), NXOpen.Vector3d(0, 0, 1), NXOpen.SmartObject.UpdateOption.WithinModeling) part.WCS.Rotate(truc_z, math.radians(90.0)) finally: khoi_phuc_wcs(part, goc, huong) lw.WriteLine("Đã khôi phục WCS") if __name__ == "__main__": main()Giải thích code
WCS.CoordinateSystem.Orientation.ElementlàMatrix3x3hiện hành của WCS.- Khôi phục trong
finallyđảm bảo người dùng không bị đổi WCS ngoài ý muốn. Rotatenhận mộtAxisvà góc radian.
Lỗi thường gặp
- Trục tạo bằng
Axes.CreateAxislà đối tượng thông minh nằm trong part; không dùng thì có thể xóa. - WCS không lưu trong undo của vài thao tác; luôn tự lưu và trả lại.
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.