
Tạo Sketch trên mặt phẳng XY bằng SketchInPlaceBuilder rồi vẽ hình chữ nhật
#Python#Sketch1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Sketch cho biên dạng có ràng buộc, chỉnh sửa được sau này. Với script, trình tự là: tạo sketch trên mặt phẳng, kích hoạt, thêm hình học, rồi thoát sketch.
Tạo Sketch trên mặt phẳng XY bằng…Các bước thực hiện
- Tạo mặt phẳng. part.Planes.CreatePlane(gốc, pháp tuyến, tùy chọn cập nhật).
- Tạo builder. part.Sketches.CreateSketchInPlaceBuilder2(Sketch.Null).
- Gán mặt phẳng và Commit. builder.PlaneReference = plane; sketch = builder.Commit().
- Kích hoạt và thêm hình. sketch.Activate(...); sketch.AddGeometry(curve).
- Thoát sketch. sketch.Deactivate(ViewReorient.FalseValue, UpdateLevel.Model).
Code tham khảo (Python)
import NXOpen def tao_sketch_xy(part, ten="SKT_CHU_NHAT"): builder = part.Sketches.CreateSketchInPlaceBuilder2(NXOpen.Sketch.Null) try: mat = part.Planes.CreatePlane(NXOpen.Point3d(0, 0, 0), NXOpen.Vector3d(0, 0, 1), NXOpen.SmartObject.UpdateOption.WithinModeling) builder.PlaneReference = mat sk = builder.Commit() finally: builder.Destroy() sk.SetName(ten) return sk def ve_chu_nhat_trong_sketch(part, sk, rong, cao): sk.Activate(NXOpen.Sketch.ViewReorient.FalseValue) try: a, b = NXOpen.Point3d(0, 0, 0), NXOpen.Point3d(rong, 0, 0) c, d = NXOpen.Point3d(rong, cao, 0), NXOpen.Point3d(0, cao, 0) for p, q in ((a, b), (b, c), (c, d), (d, a)): duong = part.Curves.CreateLine(p, q) sk.AddGeometry(duong, NXOpen.Sketch.InferConstraintsOption.InferCoincidentConstraints) finally: sk.Deactivate(NXOpen.Sketch.ViewReorient.FalseValue, NXOpen.Sketch.UpdateLevel.Model) 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, "Sketch") sk = tao_sketch_xy(part) ve_chu_nhat_trong_sketch(part, sk, 60.0, 30.0) lw.WriteLine("Sketch %s có %d đối tượng hình học" % (sk.Name, len(sk.GetAllGeometry()))) if __name__ == "__main__": main()Giải thích code
SketchInPlaceBuilderở NX 12 có nhiều thuộc tính; chỉ cần gánPlaneReferencecho trường hợp đơn giản.AddGeometryđưa đường có sẵn vào sketch và có thể tự suy ra ràng buộc trùng điểm.DeactivatevớiUpdateLevel.Modelcập nhật mô hình sau khi thoát sketch.
Lỗi thường gặp
- Quên
Deactivateđể sketch ở trạng thái đang soạn thảo; các lệnh sau có thể báo lỗi. - Tên sketch trùng nhau được NX tự thêm hậu tố; hãy đặt tên có ý nghĩa để tìm 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.