Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
truongthanh

Lỗi khi Load MENu tự tạo!

Các bài được khuyến nghị

truongthanh    7

Các anh cho em hỏi sao mỗi lần em mở CAD lên là cái MENU do em viết nó lại mất!mặc dù em gõ lệnh MENULOAD thì nó vẫn còn nằm trong danh sách!nhưng trên thanh công cụ lại ko thấy MENU đó đâu hết!em phải UNLOAD rồi LOAD lại nó mới xuất hiện!Vậy làm sao lúc nao2 mở CAD lên cũng thấy nó hết jay?Thanks mọi người nhiều!

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
duy782006    1.374
Các anh cho em hỏi sao mỗi lần em mở CAD lên là cái MENU do em viết nó lại mất!mặc dù em gõ lệnh MENULOAD thì nó vẫn còn nằm trong danh sách!nhưng trên thanh công cụ lại ko thấy MENU đó đâu hết!em phải UNLOAD rồi LOAD lại nó mới xuất hiện!Vậy làm sao lúc nao2 mở CAD lên cũng thấy nó hết jay?Thanks mọi người nhiều!

Bạn tham khảo đoạn lisp nằm trong file acaddoc.lsp của mình như sau:

 

(setq tinhtrangmenutienich (menugroup "tienich"))

(Cond

((= tinhtrangmenutienich nil)

(setq duongdanmenutienich (strcat odiachay "\\tienich\\filehethong\\tienich.mns"))

(command "_menuload" duongdanmenutienich)

(menucmd "P13=+tienich.pop1")

)

((/= tinhtrangmenutienich nil)

)

)

 

*Giải thích:

Xem menu có tên tien ich có hay chưa. Nếu có rồi thì thôi, nếu chưa thì load lên và để cái pop1 của menu tienich tại vị trí menu thứ 13.

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
truongthanh    7
Bạn tham khảo đoạn lisp nằm trong file acaddoc.lsp của mình như sau:

"\\tienich\\filehethong\\tienich.mns"))

chỗ này nghĩa là sao vậy anh?

với lại cho em hỏi thêm tí!sao sau khi dùng 1 lệnh trong menu, em bấm enter để lặp lại lệnh của LISP đó thì lại ko dc vậy anh?

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
duy782006    1.374
chỗ này nghĩa là sao vậy anh?

với lại cho em hỏi thêm tí!sao sau khi dùng 1 lệnh trong menu, em bấm enter để lặp lại lệnh của LISP đó thì lại ko dc vậy anh?

Đấy là đường dẩn của file menu của mình mà!

-Nếu lệnh bạn gọi từ menu là lệnh lisp hoàn chỉnh trong menu chỉ gọi tên thì enter lặp lại lệnh bình thường.

-Nếu chọn men nu mà thực hiện 1 chuổi lisp viết trực tiếp trên file menu thì enter không lặp lại được.

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
Tue_NV    3.841
Bạn tham khảo đoạn lisp nằm trong file acaddoc.lsp của mình như sau:

 

(setq tinhtrangmenutienich (menugroup "tienich"))

(Cond

((= tinhtrangmenutienich nil)

(setq duongdanmenutienich (strcat odiachay "\\tienich\\filehethong\\tienich.mns"))

(command "_menuload" duongdanmenutienich)

(menucmd "P13=+tienich.pop1")

)

((/= tinhtrangmenutienich nil)

)

)

*Giải thích:

Xem menu có tên tien ich có hay chưa. Nếu có rồi thì thôi, nếu chưa thì load lên và để cái pop1 của menu tienich tại vị trí menu thứ 13.

Anh Duy vui lòng cho Tue_Nv hỏi tý nhé : hàm menucmd và những dòng giải thích của anh thì em chưa hiểu mấy. (những dòng màu đậm) . Anh có thể giải thích rõ hơn tý được không?

Cảm ơn anh

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
truongthanh    7
Đấy là đường dẩn của file menu của mình mà!

-Nếu lệnh bạn gọi từ menu là lệnh lisp hoàn chỉnh trong menu chỉ gọi tên thì enter lặp lại lệnh bình thường.

-Nếu chọn men nu mà thực hiện 1 chuổi lisp viết trực tiếp trên file menu thì enter không lặp lại được.

-Đường dẫn sao ko thấy ổ đĩa vậy anh?vậy MENU của em nằm trong ổ C:\Program Files\AutoCAD 2007\Support\MENU\tienich.mnu thì em phải ghi như thế nào?

-Lisp của em là 1 lisp hoàn chỉnh,trong MENU chỉ gọi tên lệnh thôi!mà vẫn ko lặp lại được!

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
elleHCSC    98
-Đường dẫn sao ko thấy ổ đĩa vậy anh?vậy MENU của em nằm trong ổ C:\Program Files\AutoCAD 2007\Support\MENU\tienich.mnu thì em phải ghi như thế nào?

-Lisp của em là 1 lisp hoàn chỉnh,trong MENU chỉ gọi tên lệnh thôi!mà vẫn ko lặp lại được!

 

Bạn tìm trên diễn đàn mục LandCadViet bác Ssg có thiết kế cái LCV đó, trong đó có mục load menu và unload menu chạy rất tốt, theo đó mà làm tiếp...

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
duy782006    1.374
-Đường dẫn sao ko thấy ổ đĩa vậy anh?vậy MENU của em nằm trong ổ C:\Program Files\AutoCAD 2007\Support\MENU\tienich.mnu thì em phải ghi như thế nào?

-Lisp của em là 1 lisp hoàn chỉnh,trong MENU chỉ gọi tên lệnh thôi!mà vẫn ko lặp lại được!

Do líp của mình là lisp di động nên cái đoạn trước nằm trong biến odiachay. Trường hợp của bạn thì:

 

(setq tinhtrangmenu (menugroup "tenmenu"))

(Cond

((= tinhtrangmenu nil)

(command "_menuload" "C:\Program Files\AutoCAD 2007\Support\MENU\tienich.mnu")

(menucmd "P13=+tienich.pop1")

*Bạn up cái file menu của bạn mình dòm chút coi cái lisp bạn gọi trong menu như 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
duy782006    1.374
Anh Duy vui lòng cho Tue_Nv hỏi tý nhé : hàm menucmd và những dòng giải thích của anh thì em chưa hiểu mấy. (những dòng màu đậm) . Anh có thể giải thích rõ hơn tý được không?

Cảm ơn anh

-Hàm menucmd là kiểm tra xem menu có tên đó đã tồn tại chưa.

-Mình giải thích 1 chút về menu:

 

***MENUGROUP=tlkt

***POP1

ID_tieude [TLKT]

ID_a1 [Noi dung dong 1]^C^C_tenlenh-1

ID_a2 [Noi dung dong 2]^C^C_tenlenh-2

ID_a3 [Noi dung dong 3]^C^C_tenlenh-3

ID_a4 [Noi dung dong 4]^C^C_tenlenh-4

[--]

ID_b1 [->Xep lop]

ID_b2 [Noi dung lop 1]^C^C_tenlenh-5

ID_b3 [Noi dung lop 2]^C^C_tenlenh-6

ID_b4 [<-Noi dung lop 3]^C^C_tenlenh-7

[--]

ID_c1 [Goi menu thu vien]^C^C_$i=tlkt.THUVIEN1 $i=*

***IMAGE

**THUVIEN1

[THU VIEN CHI TIET]

[hinh-1]^C^C_tenlenh8

[hinh-2]^C^C_tenlenh9

[hinh-3]^C^C_tenlenh10

[hinh-4]^C^C_tenlenh11

 

*Giải thích:

***MENUGROUP=tlkt định nghĩa tên của menu là tlkt.

***POP1 Quyết định đây là 1 menu treo.

ID_tieude [TLKT] Quyết định dòng chử xuất hiện trên thanh menu là TLKT.

ID_a1 [Noi dung dong 1]^C^C_tenlenh-1 :Noi dung dong 1 : Sẽ xuất hiện ở menu khi chọn nó sẽ thực hiện tenlenh-1. Có thể là lệnh cad hoặc 1 chuỗi lệnh.

[--] Làm xuất hiện dòng gạch ngang trong menu.

ID_b1 [->Xep lop] Quyết định mở đầu 1 menu xếp lớp.

ID_b4 [<-Noi dung lop 3]^C^C_tenlenh-7 :Quyết định kết thúc 1 menu xếp lớp.

 

 

*Phía trên màn hình cad xuất hiện các menu thì cái đầu tiên tính là số 1 rồi cái số 2 Thông thường cad cài đủ các thứ chưa thên tiện ích gì thì có 12 cái menu như vậy. Mình thêm cái của mình vào vị trí thứ 13. Nếu trên màn hình đã có hơn 12 cái menu thì cái của mình sẽ chen vào vị trí thứ 13 và đẩy lui các cái khác về sau 1 vị trí.

*Trong 1 file menu có thể có nhiều menu (pop) ở đây mình viết đơn giản có pop1 tên là LTKT nếu có pòp thì tên khác nửa thì phải đưa nó lên kiểu dậy đó.

  • Vote tăng 2

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
truongthanh    7
Do líp của mình là lisp di động nên cái đoạn trước nằm trong biến odiachay. Trường hợp của bạn thì:

 

(setq tinhtrangmenu (menugroup "tenmenu"))

(Cond

((= tinhtrangmenu nil)

(command "_menuload" "C:\Program Files\AutoCAD 2007\Support\MENU\tienich.mnu")

(menucmd "P13=+tienich.pop1")

*Bạn up cái file menu của bạn mình dòm chút coi cái lisp bạn gọi trong menu như nào.

cảm ơn anh!em gọi lệnh trong MENU được rồi!đáng lý ghi lệnh như thế này:

[&Tinh tong cac text so]^C^Ctong

thì em lại ghi như thế này:

[&Tinh tong cac text so]^C^C(c:tong)

Em ko biết tại sao sách lại hướng dẫn mình viết như vậy nữa?^C^C(c:tong)

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
truongthanh    7
-Hàm menucmd là kiểm tra xem menu có tên đó đã tồn tại chưa.

-Mình giải thích 1 chút về menu:

 

***MENUGROUP=tlkt

***POP1

ID_tieude [TLKT]

ID_a1 [Noi dung dong 1]^C^C_tenlenh-1

ID_a2 [Noi dung dong 2]^C^C_tenlenh-2

ID_a3 [Noi dung dong 3]^C^C_tenlenh-3

ID_a4 [Noi dung dong 4]^C^C_tenlenh-4

[--]

ID_b1 [->Xep lop]

ID_b2 [Noi dung lop 1]^C^C_tenlenh-5

ID_b3 [Noi dung lop 2]^C^C_tenlenh-6

ID_b4 [<-Noi dung lop 3]^C^C_tenlenh-7

[--]

ID_c1 [Goi menu thu vien]^C^C_$i=tlkt.THUVIEN1 $i=*

***IMAGE

**THUVIEN1

[THU VIEN CHI TIET]

[hinh-1]^C^C_tenlenh8

[hinh-2]^C^C_tenlenh9

[hinh-3]^C^C_tenlenh10

[hinh-4]^C^C_tenlenh11

mầy chỗ em tô đỏ đó ko có cũng dc fai ko anh?vai trò của nó là j vậy?

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
duy782006    1.374
mầy chỗ em tô đỏ đó ko có cũng dc fai ko anh?vai trò của nó là j vậy?

Cái đó để làm các phần mở rộng ví dụ: làm mờ, đánh dấu một mục nào đó trong menu.

-Cách điều chỉnh hiển thị của menu bằng dòng lệnh.

(menucmd "Gtlkt.pop1=-") Tắt menu pop1 thuộc menu tlkt đi.

(menucmd "P15=+tlkt.pop1") Làm xuất hiện menu pop1 thuộc menu tlkt tại vị trí thứ 15 của menu tính từ trái qua phải.

-Cách làm mờ 1 mục của menu:

Ví dụ làm mờ dòng Noi dung dong 4 trong menu tlkt.

+Làm mờ ngay từ khi mới tải lên: Thêm dấu ~ trong dòng định nghĩa menu. ID_a4 [~Noi dung dong 4]^C^C_tenlenh-4

+Làm mờ bằng dòng lệnh sau khi tải lên: dùng dòng lệnh sau.

(MENUCMD "Gtlkt. ID_a4=~")

-Đánh dấu 1 mục của menu: Ví dụ đánh dấu dòng Noi dung dong 4 trong menu tlkt trên.

+Đánh dấu ngay từ khi mới tải lên: Thêm dấu ! trong dòng định nghĩa menu. ID_a4 [!Noi dung dong 4]^C^C_tenlenh-4

+Đánh dấu bằng dòng lệnh sau khi tải lên: dùng dòng lệnh sau.

(MENUCMD "Gtlkt. ID_a4=!")

-Vô hiệu hóa việc đánh dấu, làm mờ 1 mục của menu bằng dòng lệnh. (MENUCMD "Gtlkt. ID_a4=")

  • Vote tă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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×