Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] lisp tạo menu những lệnh cơ bản


  • Please log in to reply
33 replies to this topic

#21 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 14 June 2011 - 03:28 PM

Em tự viết cái menu nó chứa những lệnh của những lisp có trong máy để khi nào quên có thể tra. Như trên hình thì em muốn những phần line_Pline, offset... nó nằm trong 1 hình chữ nhật, giống như menu của các anh đã làm. các anh sửa giúp em.
http://www.mediafire...zpd04lzll5qzbk8

Bạn ngó qua cái này rồi tự sửa đi cho nó chủ động.

***MENUGROUP=TIENICH

***POP1
ID_tieude [Tien ich]
ID_tong [Tong hop lenh\t(TIENICH)]^C^C_tienich
[--]
ID_1 [Thu vien cac loai\t(TV)]^C^C_tv
ID_4 [Thu vien duong dan\t(TVDD)]^C^C_tvdd
ID_2 [Hatch mo rong\t(HATCHDUY)]^C^C_HATCHDUY
ID_3 [Chon theo yeu cau\t(CHOND)]^C^C_chond
[--]
ID_a1 [Thong ke thep tron\t(TKTT)]^C^C_tktt
ID_a2 [Thong ke thep hinh\t(TKTH)]^C^C_tkth
ID_a3 [Thong ke thep ma\t(TKTM)]^C^C_tktm
[--]
ID_aa1 [Doi kieu tk thep tron\t(DTKT)]^C^C_dtkt
[--]
ID_b1 [Tien ich point\t(POD)]^C^C_pod
ID_b2 [Tien ich ve\t(VED)]^C^C_ved
ID_b3 [Tien ich Pline\t(PLD)]^C^C_pld
ID_b4 [Tien ich Dim\t(DIMD)]^C^C_dimd
ID_b5 [Tien ich Layer\t(LAD)]^C^C_lad
ID_b6 [Tien ich phoi canh\t(PCD)]^C^C_pcd
ID_b7 [Tien ich Text\t(TEXD)]^C^C_texd
ID_b8 [Tien ich Do\t(DOD)]^C^C_dod
ID_b9 [Tien ich chinh sua\t(CSD)]^C^C_csd
ID_b10 [Tien ich Block\t(BLD)]^C^C_bld
[--]
ID_hh1 [->Tien ich HATCH]
ID_hhh1 [Hatch mo rong\t(HATCHDUY)]^C^C_hatchduy
ID_hhh2 [Htach Duy\t(HDUY)]^C^C_hduy
ID_hhh3 [<-Hatch nhanh\t(HHD)]^C^C_hhd
ID_c1 [->Tien ich point]
ID_ca1 [Xem toa do\t(XTD)]^C^C_xtd
ID_ca2 [Liet ke toa do\t(LKD)]^C^C_lkd
ID_ca3 [<-Dua Z ve 000\t(VE0)]^C^C_ve0
ID_c2 [->Tien ich ve]
ID_cb1 [Ve tuong ngang\t(VTN)]^C^C_vtn
ID_cb2 [Ve tuong doc\t(VTD)]^C^C_vtd
ID_cb3 [Tao tuong tu tim\t(VT)]^C^C_vt
ID_cb4 [ve tuong\t(T)]^C^C_t
ID_cb5 [Truc kich thuoc\t(TRUC)]^C^C_truc
ID_cb6 [Cos cao do\t(COS)]^C^C_cos
ID_cb7 [Dau cat lung\t(DCL)]^C^C_dcl
ID_cb8 [Mui ten\t(VMT)]^C^C_vmt
ID_cb9 [Mui ten tam cap\t(MTTC)]^C^C_mttc
ID_cb10 [Cot tron\t(COTT)]^C^C_cott
ID_cb11 [Cot chu nhat\t(COT)]^C^C_cot
ID_cb12 [cua so\t(CSO)]^C^C_cso
ID_cb13 [Cua di\t(CDI)]^C^C_cdi
ID_cb14 [Chu nhat bo goc\t(VB)]^C^C_vb
ID_cb15 [Mui ten duong\t(MTD)]^C^C_mtd
ID_cb16 [Cat lung ong tron\t(CNO)]^C^C_cno
ID_cb17 [Line du 2 dau\t(LD)]^C^C_ld
ID_cb18 [<-Wipeout cho hinh tron\t(WIC)]^C^C_wic
ID_c3 [->Tien ich Pline]
ID_cd1 [Noi thanh pline\t(NOI)]^C^C_noi
ID_cd2 [Edit with\t(CW)]^C^C_cw
ID_cd3 [<-Ma with\t(MAW)]^C^C_maw
ID_c4 [->Tien ich Dim]
ID_ce1 [Chinh chan va dinh\t(CD)]^C^C_cd
ID_ce2 [Chinh chan\t(CCD)]^C^C_ccd
ID_ce3 [<-Chinh dinh\t(CDD)]^C^C_cdd
ID_c5 [->Tien ich Layer]
ID_cf1 [Chuyen mau ra lop\t(MRL)]^C^C_mrl
ID_cf2 [Tao lop moi\t(LM)]^C^C_lm
ID_cf3 [Chuyen lop\t(CL)]^C^C_cl
ID_cf4 [Chuyen Dim ve 1 lop\t(CKT)]^C^C_ckt
ID_cf5 [<-Chuyen Hatch ve 1 lop\t(CVL)]^C^C_cvl
ID_c7 [->Tien ich Text]
ID_ch1 [Chuyen hoa <-> thuong\t(DC)]^C^C_dc
ID_ch2 [Chuyen thanh chu hoa\t(VH)]^C^C_vh
ID_ch3 [Copy text tang dan\t(CT)]^C^C_ct
ID_ch4 [Chinh text tang dan\t(CSS)]^C^C_css
ID_ch5 [Array text tang dan\t(ART)]^C^C_art
ID_ch6 [Copy nhieu text tang dan\t(CNT)]^C^C_cnt
ID_ch7 [Chuyen noi dung theo text mau\t(ND)]^C^C_nd
ID_ch8 [Chuyen noi dung theo nhap vao\t(NDm)]^C^C_ndm
ID_ch9 [Them noi dung\t(CTT)]^C^C_ctt
ID_ch9a [Bot noi dung\t(BBT)]^C^C_bbt
ID_ch10 [Gach chan\t(GC)]^C^C_gc
ID_ch11 [Cong tex\t(CONG)]^C^C_cong
ID_ch12 [Trung binh text\t(TB)]^C^C_tb
ID_ch13 [Fit nhieu text\t(TFM)]^C^C_tfm
ID_ch14 [Mirror text\t(MIT)]^C^C_mit
ID_ch15 [Rotate text\t(ROT)]^C^C_rot
ID_ch16 [Canh le tex ben trai\t(CLT)]^C^C_clt
ID_ch17 [Canh le tex ben phai\t(CLP)]^C^C_clp
ID_ch18 [Canh le tex giua\t(CLG)]^C^C_clg
ID_ch19 [Canh le tex ngang\t(CLN)]^C^C_cln
ID_ch20 [Canh tex giua chu nhat\t(GCN)]^C^C_gcn
ID_ch21 [Them chu m2\t(M2)]^C^C_m2
ID_ch22 [Viet chu pi\t(PI)]^C^C_pi
[--]
ID_ch9 [Doc file txt\t(DOCTXT)]^C^C_doctxt
ID_ch10 [Viet file txt\t(TXT)]^C^C_txt
[--]
ID_ch17 [Tcvn3 => Vni\t(TCVN-VNI)]^C^C_tcvn-vni
ID_ch18 [<-Text => Block\t(TBL)]^C^C_tbl
ID_c8 [->Tien ich do]
ID_ck1 [Do bang 2 diem\t(2D)]^C^C_2d
ID_ck2 [Do dien tich\t(DTICH)]^C^C_dtich
ID_ck3 [Do chu vi\t(CHUVI)]^C^C_chuvi
ID_ck4 [Do dien tich pick duong bien\t(DTND)]^C^C_dtnd
ID_ck5 [Pic dien tich \t(DTICHP)]^C^C_dtichp
ID_ck6 [<-Do chu vi va dien tich\t(CVDT)]^C^C_cvdt
ID_c8 [->Tien ich chinh sua]
ID_cs1 [New Al\t(NAL)]^C^C_nal
ID_cs2 [Copy Array\t(AC)]^C^C_ac
ID_cs3 [New Scale\t(/)]^C^C_/
ID_cs4 [New Trim\t(TRN)]^C^C_trn
ID_cs5 [New Extend\t(EXN)]^C^C_exn
ID_cs6 [Mirror truc X\t(MX)]^C^C_mx
ID_cs7 [Mirror truc Y\t(MY)]^C^C_my
ID_cs8 [Mirror 45 trai\t(M-45)]^C^C_m-45
ID_cs9 [Mirror 45 phai\t(M45)]^C^C_m45
ID_cs10 [Scale x y\t(SCXY)]^C^C_scxy
ID_cs11 [Scale = dien tich\t(SCDT)]^C^C_scdt
ID_cs12 [Rai theo so luong\t(RAI)]^C^C_rai
ID_cs13 [Rai theo khoang cach\t(RAIKC)]^C^C_raikc
ID_cs14 [<-Xem thuoc tinh\t(XEM)]^C^C_xem
ID_c9 [->Tien ich BLOCK]
ID_bl1 [Ma Block tat ca\t(MAB)]^C^C_mab
ID_bl2 [Ma Block theo ten\t(MABT)]^C^C_mabt
ID_bl3 [Rotate nhieu Block\t(ROB)]^C^C_rob
ID_bl4 [Scale nhieu Block\t(SCB)]^C^C_scb
ID_bl5 [<-Doi dien chen Block\t(DBL)]^C^C_dbl
[--]
ID_F [->Gioi thieu]
ID_f00 [Tac gia]^C^C_tacgia
ID_f0 [Tien ich thu vien]^C^C_gtthuvien
ID_f9 [Tien ich thu vien duong dan]^C^C_gtthuviendd
ID_f1 [Tien ich point]^C^C_gtpoint
ID_f2 [Tien ich ve]^C^C_gtve
ID_f3 [Tien ich Pline]^C^C_gtpline
ID_f4 [Tien ich Dim]^C^C_gtdim
ID_f5 [Tien ich Layer]^C^C_gtlayer
ID_f6 [Tien ich phoi canh]^C^C_gtphoicanh
ID_f7 [Tien ich Text]^C^C_gttext
ID_f8 [Tien ich do]^C^C_gtdo
ID_f9 [Tien ich Chinh sua]^C^C_gtchinhsua
ID_f10 [<-Tien ich Block]^C^C_gtblock

Xem thêm các bài về menu của mình tại Đây!
  • 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


#22 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 14 June 2011 - 03:44 PM

Vâng. Em làm theo ví dụ trong tài liệu của bác ketxu, Anh xem qua xem giúp em được gì không? Thanks anh!
còn đây là file: http://www.mediafire...y5s5ms9996rvm91

Trong topic "Tiếng Việt trong trong hộp thoại Acad - Phần II" tôi đã bàn về vấn đề này. Nay xin tóm lược lại để bạn hiểu:
- File MNU, MNS không thể viết tiếng Việt bằng Unicode vì nó là file ANSI, nhưng file CUI thì viết tiếng Việt bằng Unicode được (dùng phím F4 để mở).
- Dựa vào đó, ta cứ viết file MNU, MNS bình thường. Sau đó tải menu bằng hàm (command “menuload”...), nó sẽ tạo ra file CUI. Trên cơ sở file CUI ta có 2 cách để có tiếng Việt trên Menu như sau:
+ Dùng lệnh CUI để sửa trực tiếp trên khung đối thoại xuất hiện của lệnh. Cách này đơn giản, dễ hình dung.
+ Dùng F4 để mở file CUI, chuyển qua Unicode, sửa lại bằng tiếng Việt, lưu và khởi động lại Cad.
* Chú ý:
1. Trong file CUI, các dòng trình đơn con xuất hiện tới 2 lần, trừ dòng trình đơn chính chỉ xuất hiện 1 lần. Ta chỉ sửa các dòng bắt đầu từ dòng trình đơn chính trở xuống cuối file là được). Cách này hơi rắc rối vì file CUI rất ư... lòng thòng.
2. Từ cad2006, khi tải MNS hoặc MNU thì nó "tự sinh" file CUI. Chính thằng CUI này mới hiển thị trên menu chứ không phải thằng MNS.
Đến giờ tôi vẫn chưa thấy có cách nào tốt hơn nên bạn tạm sử dụng 1 trong 2 cách trên vậy.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#23 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 14 June 2011 - 10:20 PM

*Thấy yêu cầu làm menu bằng lisp cũng hay hay mình làm 1 cái như này.
-Load cái Này về giải nén ra thư mục MENU chép vào ổ C.
-AP file themmenu.lsp lên sẽ được menu như này.
Hình đã gửi
-Mình chuẩn bị sẳn 3 lệnh:
+Tạo mục mới.
+Tạo đường phân cách.
+Xóa nội dung menu.
Chúc các bạn vui với ứng dụng này. Hạn chế là mình chưa tìm cách tạo menu sếp lớp và xóa từng mục menu được.
  • 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


#24 3d.decor

3d.decor

    biết vẽ arc

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

Đã gửi 15 June 2011 - 10:05 AM

pr nào rảnh hướng dần mình viết trực tiếp trên file menu được không như
*ttạo đề mục ---> [->tên đề mục]

*chu thich va lệnh ( lenh co bản và lisp )---> [câu chú thích]^C^C_lệnh;

*ngắt dòng ---> [--]

mình viết thử không hiểu nên hay lỗi lắm
sau đó chổ nào có autocad load cái là xong
kiểu như
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
..........
chú mình không thích kiểu
đề mục bố
- chú thích - lệnh
- chú thích - lẹnh
đề mục con
- chú thích - lệnh
- chú thích - lẹnh
đề mục cháu
- chú thích - lệnh
- chú thích - lẹnh
nhìn dài dòng và tìm lâu lắm

đuối file: MNS,MNU
  • 0

#25 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 15 June 2011 - 10:58 AM

pr nào rảnh hướng dần mình viết trực tiếp trên file menu được không như
*ttạo đề mục ---> [->tên đề mục]

*chu thich va lệnh ( lenh co bản và lisp )---> [câu chú thích]^C^C_lệnh;

*ngắt dòng ---> [--]

mình viết thử không hiểu nên hay lỗi lắm
sau đó chổ nào có autocad load cái là xong
kiểu như
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
đề mục
- chú thích - lệnh
- chú thích - lệnh
- chú thích - lệnh
..........
chú mình không thích kiểu
đề mục bố
- chú thích - lệnh
- chú thích - lẹnh
đề mục con
- chú thích - lệnh
- chú thích - lẹnh
đề mục cháu
- chú thích - lệnh
- chú thích - lẹnh
nhìn dài dòng và tìm lâu lắm

đuối file: MNS,MNU

-Theo cái sự biết của mình thì ko tạo ra 1 mục trong menu mà ko thực hiện lệnh nào để làm tiêu đề như của bạn thích cả. Mình làm theo cách là tạo 1 mục và cho nó mờ đi để ko chọn được để bạn dùng làm tiêu đề.
-Còn hướng dẩn viết trực tiếp mình nghỉ các bài mình giới thiệu bạn xem mà chưa cụ thể thì mình ko biết hướng dẩn cụ thể là như nào nửa.
-Mình cập nhật thêm chức năng tạo tiêu đề vào lisp bạn coi ưng ý thì mở file mns sau khi tạo ra coi cú pháp là hiểu ngay. (tiêu đề sẽ được hiểu thị chử in hoa và mờ ko chọn đc)
tải này!
  • 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


#26 3d.decor

3d.decor

    biết vẽ arc

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

Đã gửi 15 June 2011 - 05:08 PM

Trong topic "Tiếng Việt trong trong hộp thoại Acad - Phần II" tôi đã bàn về vấn đề này. Nay xin tóm lược lại để bạn hiểu:
- File MNU, MNS không thể viết tiếng Việt bằng Unicode vì nó là file ANSI, nhưng file CUI thì viết tiếng Việt bằng Unicode được (dùng phím F4 để mở).
- Dựa vào đó, ta cứ viết file MNU, MNS bình thường. Sau đó tải menu bằng hàm (command “menuload”...), nó sẽ tạo ra file CUI. Trên cơ sở file CUI ta có 2 cách để có tiếng Việt trên Menu như sau:
+ Dùng lệnh CUI để sửa trực tiếp trên khung đối thoại xuất hiện của lệnh. Cách này đơn giản, dễ hình dung.
+ Dùng F4 để mở file CUI, chuyển qua Unicode, sửa lại bằng tiếng Việt, lưu và khởi động lại Cad.
* Chú ý:
1. Trong file CUI, các dòng trình đơn con xuất hiện tới 2 lần, trừ dòng trình đơn chính chỉ xuất hiện 1 lần. Ta chỉ sửa các dòng bắt đầu từ dòng trình đơn chính trở xuống cuối file là được). Cách này hơi rắc rối vì file CUI rất ư... lòng thòng.
2. Từ cad2006, khi tải MNS hoặc MNU thì nó "tự sinh" file CUI. Chính thằng CUI này mới hiển thị trên menu chứ không phải thằng MNS.
Đến giờ tôi vẫn chưa thấy có cách nào tốt hơn nên bạn tạm sử dụng 1 trong 2 cách trên vậy.

thank pro
mò mẫm một chút mình cũng tạo được menu phía trên
cũng tiện phết
cảm ơn nhiều
  • 0

#27 tramanh2807

tramanh2807

    biết zoom

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

Đã gửi 15 June 2011 - 09:05 PM

moi nguoi giup em voi!
  • -2
- Đã bao giờ bạn thấy những tài liệu bạn download được trên Internet có ích cho bạn k? Chắc chắn là có phải k.
- Đã bao giờ bạn tự hỏi những tài liệu đó từ đâu mà có? Tất nhiên là những người đi trước chia sẻ cho chúng ta.
- Bạn có bao giờ nghĩ rằng sẽ chia sẻ những gì mình có cho những người khác, vì biết đâu đang có 1 ai đó đi tìm thứ bạn đang có.

Diễn đàn cadviet.com được tạo dựng và duy trì không vụ lợi,không vì mục đích cá nhân mà hoàn toàn vì mục đích phục vụ và chia sẻ cộng đồng. Một sân chơi hữu ích giành cho các bạn trẻ.

Vì vậy, Tôi kêu gọi các bạn hãy chia sẻ những gì mình có cho những người đang cần, cũng như người khác đã chia sẻ cho bạn lúc bạn cần. Hãy làm điều này như 1 lời cảm ơn, 1 lời tri ân đến những người đã chia sẻ cho chúng ta.

#28 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 15 June 2011 - 09:26 PM

moi nguoi giup em voi!

Nói chung là buồn khi đọc bài này. ko hiểu các bài trên của mình để làm gì nhỉ.
  • 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


#29 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 15 June 2011 - 10:07 PM

moi nguoi giup em voi!

Bạn Duy và tôi đã giúp bạn nhưng hình như bạn chả thèm ngó tới, lại còn than nữa là sao!
Bạn hãy đọc lại các phần trên xem, đừng vô tình như thế thì tội nghiệp cho ai muốn giúp bạn.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#30 tramanh2807

tramanh2807

    biết zoom

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

Đã gửi 16 June 2011 - 12:47 AM

Bạn Duy và tôi đã giúp bạn nhưng hình như bạn chả thèm ngó tới, lại còn than nữa là sao!
Bạn hãy đọc lại các phần trên xem, đừng vô tình như thế thì tội nghiệp cho ai muốn giúp bạn.

Xin lỗi 2 anh, đã giúp em nhiệt tình, mà bản thân em thì không ngó ngàng đến. do nóng vội mà em chỉ mở đến trang 1, không đọc trang 2.
Thành thật xin lỗi cadviet.
- Em sẽ cố gắng nhiều hơn, mong mọi người giúp đỡ.
  • 0
- Đã bao giờ bạn thấy những tài liệu bạn download được trên Internet có ích cho bạn k? Chắc chắn là có phải k.
- Đã bao giờ bạn tự hỏi những tài liệu đó từ đâu mà có? Tất nhiên là những người đi trước chia sẻ cho chúng ta.
- Bạn có bao giờ nghĩ rằng sẽ chia sẻ những gì mình có cho những người khác, vì biết đâu đang có 1 ai đó đi tìm thứ bạn đang có.

Diễn đàn cadviet.com được tạo dựng và duy trì không vụ lợi,không vì mục đích cá nhân mà hoàn toàn vì mục đích phục vụ và chia sẻ cộng đồng. Một sân chơi hữu ích giành cho các bạn trẻ.

Vì vậy, Tôi kêu gọi các bạn hãy chia sẻ những gì mình có cho những người đang cần, cũng như người khác đã chia sẻ cho bạn lúc bạn cần. Hãy làm điều này như 1 lời cảm ơn, 1 lời tri ân đến những người đã chia sẻ cho chúng ta.

#31 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 06 August 2011 - 11:17 PM

*Biết rằng nhiều bạn không khuyến khích việc viết lisp phục vụ việc tạo menu. Nhưng đã lỡ theo nên mình làm cho nó ra ngô ra khoai luôn. Nay mình hoàn thiện lisp tạo nemu giúp các bạn ko rành vẩn tạo được menu bằng thao tác trực quan và dể hiểu.
-Bạn load file này về và copy vào thư mục menu trong ổ E. (do mình gặp trở ngại trong việc xoá file bằng lisp nên bị hạn chế phải thư mục cố định mới được).
-Load nó lên gỏ lệnh VMN thì sẽ có 1 menu mới cho bạn: Ban đầu nó có tên duy782006 (quảng cáo tí) bạn dùng lệnh DTMN hoặc chọn trên menu để đổi tên theo ý bạn.
-Khi load lên nó sẽ xuất hiện menu sử dụng:
+Ban đầu nó chỉ có 1 mục đó là giới thiệu lisp menu (trong quá trình biên tập bạn nên đổi nó sang chức năng khác vì đây là mục khởi thuỷ mình tạo để có đường vào chức năng biên tập)
+Phía dưới menu sử dụng có chức năng gọi menu biên tập (mục này là cố định lisp không hổ trợ chỉnh sửa mục này).
-Khi gọi menu biên tập lisp sẽ tắt menu sử dụng và thay menu biên tập vào:
+Menu biên tập có các mục giống hệt menu sử dụng trong phần hiển thị tiêu đề chỉ khác phía sau có chử biên tập bạn chọn mục nào thì chức năng biên tập sẽ cho các lựa chọn:
Gỏ C: Chèn mục đơn vào bên trên vị trí mục vừa chọn.
Gỏ L: Chèn mục xếp lớp vào vào bên trên vị trí mục vừa chọn (lưu ý rằng lisp hổ trợ việc lồng các mục xếp lớp vào nhau nhưng chỉ giới hạn trong 5 cấp vì mình nghỉ như thế là quá đủ cho nhu cầu) có một hạn chế là lisp ko kiểm tra tính sẳn có của 1 menu xếp lớp nên nếu bạn tạo 1 mục xếp lớp có tiêu đề trùng tiêu đề menu xếp lớp hiện có thì menu cũ sẽ được thay thế bằng menu mới. Mổi mục xếp lớp tại menu biên tập sẽ có 1 mục hổ trợ xoá bỏ menu này (mục này bạn không thể thay đổi nội dung và không xuất hiện bên menu sử dụng).
Gỏ P: Chèn đường phân cách bên trên vị trí mục vừa chọn. Trên mổi đường phân cách trong menu biên tập sẽ có 1 mục xoá đường phân cách giúp việc xoá đường phân cách bêb dưới mà không ảnh hưởng đến các đường phân cách khác (mục này bạn không thể thay đổi nội dung và không xuất hiện bên menu sử dụng).
Gỏ S: Sửa mục chọn bằng cách nhập nội dung hiển thị và tên lệnh mới.
Gỏ X: Xoá bỏ mục chọn (lưu ý rằng kkhông nên xoá bỏ toàn bộ các mục đơn vì như thế sẽ ko có mục khởi thuỷ giúp bạn thực hiện chức năng biên tập).
*Tại menu biên tập còn hổ trợ các chức năng:
-ĐTNM: Đổi tên menu chính.
-SLMN: Sao lưu menu hiện hành.
-GLMN: Gọi lại menu đã sao lưu.
-TLMN: Tạo mới menu (lúc này menu quay về trạng thái ban đầu như khi vừa mới gọi lệnh VMN).
-XBMN: Xoá bỏ hoàn toàn menu khỏi cad của bạn
*Khi nào cần sử dụng chức năng biên tập thì bạn hãy load lisp còn bình thường menu hoạt động mà ko cần lip (chỉ là chức năng gọi menu biên tập sẽ không thực hiện được).
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xl ()
(setq filemenuchinhp1xl (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xl (read-line filemenuchinhp1xl))
(setq noidungnguyen noidungmenuchinhp1xl)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xla))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))

(close filemenuchinhp1xl)
(write-line (strcat "[<---]") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xla ()
(setq filemenuchinhp1xla (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xla (read-line filemenuchinhp1xla))
(setq noidungnguyen noidungmenuchinhp1xla)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xlb))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))

(close filemenuchinhp1xla)
(write-line (strcat "[<---]") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xlb ()
(setq filemenuchinhp1xlb (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xlb (read-line filemenuchinhp1xlb))
(setq noidungnguyen noidungmenuchinhp1xlb)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xlc))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))

(close filemenuchinhp1xlb)
(write-line (strcat "[<---]") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xlc ()
(setq filemenuchinhp1xlc (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xlc (read-line filemenuchinhp1xlc))
(setq noidungnguyen noidungmenuchinhp1xlc)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xld))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))

(close filemenuchinhp1xlc)
(write-line (strcat "[<---]") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xld ()
(setq filemenuchinhp1xld (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xld (read-line filemenuchinhp1xld))
(setq noidungnguyen noidungmenuchinhp1xld)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xle))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))

(close filemenuchinhp1xld)
(write-line (strcat "[<---]") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop1xle ()
(setq filemenuchinhp1xle (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp1xle (read-line filemenuchinhp1xle))
(setq noidungnguyen noidungmenuchinhp1xle)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))

(close filemenuchinhp1xle)
(write-line (strcat "[<---]") filemns)
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xl ()
(setq filemenuchinhp2xl (open (strcat dauduongdan tenfilemodoc) "r"))
(while (setq noidungmenuchinhp2xl (read-line filemenuchinhp2xl))
(setq noidungnguyen noidungmenuchinhp2xl)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodoca (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthia ndtruoc)
(docghigiuapop2xla))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xl "\"" "\;" "\"" tenfilemodoc "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xl "\"" "\;" "\"" tenfilemodoc "\"" "\;") filemns))
))
))

(close filemenuchinhp2xl)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthi " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthi "@menuxeplop" "\"" "\;" "\"" "/menuchinh.txt" "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xla ()
(setq filemenuchinhp2xla (open (strcat dauduongdan tenfilemodoca) "r"))
(while (setq noidungmenuchinhp2xla (read-line filemenuchinhp2xla))
(setq noidungnguyen noidungmenuchinhp2xla)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodocb (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthib ndtruoc)
(docghigiuapop2xlb))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xla "\"" "\;" "\"" tenfilemodoca "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xla "\"" "\;" "\"" tenfilemodoca "\"" "\;") filemns))
))
))

(close filemenuchinhp2xla)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthia " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthia "@menuxeplop" "\"" "\;" "\"" tenfilemodoc "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xlb ()
(setq filemenuchinhp2xlb (open (strcat dauduongdan tenfilemodocb) "r"))
(while (setq noidungmenuchinhp2xlb (read-line filemenuchinhp2xlb))
(setq noidungnguyen noidungmenuchinhp2xlb)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodocc (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthic ndtruoc)
(docghigiuapop2xlc))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xlb "\"" "\;" "\"" tenfilemodocb "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xlb "\"" "\;" "\"" tenfilemodocb "\"" "\;") filemns))
))
))

(close filemenuchinhp2xlb)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthib " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthib "@menuxeplop" "\"" "\;" "\"" tenfilemodoca "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xlc ()
(setq filemenuchinhp2xlc (open (strcat dauduongdan tenfilemodocc) "r"))
(while (setq noidungmenuchinhp2xlc (read-line filemenuchinhp2xlc))
(setq noidungnguyen noidungmenuchinhp2xlc)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodocd (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthid ndtruoc)
(docghigiuapop2xld))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xlc "\"" "\;" "\"" tenfilemodocc "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xlc "\"" "\;" "\"" tenfilemodocc "\"" "\;") filemns))
))
))

(close filemenuchinhp2xlc)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthic " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthic "@menuxeplop" "\"" "\;" "\"" tenfilemodocb "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xld ()
(setq filemenuchinhp2xld (open (strcat dauduongdan tenfilemodocd) "r"))
(while (setq noidungmenuchinhp2xld (read-line filemenuchinhp2xld))
(setq noidungnguyen noidungmenuchinhp2xld)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodoce (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthie ndtruoc)
(docghigiuapop2xle))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xld "\"" "\;" "\"" tenfilemodocd "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xld "\"" "\;" "\"" tenfilemodocd "\"" "\;") filemns))
))
))

(close filemenuchinhp2xld)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthid " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthid "@menuxeplop" "\"" "\;" "\"" tenfilemodocc "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun docghigiuapop2xle ()
(setq filemenuchinhp2xle (open (strcat dauduongdan tenfilemodoce) "r"))
(while (setq noidungmenuchinhp2xle (read-line filemenuchinhp2xle))
(setq noidungnguyen noidungmenuchinhp2xle)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2xle "\"" "\;" "\"" tenfilemodoce "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmnkxl" "\;" "\"" noidungmenuchinhp2xle "\"" "\;" "\"" tenfilemodoce "\"" "\;") filemns))
))

(close filemenuchinhp2xle)
(write-line (strcat "[---]") filemns)
(write-line (strcat "[<-Xoa menu xep lop " tenmnxlhthie " nay]^C^C_" "xmnxl" "\;" "\"" tenmnxlhthie "@menuxeplop" "\"" "\;" "\"" tenfilemodocd "\"" "\;") filemns)
)

;;;;;;;;;;;;;;;;;
(defun c:vmn ()
(doanvmn))
;;;;;;;;;;;;;
(setq dauduongdan "E:/menu")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun doanvmn ()

(setq filemns (open (strcat dauduongdan "/dslenh.mns") "w"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;taofilechuamenuchinh
(setq tinhtrangfilechinh (findfile (strcat dauduongdan "/menuchinh.txt")))
(cond
((= nil tinhtrangfilechinh)
(setq taofilemenuchinh (open (strcat dauduongdan "/menuchinh.txt") "w"))
(write-line "Gioi thieu menu @gtmn" taofilemenuchinh)
(close taofilemenuchinh)
))

;;;;;;;;;;;;;;;;;;;;;;;;;;;taofilechuatenmenu
(setq tinhtrangfilechinh (findfile (strcat dauduongdan "/tenmenu.txt")))
(cond
((= nil tinhtrangfilechinh)
(setq taofiletenmenu (open (strcat dauduongdan "/tenmenu.txt") "w"))
(write-line "Menu Duy782006" taofiletenmenu)
(close taofiletenmenu)
))

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietdaupop1
(setq mofiletieude (open (strcat dauduongdan "/tenmenu.txt") "r"))
(setq noidungtieude (read-line mofiletieude))
(close mofiletieude)
(write-line "***MENUGROUP=DSLenh" filemns)
(write-line "***POP1" filemns)
(write-line (strcat "ID_tieude [" noidungtieude "]") filemns)

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietgiuapop1
(setq filemenuchinhp1 (open (strcat dauduongdan "/menuchinh.txt") "r"))
(while (setq noidungmenuchinhp1 (read-line filemenuchinhp1))
(setq noidungnguyen noidungmenuchinhp1)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop") (setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt")) (write-line (strcat "[->" ndtruoc "]") filemns) (docghigiuapop1xl))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t(" ndsau ")]^C^C_" ndsau) filemns))
))
))
(close filemenuchinhp1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietcuoipop1
(write-line "[---]" filemns)
(write-line "[Goi menu bien tap \t(BTMN)]^C^C_btmn" filemns)

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietdaupop2
(write-line "***POP2" filemns)
(write-line (strcat "ID_tieude [" noidungtieude "]") filemns)

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietgiuapop2
(setq filemenuchinhp2 (open (strcat dauduongdan "/menuchinh.txt") "r"))
(while (setq noidungmenuchinhp2 (read-line filemenuchinhp2))
(setq noidungnguyen noidungmenuchinhp2)
(setq dodainguyen (strlen noidungnguyen))
(setq dodainguyenl dodainguyen)
(doc@)

(cond
((= ndsau "menuxeplop")
(setq tenfilemodoc (strcat "/menuxl" ndtruoc ".txt"))
(write-line (strcat "[->" ndtruoc "]") filemns)
(setq tenmnxlhthi ndtruoc)
(setq tenfilemoxoa "/menuchinh.txt")
(docghigiuapop2xl))
((/= ndsau "menuxeplop")

(cond
((= ndsau "mnduongphancach") (write-line (strcat "[Xoa duong phan cach]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2 "\"" "\;" "\"" "/menuchinh.txt" "\"" "\;" "\"" "x" "\"" "\;") filemns) (write-line "[---]" filemns))
((/= ndsau "mnduongphancach")

(write-line (strcat "[" ndtruoc "\t<<Bien Tap]^C^C_" "xmn" "\;" "\"" noidungmenuchinhp2 "\"" "\;" "\"" "/menuchinh.txt" "\"" "\;") filemns))
))
))
(close filemenuchinhp2)

;;;;;;;;;;;;;;;;;;;;;;;;;;;vietcuoipop2
(write-line "[---]" filemns)
(write-line "[DOI TEN MENU CHINH \t(DTMN)]^C^C_dtmn" filemns)
(write-line "[xOA BO MENU \t(XBMN)]^C^C_xbmn" filemns)
(write-line "[LAM LAI MENU \t(TLMN)]^C^C_tlmn" filemns)
(write-line "[LUU MENU HIEN TAI \t(SLMN)]^C^C_slmn" filemns)
(write-line "[LOAD MENU DA LUU \t(GLMN)]^C^C_glmn" filemns)
(write-line "[---]" filemns)
(write-line "[Goi menu su dung \t(SDMN)]^C^C_sdmn" filemns)


;;;;;;;;;;;;;;;;;;;;;;;;;;;ketthucvietmns
(close filemns)

(command "_menuload" (strcat dauduongdan "/dslenh.mns"))
(menucmd "P13=+DSlenh.pop1")
(princ)
)


;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
(Defun doc@ ( )

(setq dodainguyen (- dodainguyen 1))
(setq noidungdocdc (substr noidungnguyen dodainguyen 1))
(if (/= noidungdocdc "@")
(doc@)
)
(IF (= noidungdocdc "@") (PROGN
(setq ndtruoc (substr noidungnguyen 1 (- dodainguyen 1)))
(setq ndsau (substr noidungnguyen (+ dodainguyen 1) (- dodainguyenl dodainguyen)))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:xbmn ()
(command "_menuunload" "DSLenh")
(command "SHELL" (strcat "del " "E:\\menu\\dslenh.*" ))
(command "DELAY" "3000" "")
(command "SHELL" (strcat "del " "E:\\menu\\*.txt" ))
(command "DELAY" "3000" "")
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tlmn ()
(command "_menuunload" "DSLenh")
(command "SHELL" (strcat "del " "E:\\menu\\dslenh.*" ))
(command "DELAY" "3000" "")
(command "SHELL" (strcat "del " "E:\\menu\\*.txt" ))
(command "DELAY" "3000" "")
(doanvmn)
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:slmn ()
(command "SHELL" "MD E:\\menu\\saoluumenu" )
(command "DELAY" "1000" "")
(command "SHELL" "copy E:\\menu\\*.txt E:\\menu\\saoluumenu\\" )
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:glmn ()
(command "_menuunload" "DSLenh")
(command "SHELL" (strcat "del " "E:\\menu\\dslenh.*" ))
(command "DELAY" "3000" "")
(command "SHELL" (strcat "del " "E:\\menu\\*.txt" ))
(command "DELAY" "3000" "")
(command "SHELL" "copy E:\\menu\\saoluumenu\\*.txt E:\\menu\\" )
(command "DELAY" "3000" "")
(doanvmn)
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:btmn ()
(command "_menuunload" "DSLenh")
(command "_menuload" (strcat dauduongdan "/dslenh.mns"))
(menucmd "P13=+DSlenh.pop2")
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:sdmn ()
(command "_menuunload" "DSLenh")
(command "_menuload" (strcat dauduongdan "/dslenh.mns"))
(menucmd "P13=+DSlenh.pop1")
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:dtmn ()
(setq tenmoi (getstring "\nNhap ten menu:"))
(command "_menuunload" "DSLenh")
(setq mofiletieude (open (strcat dauduongdan "/tenmenu.txt") "w"))
(write-line tenmoi mofiletieude)
(close mofiletieude)
(doanvmn)
(Princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:xmn ()
(setq noidungtimxoa (getstring "\nNhap:"))
(setq filedocsua (getstring "\nNhap:"))

(setq mofilegiua (open (strcat dauduongdan filedocsua) "r"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "w"))
(setq kieutacdongmenu (strcase (getstring "\nChen muc don/ chen muc xep Lop/ Sua muc/ Xoa muc/ chen duong Phan cach:")))

(cond
((= kieutacdongmenu "X")
(while (setq noidunggiua (read-line mofilegiua))
(if (/= noidungtimxoa noidunggiua)
(write-line noidunggiua mofiletrunggian)
)
)
);dongcondxoamenu
((= kieutacdongmenu "S")
(setq noidunghienthi (getstring 5"\nNhap noi dung hien thi tren menu:"))
(setq tenlenh (getstring "\nNhap ten lenh:"))
(setq chuoivietthem (strcat noidunghienthi "@" tenlenh))

(while (setq noidunggiua (read-line mofilegiua))
(if (/= noidungtimxoa noidunggiua)
(write-line noidunggiua mofiletrunggian)
)
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
)
);dongcondchinhmenu
((= kieutacdongmenu "C")
(setq noidunghienthi (getstring 5"\nNhap noi dung hien thi tren menu:"))
(setq tenlenh (getstring "\nNhap ten lenh:"))
(setq chuoivietthem (strcat noidunghienthi "@" tenlenh))

(while (setq noidunggiua (read-line mofilegiua))
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
(write-line noidunggiua mofiletrunggian)
)
);dongcondthemmenu

((= kieutacdongmenu "L")
(setq noidunghienthi (getstring 5"\nNhap tieu de menu xep lop nay:"))
(setq chuoivietthem (strcat noidunghienthi "@menuxeplop"))

(while (setq noidunggiua (read-line mofilegiua))
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
(write-line noidunggiua mofiletrunggian)
)
(setq mofilexeplopghi (open (strcat dauduongdan "/menuxl" noidunghienthi ".txt") "w"))
(write-line "Gioi thieu menu xep lop@gtmnxl" mofilexeplopghi)
(close mofilexeplopghi)
);dongcondthemmenuxeplop

((= kieutacdongmenu "P")
(setq thoigianhienhanh (menucmd "M=$(getvar, date)"))
(setq chuoivietthem (strcat thoigianhienhanh "@mnduongphancach"))

(while (setq noidunggiua (read-line mofilegiua))
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
(write-line noidunggiua mofiletrunggian)
)
);dongcondthemmenuphancach



);dongcond

(close mofilegiua)
(close mofiletrunggian)

(setq mofilegiua (open (strcat dauduongdan filedocsua) "w"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "r"))
(while (setq noidunggiua (read-line mofiletrunggian))
(write-line noidunggiua mofilegiua)
)
(close mofilegiua)
(close mofiletrunggian)
(command "SHELL" (strcat "del " "E:\\menu\\trunggian.txt" ))
;(command "SHELL" (strcat "del " dauduongdan "/trunggian.txt" ))

(command "_menuunload" "DSLenh")
(doanvmn)

(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:xmnkxl ()
(setq noidungtimxoa (getstring "\nNhap:"))
(setq filedocsua (getstring "\nNhap:"))

(setq mofilegiua (open (strcat dauduongdan filedocsua) "r"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "w"))
(setq kieutacdongmenu (strcase (getstring "\nChen muc don/ Sua muc/ Xoa muc/ chen duong Phan cach:")))

(cond
((= kieutacdongmenu "X")
(while (setq noidunggiua (read-line mofilegiua))
(if (/= noidungtimxoa noidunggiua)
(write-line noidunggiua mofiletrunggian)
)
)
);dongcondxoamenu
((= kieutacdongmenu "S")
(setq noidunghienthi (getstring 5"\nNhap noi dung hien thi tren menu:"))
(setq tenlenh (getstring "\nNhap ten lenh:"))
(setq chuoivietthem (strcat noidunghienthi "@" tenlenh))

(while (setq noidunggiua (read-line mofilegiua))
(if (/= noidungtimxoa noidunggiua)
(write-line noidunggiua mofiletrunggian)
)
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
)
);dongcondchinhmenu
((= kieutacdongmenu "C")
(setq noidunghienthi (getstring 5"\nNhap noi dung hien thi tren menu:"))
(setq tenlenh (getstring "\nNhap ten lenh:"))
(setq chuoivietthem (strcat noidunghienthi "@" tenlenh))

(while (setq noidunggiua (read-line mofilegiua))
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
(write-line noidunggiua mofiletrunggian)
)
);dongcondthemmenu

((= kieutacdongmenu "P")
(setq thoigianhienhanh (menucmd "M=$(getvar, date)"))
(setq chuoivietthem (strcat thoigianhienhanh "@mnduongphancach"))

(while (setq noidunggiua (read-line mofilegiua))
(if (= noidungtimxoa noidunggiua)
(write-line chuoivietthem mofiletrunggian)
)
(write-line noidunggiua mofiletrunggian)
)
);dongcondthemmenuphancach


);dongcond

(close mofilegiua)
(close mofiletrunggian)

(setq mofilegiua (open (strcat dauduongdan filedocsua) "w"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "r"))
(while (setq noidunggiua (read-line mofiletrunggian))
(write-line noidunggiua mofilegiua)
)
(close mofilegiua)
(close mofiletrunggian)
(command "SHELL" (strcat "del " "E:\\menu\\trunggian.txt" ))
;(command "SHELL" (strcat "del " dauduongdan "/trunggian.txt" ))

(command "_menuunload" "DSLenh")
(doanvmn)

(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:xmnxl ()
(setq noidungtimxoa (getstring "\nNhap:"))
(setq filedocsua (getstring "\nNhap:"))

(setq mofilegiua (open (strcat dauduongdan filedocsua) "r"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "w"))

(while (setq noidunggiua (read-line mofilegiua))
(if (/= noidungtimxoa noidunggiua)
(write-line noidunggiua mofiletrunggian)
)
)

(close mofilegiua)
(close mofiletrunggian)

(setq mofilegiua (open (strcat dauduongdan filedocsua) "w"))
(setq mofiletrunggian (open (strcat dauduongdan "/trunggian.txt") "r"))
(while (setq noidunggiua (read-line mofiletrunggian))
(write-line noidunggiua mofilegiua)
)
(close mofilegiua)
(close mofiletrunggian)
(command "SHELL" (strcat "del " "E:\\menu\\trunggian.txt" ))
;(command "SHELL" (strcat "del " dauduongdan "/trunggian.txt" ))

(command "_menuunload" "DSLenh")
(doanvmn)

(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun c:gtmn ( )
(alert "*Tien ich bien tap va su dung menu truc quan.
*Co hai menu song song voi cac de muc giong nhau:
-Menu su dung: Dung nhu menu binh thuong.
-Menu bien tap: Co chuc nang bien tap, khi ban chon bien tap muc nao thi co 5 lua chon cho ban:
+Go C: Chen muc menu don tren muc vua chon.
+Go L: Chen muc menu xep lop tren muc vua chon.
+Go P: Chen duong phan cach tren muc vua chon.
+Go S: Chinh sua muc vua chon.
+Go X: Xoa bo muc vua chon khoi menu.
*Menu su dung co muc cuoi cung dung goi menu bien tap.
*Menu bien tap co muc cuoi cung dung goi menu su dung va cac chuc nang:
-Doi ten menu chinh.
-Xoa bo menu.
-Sao luu menu.
-Goi menu da luu.
-Khoi tao lai menu ban dau")
(princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun c:gtmnxl ( )
(alert "-Khi khoi tao mot menu xep lop minh mac dinh cho no mot muc don hien hanh.
-Tu muc don nay ban dung chuc nang bien tap de co duoc menu ung y.
-Minh ho tro ban viec tao ra cac menu xep lop long trong nhau.
-Gioi han long menu xep lop o day minh goi han trong 5 cap.
-Khi ban tao 2 menu xep lop co ten trung nhau thi noi dung cua menu tao sau se thay the menu truoc.")
(princ))


  • 4

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


#32 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 07 August 2011 - 12:05 AM

Ôi, phong cách code của bác DUy không lẫn đi đâu được ^^ Thì ra bác áp dụng cái Date vào cái này
Phải tick thank gấp với công trình 750 line này của bác thôi. Chúc bác luôn vui khỏe và sáng tạo :wub:

P/S : e hỏi mí, sao bác không tạo cái E:\\menu\\ sau khi người dùng load lisp hoặc chạy 1 lệnh nào đó của lisp lần đầu tiên ạ ?
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#33 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 August 2011 - 09:07 AM

*Biết rằng nhiều bạn không khuyến khích việc viết lisp phục vụ việc tạo menu. Nhưng đã lỡ theo nên mình làm cho nó ra ngô ra khoai luôn.
*do mình gặp trở ngại trong việc xoá file bằng lisp nên bị hạn chế phải thư mục cố định mới được.
*có một hạn chế là lisp ko kiểm tra tính sẳn có của 1 menu xếp lớp nên nếu bạn tạo 1 mục xếp lớp có tiêu đề trùng tiêu đề menu xếp lớp hiện có thì menu cũ sẽ được thay thế bằng menu mới.

1). Rất chia sẻ với Bác vì lòng đam mê!
2). Hình như lsp có hàm delete file mà Bác? Thấy có (vl-file-delete) mà chưa sử dụng.
3). Hình như lsp có thể kiểm tra 1 dòng có tồn tại trong file hay chưa mà Bác?
Thân thương!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#34 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 August 2011 - 11:20 AM

1). Rất chia sẻ với Bác vì lòng đam mê!
2). Hình như lsp có hàm delete file mà Bác? Thấy có (vl-file-delete) mà chưa sử dụng.
3). Hình như lsp có thể kiểm tra 1 dòng có tồn tại trong file hay chưa mà Bác?
Thân thương!

1. Hi hi thanhk bác.
2. Hồi giờ chưa biết để thử xem.
3. Duy tổ chức theo kiểu mổi menu xếp lớp được lưu ra 1 file txt. nên chỉ cần tìm xem fiel đã tồn tại hay chưa cũng được.
@ALL: Nhưng đoạn này công việc nhiều mà lỡ viết nó nên bám theo mất mấy đêm rồi. Nay coi như tạm ổn, còn vài điểm có thề hoàn thiện thêm như các bác nêu trên nhưng mình tạm dừng lại để cày kiếm chút xiền chứ dạo này chi nhiều thu ít <_< . Khi nào rãnh tiếp tục chỉn theo ý các bác. Nếu code ko quá rồi rắm đối với các bác thì bác nào có hứng nhờ hoạn thiện thêm cho em nó với.
  • 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