Chuyển đến nội dung
Diễn đàn CADViet
tamhoncuada10313

Cách tạo menu

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

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.

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

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

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

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

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

Để đư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.

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
*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 ?

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

  • 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

đâ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

untitled1.jpg

nếu gọi lại các hàm đó thì hình vẽ sẽ bị lỗi như sau

untitled2.jpg

untitled3.jpg

 

Để 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

untitled4.jpg

(đâ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:

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

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.

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

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

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
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ờ.

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

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

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
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ế

Mấy hôm rồi ssg bận không online được. Chương trình của bạn sau khi sửa mình đã thử đi thử lại nhiều lần không thấy lỗi, vẽ cái gì trước và bao nhiêu lần cũng OK. Chẳng hiểu trên máy bạn thế nào?! Theo mình đoán là do trên máy bạn có một số file lisp nào đó, có thể là file bị lỗi trước đây chưa sửa đã autoload khi khởi động CAD. Bạn vô hiệu hoá toàn bộ chúng, chỉ cho một mình ThuVien load vào rồi thử lại xem sao.

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
Ồ 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.

 

Chưa hiêủ bác nói menu thu vien nào. nếu menu mà mình vừa tạo cho ông bạn tamhoncuada thì nó nằm trong thư mục chủ của ACAD. Có khi hệ thống tự dờinó vào mydocumen. DCL cứ gỏ tìm kiếm là thấy thôi mà.

Xóa hẳn bất cứmenu nào khỏi ACAD thì gỏ lệnh menuload chọn vào tên menu cần xóa chọn unload. đól2 cách thông thường. còn dùng lispthì cócách nhưng máy cơ quan đan mất mạng đang ngồi quánnet nên không chéplên cho bác được.

****File gicungduoc.mns để bất cứ chổ nào cũng dùnglệnh menuload goilên được hết khi gọi nó sẽ tạo thêm *.mnc và *.mnr trong thư mục mình chứa *.mns. Hôm nào thọ giáo bác chút DCL chứ mình toàn viết lisp không rành lắmvề DCL.

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

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

Em có 1 chương trình thống kê thép như trên(muốn sử dụng thì copy tất cả vào support của CAD sau đó load các file *.lsp , sau đó muốn tkt thì dùng lệnh.Em muốn nó thành 1 menu riêng trong cad có được ko?menu đó có các lệnh như tạo bảng tk , sửa ,...?các anh 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
http://www.cadviet.com/upfiles/tkt_1.rarEm có 1chương trình thống kê thép như trên(muốn sử dụng thì copy tất cả vào support của CAD sau đó load các file *.lsp , sau đó muốn tkt thì dùng lệnh.Em muốn nó thành 1 menu riêng trong cad có được ko?menu đó có các lệnh như tạo bảng tk , sửa ,...?các anh giúp em với.http://www.cadviet.com/upfiles/tkt_1.rar

Tạo menu là việc rất dễ dàng. Tuy nhiên, các chương trình lisp của bạn chưa được xử lý, có 4 file *.lsp với nội dung tương tự. Trong cùng 1 file lsp, có những đoạn định nghĩa hàm C:XXX trùng tên nhau. Bản thân mình không rành về xây dựng nên không biết đường nào mà mò!

Theo mình, cách tốt nhất là bạn tự học lisp và tự xử lấy. Bạn có thể tham khảo ở đây:

http://www.cadviet.com/upfiles/Relax.zip

và các bài viết khác về menu đã post trên diễn đàn.

Có gì khó khăn cứ nêu lên, mình sẵn sàng giúp, nhưng không làm thay bạn!

Chúc vui.

 

P/S:

Hình như phải post link trên một dòng riêng biệt như sau:

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

Dính với nội dung khác như của bạn, bấm vào bị báo lỗi. Mình phải copy dòng link của bạn và paste vào address của trình duyệt.

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

vâng, cảm ơn anh nhìu.Em sẽ thử xem.Nói thật là em ko biết gì về LISP cả :unsure: ,em đang định tìm hiểu vì nó rất cần cho công việc của em.Mong được mọi người giú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

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

×