Đến nội dung


Hình ảnh

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


  • Please log in to reply
11 replies to this topic

#1 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 10 September 2009 - 10:17 AM

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!
  • 0

#2 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 September 2009 - 10:39 AM

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.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 10 September 2009 - 10:52 AM

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?
  • 0

#4 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 September 2009 - 11:09 AM

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.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 10 September 2009 - 11:28 AM

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
  • 0

#6 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 10 September 2009 - 11:30 AM

Đấ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!
  • 0

#7 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 10 September 2009 - 11:47 AM

-Đườ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...
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#8 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 September 2009 - 02:00 PM

-Đườ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.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#9 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 September 2009 - 02:10 PM

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 đó.
  • 2

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#10 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 10 September 2009 - 02:17 PM

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)
  • 0

#11 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 10 September 2009 - 02:26 PM

-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?
  • 0

#12 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 10 September 2009 - 03:13 PM

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=")
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D