Đến nội dung


Hình ảnh
- - - - -

Cách tạo menu


  • Please log in to reply
37 replies to this topic

#1 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 07 July 2007 - 08:59 AM

Tui viết 2 chương trình lisp.Bi jờ muốn cho nó tự động load khi chạy autocad và cho nó hiển thị lên trên thanh menu.Nhưng không biết làm thế nào.Bác nào biết chỉ giùm với
  • 0

#2 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 07 July 2007 - 09:45 AM

Bạn tham khảo bản "nháp" CadViet Utility:

http://www.cadviet.com/forum/index.php?showtopic=374

Chỉ cần xem các chỗ có liên quan đến yêu cầu của bạn:
1) File acad.lsp
2) Cadviet01.lsp (xem phần đầu Prepare)
3) Cadviet.mns

Nếu chưa thông, ssg sẽ giải thích rõ hơn.
  • 1

#3 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 07 July 2007 - 10:07 AM

Tui viết 2 chương trình lisp.Bi jờ muốn cho nó tự động load khi chạy autocad và cho nó hiển thị lên trên thanh menu.Nhưng không biết làm thế nào.Bác nào biết chỉ giùm với


Khả năng diển đạt của tôi kém nên tách ra trà lời bác lần lượt như sau:
*Vấn đề tự động load file lisp khi chạy CAD:
**Đối với CAD R14 thì phài viết 1 file như thế này:(trường hợp bác có file lisp là lenhmot.lsp và lenhhai.lsp nằm trong d:/tienich/lenh)

(load"d:/tienich/lenh/lenhmot")
(load"d:/itienich/lenh/lenhhai")


Lưu phần màu cam trên thành file tên là ACAD.LSP
Chép file này vào thư mục SUPPORT của CAD R14

**Đối với các CAD2+ thì lưu thành tên ACADDOC.LSP (các CAD đời mới còn có 1 cách khác đã có đề cập trên diển đàn này rồi bác tìm đọc)

Phần menu tôi sẻ viết rtrong phần sau
  • 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


#4 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 07 July 2007 - 10:21 AM

Phần menu tôi sẻ viết rtrong phần sau


*Trước tiên bác tạo file TAOMENU.MNS nội dung như sau: (ví dụ bác lưu nó vào d:\tienich\lenh)

***MENUGROUP=taomenu
***POP1
ID_lmot [Goi lenh mot]^C^C^C_lenhmot
ID_lhai [Goi lenh hai]^C^C^C_lenhhai



*Tạo file GOI.LSP như sau:

(Defun C:goimenu ( )
(command "SHELL" "copy d:\\tienich\\lenh\\taomenu.mns" )
(command "DELAY" "2000" "")
(command "_menuload" "taomenu.mns")
(menucmd "P16=+taomenu.pop1")
(Princ))


*Load file goi.lsp gỏ lệnh goimenu. chỉ cần làm 1 lần là sau này me nu này sẽ có miết trong CAD của bá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 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 07 July 2007 - 11:30 AM

thanks các bác nhiều lắm
  • 0

#6 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 08 July 2007 - 08:41 AM

[url="http://www.cadviet.com/upfiles/thuvien.rar"]http://www.cadviet.c...les/thuvien.rar[/url]
Đây là 2 file tui viết.Bác nào làm hộ tui cái menu với.Tui ngồi làm cả ngày qua mà nó vẫn ko hiện lên trên thanh menu của acad đc :s_dead:
  • 0

#7 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 09 July 2007 - 09:36 AM

http://www.cadviet.com/upfiles/thuvien.rar
đây là 2 modun autolisp mà tui đã viết.Giờ tui muốn tạo menu cho nó để mỗi lần bật acad lên thì nó sẽ hiện lên trên menu.Bác nào làm được giúp tui với


http://www.cadviet.com/upfiles/CHUATHUVIEN.rar

Bác load file nàyvề. giải nén vào ổ D phải trực tiếp vào ổ D không nằm trong thư mục nào khác nửa.
mở ACAD lên load file GOITHUVIEN.LSP lên gỏ lệnh GOITV.
  • 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


#8 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 10 July 2007 - 04:31 PM

http://www.cadviet.com/upfiles/CHUATHUVIEN.rar

Bác load file nàyvề. giải nén vào ổ D phải trực tiếp vào ổ D không nằm trong thư mục nào khác nửa.
mở ACAD lên load file GOITHUVIEN.LSP lên gỏ lệnh GOITV.

bạn ơi!sao tớ làm thế mà không thấy hiện trên thanh menu j cả
  • 0

#9 lamtecco2

lamtecco2

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 715 Bài viết
Điểm đánh giá: 856 (rất tốt)

Đã gửi 11 July 2007 - 12:03 AM

Để đưa 1 lệnh mới do bạn tự tạo ( chính là các file Lisp ) vào menu của Acad trước hết phải phải đảm bảo rằng lệnh đó đã được load lên cùng Acad lúc khởi động . bạn có thể dùng cách như mình hay làm , mở tệp acad.mnl ( Tìm đến mấy dòng cuối của tệp tin này) khai báo thêm đường dẫn đến file lisp của bạn ví dụ
...
(defun c:vlisp ()
(if (/= nil c:vlide) (c:vlide))
)
(setvar "menuecho" 1)
(load "c:/Thuvien/chu_i")
(load "c:/Thuvien/Holes")
(princ "loaded.")
(princ)
Giờ đến thao tác sửa thêm lệnh vào menu của Acad , ví dụ muốn thêm 2 lệnh mới vào menu Draw , bạn mở tệp tin Acad.mnu ( hoặc có người dùng Acad.mns) tìm đến dòng ***POP7 Thêm vào đó 2 dòng :
...
***POP7
**DRAW
ID_MnDraw [&Draw]
ID_Line [&Line]^C^C_line
ID_Chu_ [Chu_i]^C^C_Chu_i
ID_Holes [Holes]^C^C_Holes
...
Rồi load lại menu này xem.
  • 0

#10 DCL

DCL

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 11 July 2007 - 08:45 AM

*Trước tiên bác tạo file TAOMENU.MNS nội dung như sau: (ví dụ bác lưu nó vào d:\tienich\lenh)

***MENUGROUP=taomenu
***POP1
ID_lmot [Goi lenh mot]^C^C^C_lenhmot
ID_lhai [Goi lenh hai]^C^C^C_lenhhai

*Tạo file GOI.LSP như sau:

(Defun C:goimenu ( )
(command "SHELL" "copy d:\\tienich\\lenh\\taomenu.mns" )
(command "DELAY" "2000" "")
(command "_menuload" "taomenu.mns")
(menucmd "P16=+taomenu.pop1")
(Princ))


*Load file goi.lsp gỏ lệnh goimenu. chỉ cần làm 1 lần là sau này me nu này sẽ có miết trong CAD của bác.


Cho mình hỏi: trường hợp sau này không muốn dùng menu trên thì làm cách nào để xóa nó ra khỏi Cad ?
  • 0

#11 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 11 July 2007 - 10:08 AM

http://www.cadviet.com/upfiles/thuvien.rar
đây là 2 modun autolisp mà tui đã viết.Giờ tui muốn tạo menu cho nó để mỗi lần bật acad lên thì nó sẽ hiện lên trên menu.Bác nào làm được giúp tui với


http://www.cadviet.com/upfiles/ThuVien_ssg.rar

1) Unzip, copy cả thư mục ThuVien và file acad.lsp vào thư mục gốc của AutoCAD (nơi có file acad.exe).
2) Khởi động Acad, bạn sẽ có ngay cái mình muốn!
3) Xin góp ý thêm:
- Không cần lập quá nhiều file *.lsp và *.dcl. Có thể gom chúng lại cho gọn (toàn bộ nội dung chương trình của bạn đã được gom vào ThuVien.lsp và ThuVien.dcl)
- Lệnh chu_I bị lỗi, lúc chạy được lúc không (bạn tự sửa nhé?)
- Nhìn chung, lisp của bạn hơi dài dòng. Bạn nên chỉnh lý lại theo nguyên tắc:
NGẮN GỌN - RÕ RÀNG - SÚC TÍCH - HIỆU QUẢ
Chúc vui,
ssg
  • 1

#12 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 11 July 2007 - 01:07 PM

đây là toàn bộ chương trình tui viết
Copy thư mục thuvien vào trong thư mục cài acad
http://www.cadviet.com/upfiles/thuvien_1.rar
Nếu chạy hàm chu_i trước và hàm gujong sau thì chương trình chạy rất ngon nhưng chỉ thực hiện được đúng 1 lần
Hình đã gửi
nếu gọi lại các hàm đó thì hình vẽ sẽ bị lỗi như sau
Hình đã gửi
Hình đã gửi

Để chạy lại chương trình cho đúng thì phải thoát hẳn khỏi acad và khởi động chương trình lại từ đầu.Tuy nhiên nếu không copy các file lisp vào mục support thì nó sẽ báo lỗi 'error: quit/exit abort' hay nếu thực hiện hàm gujong trước hàm chu_i thì cũng bị lỗi như thế nào
Hình đã gửi
(đây là file acad.lsp để trong thư mục cài acad
(load"thuvien\\thuvien.lsp")
(load"thuvien\\holes.lsp")
(load"thuvien\\chu_i.lsp")
)
bác nào biết cách sửa chỉ giùm tui với.Sắp đến ngày tui phải nộp bài rồi.tui vốn không phải dân trong ngành nhưng vì thấy acad hay quá mà đăng ký làm bài về nó.Giờ ko hỏi đc ai chỉ biết mong chờ vào mọi người ở đây thôi :s_dead:
  • 0

#13 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 11 July 2007 - 05:03 PM

Chương trình của bạn quá nhiều lỗi!
1) Sai cú pháp, chủ yếu là thiếu dấu cách (space)
2) Lỗi cơ bản làm cho bạn "nghĩ mãi không hiểu" khi gộp 2 chương trình với nhau là: chung 1 hàm có tên setall với 2 nội dung khác nhau! (mình sửa thành setall2).
3) Bạn chỉ đặt các điều kiện mà không xử lý tình huống. Ví dụ: (if (>= day cao) (alert "\n do day phai nho hon chieu cao").... Nếu người dùng nhập số liệu không thoả điều kiện, lẽ ra phải thông báo, sau đó buộc người dùng nhập lại số liệu trong vòng lặp while. Chương trình của bạn chỉ ra thông báo rồi thoát luôn!
4) Bạn không chỉ rõ đường dẫn của file *.dcl. Mục đích lập (TVPath) là ở đó.
Đã sửa: (setq dcl (load_dialog (strcat (TVPath) "ThuVien.dcl")))
5) Cấu trúc chương trình của bạn quá luộm thuộm. Khi có lỗi không biết đâu mà... rờ là điều tất nhiên!

Dù sao thì mình cũng đã cố sửa để cả 2 chương trình đều chạy được mà không có lỗi như trước. Nếu muốn nộp bài cho thầy, bạn nên hoàn thiện thêm.
Thành thật xin lỗi bạn nếu những nhận xét thẳng thắn của mình làm bạn phật lòng.

Link mới:

http://www.cadviet.com/upfiles/ThuVien2.rar

Vấn là copy cả thư mục ThuVien và acad.lsp vào thư mục gốc của Acad.
  • 0

#14 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 11 July 2007 - 09:11 PM

không đâu bác ssg ơi!Bác cứ góp ý thẳng thắn như thế là tốt cho tui đó.Tui tự học cái món này, ko có ai chỉ dẫn, thầy tui chỉ định hướng chung chung thôi. Nay có bác đây rùi :s_dead: IF có chỗ nào ko hiểu nữa,tui lại làm phiền bác nha
  • 0

#15 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 12 July 2007 - 12:52 PM

bác ssg ơi!sao khi tui chạy file chu_i bằng lệnh appload thì nó vẫn hoạt động bình thường.Bác có thể sửa lỗi giùm tui ko?tui tìm hoài ko ra lỗi :s_dead:
  • 0

#16 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 13 July 2007 - 07:33 AM

bạn ơi!sao tớ làm thế mà không thấy hiện trên thanh menu j cả


Không biết hôm nay bác đã làm dược menu chưa. Tôi chạy trên máy tôi thì rất ổn không biết bác lổi chổ nào.
Về tiện ích líp của bác thấy anh em góp ý nhiều nhưng tôi có ý thế này.
Dùng Líp là để cho tiện lợi nên bác cần cho con líp của bác chức năng sau:
Các giá trị đã nhập trong các ô thì nên lưu lại trong lần gọi lệnh sau người dùng muốn chỉnh gì thì chỉnh còn không thì cú thế mà vẽ tiếp. Chứ của bác cứ mổi lần gọi lệnh là lên giá trị mặc định miết nếu muốn vẽ lại cái i chang thi cũng phải phập lại toàn bộ trhông số không phù hợp.
Khi thông báo dử liệu không phù hợp thì nên cho hiện lại hộp thoại để điều chỉnh chứ không mất luôn như của bác hiện giờ.
  • 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


#17 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 13 July 2007 - 04:08 PM

bác ssg ới! sao khi tui chạy chu i trước thì ko có lỗi.Nhưng nếu vẽ mat bich trc,sau đó vẽ chu i thì thế nào cũng ko vẽ được là sao?Đó là lỗi j thế
  • 0

#18 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 13 July 2007 - 07:40 PM

Cho mình hỏi: trường hợp sau này không muốn dùng menu trên thì làm cách nào để xóa nó ra khỏi Cad ?


Thấy nic của bác là DCL chắc là viết phần DCL tôt lắm nhỉ?
Ý bác là xóa bằng lisp hay làm bằng cad thông thường.
  • 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


#19 tamhoncuada10313

tamhoncuada10313

    biết zoom

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

Đã gửi 14 July 2007 - 09:32 AM

hix!ko ai ra tay sửa giùm tui file chu_i ah?Tui trình còn non,sửa mãi ko dc
  • 0

#20 DCL

DCL

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 14 July 2007 - 11:35 AM

Thấy nic của bác là DCL chắc là viết phần DCL tôt lắm nhỉ?
Ý bác là xóa bằng lisp hay làm bằng cad thông thường.

Ồ không đâu, viết phần DCL cực phần trình bày khi nó hơi phức tạp một chút, các spacer co dãn không biết đâu mà lần!
Cụ thể ở đây là mình muốn xóa hẳn menu Thư viện ra khỏi CAD bằng cách nào cũng được. À sẵn hỏi bác luôn thông tin menu Thu vien được lưu trong CAD ở đâu? Mình tìm mà không thấy.
  • 0