
Tròn xoay (Revolve) biên dạng quanh trục: tạo trục, bậc và puli đơn giản
#Python#Revolve1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Các chi tiết tròn xoay như trục bậc, puli, nắp đều làm từ Revolve. Bạn cần một biên dạng nửa mặt cắt kín và một trục quay.
Tròn xoay (Revolve) biên dạng quanh trụcCác bước thực hiện
- Vẽ nửa mặt cắt. Polyline kín nằm một phía trục.
- Tạo section. Giống Extrude, thêm các đường vào section.
- Tạo trục. part.Axes.CreateAxis(điểm, vectơ, tùy chọn).
- Đặt góc quay. Limits.StartExtend=0, EndExtend=360.
- Commit. CommitFeature.
Code tham khảo (Python)
import NXOpen def duong_kin(part, toa_do): """toa_do: danh sách (x, y) trên mặt phẳng XY, nối đầu cuối.""" ds = [] n = len(toa_do) for i in range(n): a, b = toa_do[i], toa_do[(i + 1) % n] ds.append(part.Curves.CreateLine(NXOpen.Point3d(a[0], a[1], 0), NXOpen.Point3d(b[0], b[1], 0))) return ds def quay_tron(part, duong, goc_do=360.0): builder = part.Features.CreateRevolveBuilder(NXOpen.Features.Feature.Null) try: section = part.Sections.CreateSection(0.0095, 0.01, 0.5) builder.Section = section rule = part.ScRuleFactory.CreateRuleCurveDumb(duong) section.AddToSection([rule], duong[0], NXOpen.NXObject.Null, NXOpen.NXObject.Null, NXOpen.Point3d(0, 0, 0), NXOpen.Section.Mode.Create, False) # Trục quay: trục X đi qua gốc tọa độ builder.Axis = part.Axes.CreateAxis(NXOpen.Point3d(0, 0, 0), NXOpen.Vector3d(1, 0, 0), NXOpen.SmartObject.UpdateOption.WithinModeling) builder.Limits.StartExtend.Value.RightHandSide = "0" builder.Limits.EndExtend.Value.RightHandSide = str(goc_do) return builder.CommitFeature() finally: builder.Destroy() 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, "Truc bac") # Nửa mặt cắt của trục có 3 đoạn: Ø20 dài 30, Ø30 dài 40, Ø20 dài 30 (bán kính 10, 15, 10) mat_cat = [(0, 0), (0, 10), (30, 10), (30, 15), (70, 15), (70, 10), (100, 10), (100, 0)] f = quay_tron(part, duong_kin(part, mat_cat)) lw.WriteLine("Đã tạo trục bậc: " + f.GetFeatureName()) if __name__ == "__main__": main()Giải thích code
- Biên dạng gồm cả đoạn nằm trên trục (
(100,0)về(0,0)) để chuỗi đường kín. EndExtendở đây là góc (độ), không phải chiều dài như Extrude.- Đổi
goc_dothành 180 để tạo nửa mặt tròn xoay.
Lỗi thường gặp
- Biên dạng cắt qua trục quay tạo hình tự cắt chính nó và bị NX từ chối.
- Nhớ bán kính chứ không phải đường kính khi nhập tọa độ biên dạng.
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.