NX Lab

Xuất bản vẽ hoặc mô hình sang DXF/DWG bằng DxfdwgCreator cho đối tác dùng AutoCAD

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

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

    Câu hỏi ·

    Đối tác thường yêu cầu DXF/DWG để mở bằng AutoCAD. DxfdwgCreator cho phép chọn xuất 2D hay 3D, loại file, và phiên bản AutoCAD.

    Xuất bản vẽ hoặc mô hình sang DXF/DWG bằng… Xuất bản vẽ hoặc mô hình sang DXF/DWG bằng…

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

    1. Tạo creator. session.DexManager.CreateDxfdwgCreator().
    2. Chọn nguồn. ExportFrom = DisplayPart hoặc ExistingPart, InputFile.
    3. Chọn dạng xuất. ExportAs = TwoD hoặc ThreeD.
    4. Chọn loại file. OutputFileType = Dxf hoặc Dwg; OutputFile.
    5. Commit và hủy. Commit() rồi Destroy().

    Code tham khảo (Python)

    import os
    import NXOpen
    
    def xuat_dxf(session, duong_dan_prt, duong_dan_ra, dwg=False, hai_chieu=True, file_cau_hinh=None):
        os.makedirs(os.path.dirname(duong_dan_ra), exist_ok=True)
        c = session.DexManager.CreateDxfdwgCreator()
        try:
            c.ExportFrom = NXOpen.DxfdwgCreator.ExportFromOption.ExistingPart
            c.InputFile = duong_dan_prt
            c.OutputFile = duong_dan_ra
            c.ExportAs = (NXOpen.DxfdwgCreator.ExportAsOption.TwoD if hai_chieu
                          else NXOpen.DxfdwgCreator.ExportAsOption.ThreeD)
            c.OutputFileType = (NXOpen.DxfdwgCreator.OutputFileTypeOption.Dwg if dwg
                                else NXOpen.DxfdwgCreator.OutputFileTypeOption.Dxf)
            c.FileSaveFlag = False
            if file_cau_hinh and os.path.isfile(file_cau_hinh):
                c.SettingsFile = file_cau_hinh      # file .def tạo từ hộp thoại Export DXF/DWG
            c.Commit()
        finally:
            c.Destroy()
    
    def main():
        session = NXOpen.Session.GetSession()
        lw = session.ListingWindow
        lw.Open()
        part = session.Parts.Work
        if part is None:
            return
        prt = part.FullPath
        ra = "D:/NXLab_xuat/%s.dxf" % part.Leaf
        try:
            xuat_dxf(session, prt, ra, dwg=False, hai_chieu=True)
            lw.WriteLine("Đã xuất DXF: " + ra)
        except NXOpen.NXException as ex:
            lw.WriteLine("Lỗi xuất DXF: " + ex.Message)
    
    if __name__ == "__main__":
        main()
    

    Giải thích code

    • ExistingPart xuất từ file .prt trên đĩa, còn DisplayPart xuất từ part đang hiển thị.
    • File cấu hình .def lưu mọi tùy chọn (phiên bản AutoCAD, ánh xạ layer, font...) và nên dùng để kết quả nhất quán.
    • FileSaveFlag = False không mở lại file ra sau khi xuất.

    Lỗi thường gặp

    • Muốn xuất đúng một số sheet cần đặt DrawingList; mặc định xuất mô hình hoặc sheet hiện hành tùy tùy chọn.
    • Part chưa lưu có FullPath rỗng hoặc cũ; lưu part trước khi xuất theo ExistingPart.

    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.