Đến nội dung


Hình ảnh
- - - - -

[Quà biếu] Tạo Menu lệnh thường dùng


  • Please log in to reply
35 replies to this topic

#21 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2011 - 11:00 AM

@Doan van Ha: Nhờ bác viết giúp hàm:
Xoá bỏ dòng có nội dung doidung trong file txt tenfiletxt

Ủa, Bác nói rõ hơn chút! Đâu có file txt đâu nhỉ?
  • 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.


#22 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 26 July 2011 - 11:07 AM

Ủa, Bác nói rõ hơn chút! Đâu có file txt đâu nhỉ?

Hị hị ý là như này:
Mình có file *.txt đường dẩn xác định mình gán cho biến filetxt. Và nội dung dòng gán cho biến noidung. Biết rằng nội dung dòng này chắc chắn có trong file. Giờ muốn xoá, sửa nội dung, chèn thêm phía trên, chèn thêm phía dưới. Nhưng nhờ bác viết đoạn xoá còn các cái khác mình bắt chước làm theo.
  • 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


#23 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2011 - 11:34 AM

Hị hị ý là như này:
Mình có file *.txt đường dẩn xác định mình gán cho biến filetxt. Và nội dung dòng gán cho biến noidung. Biết rằng nội dung dòng này chắc chắn có trong file. Giờ muốn xoá, sửa nội dung, chèn thêm phía trên, chèn thêm phía dưới. Nhưng nhờ bác viết đoạn xoá còn các cái khác mình bắt chước làm theo.

Cách làm của tôi như thế này:
1). Mở file txt để read.
2). Duyệt từng dòng, nếu dòng nào không trùng với "noidung" thì cho nó vào 1 list, đóng file.
3). Mở txt để write từng dòng từ list, đóng file. Thế là được file có "noidung" đã bị xóa.
Nếu Bác bận lắm thì chiều nay tôi viết giùm bác vậy.
Thân thương!
  • 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.


#24 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 26 July 2011 - 01:06 PM

Cách làm của tôi như thế này:
1). Mở file txt để read.
2). Duyệt từng dòng, nếu dòng nào không trùng với "noidung" thì cho nó vào 1 list, đóng file.
3). Mở txt để write từng dòng từ list, đóng file. Thế là được file có "noidung" đã bị xóa.
Nếu Bác bận lắm thì chiều nay tôi viết giùm bác vậy.
Thân thương!

-Vốn mình làm được nhưng đoạn tạo list lại ko biết nên phải ghi qua file trung gian xong ghi lại qua thấy lòng thòng mà bác lại làm đc chuyện này nên nhờ để học luôn việc tạo list.
  • 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


#25 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2011 - 02:23 PM

-Vốn mình làm được nhưng đoạn tạo list lại ko biết nên phải ghi qua file trung gian xong ghi lại qua thấy lòng thòng mà bác lại làm đc chuyện này nên nhờ để học luôn việc tạo list.

Trước đây tôi hay làm như Bác (tức là tạo file tạm trung gian sau đó delete nó). Sau này tôi chuyển qua list cho khỏe hơn. Xin gởi Bác.

; (setq filetxt "D:\\...\\Duy.txt")
; (setq noidung "efghk")
(defun XOA_DONG(filetxt noidung / dstxt file PR n)
(setq file (open filetxt "r"))
(setq dstxt '())
(while (setq PR (read-line file))
(if (/= PR noidung)
(setq dstxt (reverse (cons PR (reverse dstxt))))))
(close file)
(setq file (open filetxt "w"))
(foreach n dstxt
(write-line n file))
(close file)
(princ))

  • 2

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


#26 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 July 2011 - 03:02 PM

Tuyệt :wub:
Bác DVH có thể thêm 1 dòng ktra file, thêm kết quả trả về (cho đúng nghĩa là function) thì đẹp.
List dstxt có thể reverse sau khi đã có list hoàn thiện, tránh đảo đi đảo lại nếu gặp file có quá nhiều dòng ^^
Và tất nhiên cũng cần ghi chú Ansi file, vì ghi như thế này là con đường 1 chiều, user có thể ôm hận nếu gặp unicode file ^^
Chúc bác ngày 1 đẻ ra nhiều thứ hay để bọn e mót :wub:
  • 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


#27 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 26 July 2011 - 03:22 PM

Trước đây tôi hay làm như Bác (tức là tạo file tạm trung gian sau đó delete nó). Sau này tôi chuyển qua list cho khỏe hơn. Xin gởi Bác.


; (setq filetxt "D:\\...\\Duy.txt")
; (setq noidung "efghk")
(defun XOA_DONG(filetxt noidung / dstxt file PR n)
(setq file (open filetxt "r"))
(setq dstxt '())
(while (setq PR (read-line file))
(if (/= PR noidung)
(setq dstxt (reverse (cons PR (reverse dstxt))))))
(close file)
(setq file (open filetxt "w"))
(foreach n dstxt
(write-line n file))
(close file)
(princ))


Sao cad nó báo đối số quá ít vậy bác:
(defun XOA_DONG(filetxt noidung / dstxt file PR n)

(setq filetxt "c:\\testthu.txt")
(setq noidung "dongnaysua")

(setq file (open filetxt "r"))
(setq dstxt '())
(while (setq PR (read-line file))
(if (/= PR noidung)
(setq dstxt (reverse (cons PR (reverse dstxt))))))
(close file)
(setq file (open filetxt "w"))
(foreach n dstxt
(write-line n file))
(close file)
(princ))

  • 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


#28 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 July 2011 - 03:26 PM

Tuyệt :wub:
Bác DVH có thể thêm 1 dòng ktra file, thêm kết quả trả về (cho đúng nghĩa là function) thì đẹp.
List dstxt có thể reverse sau khi đã có list hoàn thiện, tránh đảo đi đảo lại nếu gặp file có quá nhiều dòng ^^
Và tất nhiên cũng cần ghi chú Ansi file, vì ghi như thế này là con đường 1 chiều, user có thể ôm hận nếu gặp unicode file ^^
Chúc bác ngày 1 đẻ ra nhiều thứ hay để bọn e mót :wub:

1). "Tuyệt", nhưng cao thủ võ lâm quên bấm "+".
2). Các góp ý đều đúng. Còn sửa thì mọi người tự sửa cho vui cửa vui nhà, vì không khó. Post lên lại hao đất.
3). Thậm chí trong hàm còn dư dòng (setq dstxt '())... Tất cả đều do viết vội, mong sorry.
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.


#29 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 26 July 2011 - 03:42 PM

Cách làm của tôi như thế này:
1). Mở file txt để read.
2). Duyệt từng dòng, nếu dòng nào không trùng với "noidung" thì cho nó vào 1 list, đóng file.
3). Mở txt để write từng dòng từ list, đóng file. Thế là được file có "noidung" đã bị xóa.
Nếu Bác bận lắm thì chiều nay tôi viết giùm bác vậy.
Thân thương!

Cái dòng (close file) cũng bị dư, có thể bỏ được, nhưng không ảnh hưởng gì :rolleyes:
.....
(while (setq PR (read-line file))
(if (/= PR noidung)
(setq dstxt (reverse (cons PR (reverse dstxt))))))
(close file)
(setq file (open filetxt "w"))
.....
@Anh Duy782006: Anh kiểm tra lại xem. Lisp chạy không có lỗi
  • 1

#30 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 July 2011 - 04:11 PM

1). "Tuyệt", nhưng cao thủ võ lâm quên bấm "+".
2). Các góp ý đều đúng. Còn sửa thì mọi người tự sửa cho vui cửa vui nhà, vì không khó. Post lên lại hao đất.
3). Thậm chí trong hàm còn dư dòng (setq dstxt '())... Tất cả đều do viết vội, mong sorry.
Thân thương!

Các ý kiến đều đúng, nhưng cao thủ đại nội cũng không bấm "+" : :lol:
Hehe, đùa vậy thôi.
Ket Cũng góp ý luôn là trong phần loại bỏ biến cục bộ, n bị dư, bởi bản thân n đã bị khử thành nil ngay sau foreach. Mình thấy rất nhiều người cẩn thận loại bỏ biến này, mặc dù bản thân nó hem còn ^^
  • 1

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


#31 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 July 2011 - 10:12 AM

Đánh lệnh CUI được window như sau:
Hy vọng giúp được bạn!

(Hình lấy trên net)
Hình đã gửi

Cám ơn bạn Detailing!
Mặc dầu chỉ "gắp, bỏ, thả, gõ" thôi, nhưng để soạn thảo một menu các lệnh thường dùng bằng cách dùng lệnh CUI thì cũng khá nhiêu khê. Vì vậy, tôi đã mày mò để ghi lại từng bước (xem link), để ai cần thì dùng, còn ai rành 6 câu rồi thì cũng bỏ quá cho, đừng chấp trách làm gì.
http://www.cadviet.c..._bang_cui_1.doc
Theo thiển nghĩ của tôi: xem ra, nếu rành MNS (MNU) thì soạn thảo Menu là nhanh nhất, chứ dùng CUI thì cũng không nhanh lắm.
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.


#32 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 27 July 2011 - 10:46 AM

Cám ơn bạn Detailing!
Mặc dầu chỉ "gắp, bỏ, thả, gõ" thôi, nhưng để soạn thảo một menu các lệnh thường dùng bằng cách dùng lệnh CUI thì cũng khá nhiêu khê. Vì vậy, tôi đã mày mò để ghi lại từng bước (xem link), để ai cần thì dùng, còn ai rành 6 câu rồi thì cũng bỏ quá cho, đừng chấp trách làm gì.
.........
Theo thiển nghĩ của tôi: xem ra, nếu rành MNS (MNU) thì soạn thảo Menu là nhanh nhất, chứ dùng CUI thì cũng không nhanh lắm.
Thân thương!

Tue_NV nghĩ điều ngược lại : Lệnh Cui, nó nhanh hơn là sử dụng cách soạn thảo MNU vì nó rất trực quan. Kéo, bốc, thả gõ đến đâu, hình ảnh nó thêm đến đấy. Thêm, sửa, xóa image rất hiệu quả nữa. Hơn nữa, nó còn có những tính năng khác như tạo Shortcut Key hoặc là Load Lisp chẳng hạn và các tính năng Macro mà bạn chưa tìm hiểu tới....
  • 0

#33 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 27 July 2011 - 01:03 PM

Cám ơn bạn Detailing!
Mặc dầu chỉ "gắp, bỏ, thả, gõ" thôi, nhưng để soạn thảo một menu các lệnh thường dùng bằng cách dùng lệnh CUI thì cũng khá nhiêu khê. Vì vậy, tôi đã mày mò để ghi lại từng bước (xem link), để ai cần thì dùng, còn ai rành 6 câu rồi thì cũng bỏ quá cho, đừng chấp trách làm gì.
Theo thiển nghĩ của tôi: xem ra, nếu rành MNS (MNU) thì soạn thảo Menu là nhanh nhất, chứ dùng CUI thì cũng không nhanh lắm.
Thân thương!

Chào bạn,
Thấy bạn nói chưa biết nên mình Google dùm thôi.
Cách của bạn cũng hay, code rất công phu, đơn giản, dễ dùng cho những bạn mới sử dụng nhưng mình khuyên bạn ko nên tiếp tục phát triển cho nó vì ko thể bằng lệnh CUI của CAD dc.
Thân!
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#34 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 27 July 2011 - 02:58 PM

Cách của bạn cũng hay, code rất công phu, đơn giản, dễ dùng cho những bạn mới sử dụng nhưng mình khuyên bạn ko nên tiếp tục phát triển cho nó vì ko thể bằng lệnh CUI của CAD dc.

Tôi làm cái này chỉ để phục vụ cho các bạn chưa rành về tạo menu, và qua nhiều góp ý thì nên dừng ngang đó là đủ rồi. Còn các bạn rành hơn thì có thể dùng CUI vì nó pro hơn. Riêng tôi, từ xưa tới giờ chỉ viết trên file MNS. Quen rồi thành ra nó tiện lợi với mình.
Thân thương!
  • 2

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


#35 2hproduction

2hproduction

    biết vẽ circle

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

Đã gửi 10 January 2013 - 08:51 AM

Bác Doan Van Ha,
Em upload 2 lisp và menuload trong cad 2012 file của bác mà command nó hiện lỗi không nhận? Lý do tại sao ạ?
Hình đã gửi
  • 0

#36 TV_Anh

TV_Anh

    biết vẽ line

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

Đã gửi 07 March 2016 - 11:09 AM

bác nào cho em xin phần mềm relax nói trên dc không, muốn vọc xíu, nhưng tìm toàn link die ko tải dc


  • 0