
Lập bảng lỗ khoan (hole table) từ mô hình: gom theo đường kính, đếm số lượng, vị trí tâm gần đúng
#Python#Gia công#CSV1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Bảng lỗ gồm đường kính, số lượng và vị trí là tài liệu đi kèm bản vẽ gia công. Từ các cạnh tròn khép kín trong mô hình, gom theo đường kính và xuất bảng CSV.
Lập bảng lỗ khoan (hole table) từ mô hìnhCác bước thực hiện
- Tìm cạnh tròn khép kín. Chu vi chia pi cho đường kính.
- Gom theo đường kính. Làm tròn 0.01 mm.
- Ghép hai cạnh của lỗ thông. Cạnh có cùng đường kính và cùng trục.
- Xuất bảng. Đường kính, số cạnh, ví dụ vị trí.
- Ghi CSV. UTF-8 có BOM.
Code tham khảo (Python)
import csv import math import os from collections import defaultdict import NXOpen def canh_tron_kin(body): for e in body.GetEdges(): if e.SolidEdgeType != NXOpen.Edge.EdgeType.Circular: continue a, b = e.GetVertices() if abs(a.X - b.X) + abs(a.Y - b.Y) + abs(a.Z - b.Z) < 1e-4: yield e, a def bang_lo(body): nhom = defaultdict(list) for e, diem in canh_tron_kin(body): duong_kinh = round(e.GetLength() / math.pi, 2) nhom[duong_kinh].append((round(diem.X, 2), round(diem.Y, 2), round(diem.Z, 2))) return nhom def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work solids = [b for b in part.Bodies if b.IsSolidBody] if part else [] if not solids: lw.WriteLine("Không có body đặc") return nhom = bang_lo(solids[0]) ra = "D:/NXLab_xuat/bang_lo_%s.csv" % part.Leaf os.makedirs(os.path.dirname(ra), exist_ok=True) with open(ra, "w", newline="", encoding="utf-8-sig") as f: w = csv.writer(f) w.writerow(["Duong_kinh", "So_canh_tron", "Vi_tri_vi_du_X", "Y", "Z"]) for d in sorted(nhom): vt = nhom[d][0] w.writerow(["%.2f" % d, len(nhom[d]), vt[0], vt[1], vt[2]]) lw.WriteLine("Ø%.2f : %d cạnh tròn" % (d, len(nhom[d]))) lw.WriteLine("Đã ghi: " + ra) if __name__ == "__main__": main()Giải thích code
- Điểm lấy được là một điểm trên vòng tròn, không phải tâm; tâm cần tính thêm từ nhiều điểm hoặc từ mặt trụ.
- Lỗ thông có hai cạnh tròn (hai đầu) nên 'số cạnh tròn' gấp đôi số lỗ.
- Bảng này là điểm xuất phát để lập bảng lỗ hoàn chỉnh trong bản vẽ.
Lỗi thường gặp
- Lỗ bậc, lỗ côn và ren cho nhiều cạnh tròn với đường kính khác nhau; cần phân loại theo mặt trụ để biết đó là một lỗ.
- Trục tròn (mặt trụ lồi) cũng cho cạnh tròn; phân biệt lỗ và trục bằng chiều pháp tuyến mặt trụ.
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.