Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 17, 2013 Em có code tạo menu bằng VBA như sau: Sub TaoMenu() Dim currMenuGroup As AcadMenuGroup Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0) Dim newMenu As AcadPopupMenu On Error Resume Next Set newMenu = currMenuGroup.Menus.Add("My Program") If Err <> 0 Then Set newMenu = currMenuGroup.Menus("My Program") Dim menuEnt As AcadPopupMenuItem For Each menuEnt In newMenu menuEnt.Delete Next End If Dim newMenuItem As AcadPopupMenuItem Dim openMacro As String openMacro = "-vbarun SubMenu1 " Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Sub Menu 1", openMacro) openMacro = "-vbarun SubMenu2 " Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Sub Menu 2", openMacro) openMacro = "-vbarun SubMenu3 " Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Sub Menu 3", openMacro) currMenuGroup.Menus.InsertMenuInMenuBar "My Program", "" End Sub Sub SubMenu1() MsgBox "Sub Menu 1" End Sub Sub SubMenu2() MsgBox "Sub Menu 2" End Sub Và em có một lisp có lệnh bh tạo lại boundary cho hatch bị mất như sau : ;; free lisp from cadviet.com ;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=51566 (defun c:bh( / sl n) (setq sl (acet-ss-to-list(ssget '((0 . "HATCH"))))) (foreach n sl (command "hatchedit" n "b" "p" "y" "") ) ) 1.Bây giờ em muốn gán lệnh bh này vào menu Sub Menu 1 để mỗi lần kích vào nó sẽ tự động gọi lệnh bh lên thì làm như thế nào ạ? 2.Em muốn làm tiếng Việt cho menu trên thì làm như thế nào ạ? Em nhờ các anh chị chỉ giúp ạ! Em cảm ơn! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 17, 2013 Mod nào biết giúp em với ạ! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ketxu 3005 Báo cáo bài đăng Đã đăng Tháng 1 17, 2013 Hình như bạn nhầm giữa gọi bằng VBA với gọi bằng MENU. Bạn thử search lại xem, chắc chắn sẽ có kết quả ^^ 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Hình như bạn nhầm giữa gọi bằng VBA với gọi bằng MENU. Bạn thử search lại xem, chắc chắn sẽ có kết quả ^^ Em hiểu quy trình nôm na thế này: + Viết lisp gọi Menu VBA + Viết lisp gọi các Macro tương ứng với các Sub Menu Nhưng ý em muốn hỏi là : Em chỉ viết menu bằng VBA thôi , còn mỗi lần em kích vào Sub Menu sẽ gọi lisp mà mình đã gán vào Sub Menu đó có được không ạ? Kiểu như là : Bình VBA, rượu LISP Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Đơn giản thế này nhé. Load lisp này ;Goi lenh tao Menu khi khoi dong xong (Defun C:Mnu() (Command "Vbarun" "TaoMenu") (princ)) Còn gọi Thủ tục trong Menu bằng lisp thì cũng tương tự thôi. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Còn gọi Thủ tục trong Menu bằng lisp thì cũng tương tự thôi. Nếu viết VBA như thế này : \\Dim openMacro As String openMacro = "-vbarun SubMenu1 " Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Sub Menu 1", openMacro) \\ tức là gọi marco SubMenu1 và gán vào menu Sub Menu 1 Còn ý em là em muốn gán lisp bh vào Sub Menu 1 trong VBA (chứ không phải là viết lisp gọi VBA) . Khi kích vào Sub Menu 1 sẽ tự động gọi lisp bh đã được load từ trước. Thanks ạ! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Nếu viết VBA như thế này : \\Dim openMacro As String openMacro = "-vbarun SubMenu1 " Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Sub Menu 1", openMacro) \\ tức là gọi marco SubMenu1 và gán vào menu Sub Menu 1 Còn ý em là em muốn gán lisp bh vào Sub Menu 1 trong VBA (chứ không phải là viết lisp gọi VBA) . Khi kích vào Sub Menu 1 sẽ tự động gọi lisp bh đã được load từ trước. Thanks ạ! Bạn thử như sau xem Sub Menu1() ThisDrawing.SendCommand "bh " End Sub Thực thi dòng lệnh từ bàn phím. Sau đó bạn gọi như bình thường Mình đã tạo Menu với VBA nhưng nhận thấy tạo Menu bằng CUI hay hơn nhiều mà mình gọi thủ tục thông qua "Lisp gọi VBA" còn nếu gọi Menu trong VBA bắt buộc các sub phải nằm cùng Module với Sub tạo menu đấy nhé !. Bạn check thử xem. Thân ! 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Thực thi dòng lệnh từ bàn phím. Sau đó bạn gọi như bình thường Mình đã tạo Menu với VBA nhưng nhận thấy tạo Menu bằng CUI hay hơn nhiều mà mình gọi thủ tục thông qua "Lisp gọi VBA" còn nếu gọi Menu trong VBA bắt buộc các sub phải nằm cùng Module với Sub tạo menu đấy nhé !. Bạn check thử xem. Thân ! Mục đích của em là đưa tiếng Việt vào Menu thôi. Em thấy viết bằng VBA thì dễ hơn là LISP . Bác cho em xin email để trao đổi 1 chút kinh nghiệm được không ạ? 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 1 18, 2013 Mục đích của em là đưa tiếng Việt vào Menu thôi. Em thấy viết bằng VBA thì dễ hơn là LISP . Bác cho em xin email để trao đổi 1 chút kinh nghiệm được không ạ? Đưa tiếng việt vào Menu bằng VBA thì phải dùng hàm API chuyển mã hơi dài dòng trong khi đó bằng CUI bạn tạo menu trực tiếp luôn nhé. Email: nguyenngocson@live.com 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Mọt Sách 3 Báo cáo bài đăng Đã đăng Tháng 1 21, 2013 Bây giờ em muốn có Sub con của Sub Menu 1 thì thêm code như thế nào ạ? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
NguyenNgocSon 43 Báo cáo bài đăng Đã đăng Tháng 1 21, 2013 Bạn tải cuốn Lập trình trong VBA của bộ mộn Tự động hóa trường - ĐHGTVT có cái bạn cần nhé. Trong thư viện của CV có rồi nhé ! Thân. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác