
C#: gọi một hộp thoại Block UI Styler từ add-in và đọc giá trị sau khi người dùng bấm OK
#C##Block UI Styler1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Block UI Styler có thể sinh sẵn mã C# gồm lớp hộp thoại với các callback. Bài này tóm tắt cấu trúc lớp mẫu do công cụ sinh ra và chỗ nào bạn viết logic của mình.
C#: gọi một hộp thoại Block UI Styler từ…Các bước thực hiện
- Thiết kế dialog. Lưu file .dlx cùng thư mục output.
- Chọn ngôn ngữ C#. Block UI Styler sinh file .cs, phần được phép sửa nằm trong các hàm callback.
- Viết logic trong callback. update_cb, apply_cb, ok_cb.
- Gọi hộp thoại. Từ Main khởi tạo lớp và Show().
- Giải phóng. Dispose trong finally.
Code tham khảo (C#)
using System; using NXOpen; using NXOpen.BlockStyler; public class HopThoaiMau { private Session theSession; private UI theUI; private BlockDialog theDialog; private IntegerBlock soCot; private DoubleBlock buoc; public HopThoaiMau() { theSession = Session.GetSession(); theUI = UI.GetUI(); theDialog = theUI.CreateDialog("nxlab_dialog.dlx"); theDialog.AddUpdateHandler(new BlockDialog.Update(update_cb)); theDialog.AddOkHandler(new BlockDialog.Ok(ok_cb)); theDialog.AddInitializeHandler(new BlockDialog.Initialize(initialize_cb)); } public static void Main(string[] args) { HopThoaiMau h = null; try { h = new HopThoaiMau(); h.theDialog.Show(); } catch (Exception ex) { Session.GetSession().ListingWindow.Open(); Session.GetSession().ListingWindow.WriteLine("Lỗi: " + ex.Message); } finally { if (h != null) h.theDialog.Dispose(); } } public void initialize_cb() { soCot = (IntegerBlock)theDialog.TopBlock.FindBlock("integer_cot"); buoc = (DoubleBlock)theDialog.TopBlock.FindBlock("double_buoc"); soCot.Value = 4; buoc.Value = 10.0; } public int update_cb(UIBlock block) { return 0; } public int ok_cb() { ListingWindow lw = theSession.ListingWindow; lw.Open(); lw.WriteLine("Số cột = " + soCot.Value + ", bước = " + buoc.Value); return 0; } public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; } }Giải thích code
- Mỗi callback là một hàm công khai; đăng ký bằng
new BlockDialog.Update(update_cb)và các delegate tương ứng. - Phép ép kiểu
(IntegerBlock)cần thiết vìFindBlocktrả vềUIBlockchung. - Trả về
0từ callback nghĩa là xử lý bình thường.
Lỗi thường gặp
- File .dlx phải nằm cùng thư mục với DLL (hoặc trong thư mục application) để
CreateDialog("tên.dlx")tìm thấy. - Đổi Object Name trong Block UI Styler mà không sửa code C# làm
FindBlocktrảnull.
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.