NX Lab

Xuất STL để in 3D bằng STLCreator: dung sai cung (chordal) và dạng nhị phân/văn bản

#Python#STL#Xuất file1 lượt xem

  1. Quản trị viênQuản trị· 0 điểm

    Câu hỏi ·

    In 3D và nhiều máy cắt cần STL. Chất lượng lưới STL quyết định bởi dung sai chordal và angular; dung sai nhỏ cho bề mặt mịn nhưng file lớn.

    Xuất STL để in 3D bằng STLCreator Xuất STL để in 3D bằng STLCreator

    Các bước thực hiện

    1. Tạo STLCreator. session.DexManager.CreateStlCreator().
    2. Chọn dạng file. OutputType nhị phân hoặc văn bản.
    3. Đặt dung sai. ChordalTol và AngularTol.
    4. Chọn body xuất. ExportSelectionBlock.SelectObjects(bodies).
    5. Commit và hủy. Commit() rồi Destroy().

    Code tham khảo (Python)

    import os
    import NXOpen
    
    def xuat_stl(session, bodies, duong_dan, dung_sai_cung=0.02, dung_sai_goc=5.0, nhi_phan=True):
        os.makedirs(os.path.dirname(duong_dan), exist_ok=True)
        c = session.DexManager.CreateStlCreator()
        try:
            c.OutputFile = duong_dan
            c.OutputType = (NXOpen.STLCreator.OutputTypeEnum.Binary if nhi_phan
                            else NXOpen.STLCreator.OutputTypeEnum.Text)
            c.ChordalTol = dung_sai_cung
            c.AngularTol = dung_sai_goc
            c.AutoNormalGen = True
            c.ExportSelectionBlock.SelectObjects(bodies)
            c.Commit()
        finally:
            c.Destroy()
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        bodies = [b for b in part.Bodies if b.IsSolidBody] if part else []
        if not bodies:
            lw.WriteLine("Không có body đặc để xuất")
            return
        ra = "D:/NXLab_xuat/%s.stl" % part.Leaf
        try:
            xuat_stl(session, bodies, ra)
            lw.WriteLine("Đã xuất STL (%d KB): %s" % (os.path.getsize(ra) // 1024, ra))
        except Exception as ex:
            lw.WriteLine("Lỗi xuất STL: %s" % ex)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • ChordalTol là sai lệch tối đa giữa bề mặt thật và tam giác (mm); giảm giá trị để mịn hơn.
    • STL nhị phân nhỏ gọn hơn STL văn bản nhiều lần nên là mặc định hợp lý.
    • SelectObjects nhận danh sách body; đưa nhiều body thì xuất chung một file.

    Lỗi thường gặp

    • Tên enum OutputTypeEnum có thể khác chữ ở vài phiên bản; kiểm tra bằng dir() trên máy bạn.
    • STL không lưu đơn vị; hãy thống nhất mm khi gửi cho xưởng in.

    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.