Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2854 replies to this topic

#781 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 31 July 2011 - 12:06 PM

-> Có
(getenv "ACAD")
-> nó sẽ hiện ra - toàn bộ đường dẫn Support path -> Lấy được biến Path
Thêm đường dẫn vào bằng hàm nối chuỗi strcat
(setenv "ACAD" path)
-> Set path mới
Mấy dòng hy vọng bạn giải quyết được
Bận quá :rolleyes:

Detailing "giả nhời" nhanh hơn 1 phút rồi.
Nên kiểm tra Path đó có tồn tại đường dẫn mà bạn định Add vào thêm như ý của bạn Detailing ở trên nữa bạn ĐVH

Hình như cái cách của bác Tue_NV và Detailling chỉ thêm được 1 thư mục duy nhất. Bởi nếu muốn thêm 1 thư mục nữa thì nó lại thay thư mục trước đó. Nhờ xem lại.
  • 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.


#782 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2011 - 02:57 PM

Hình như cái cách của bác Tue_NV và Detailling chỉ thêm được 1 thư mục duy nhất. Bởi nếu muốn thêm 1 thư mục nữa thì nó lại thay thư mục trước đó. Nhờ xem lại.

Bác đã strcat chưa ^^
Đúng là hàm của bạn Detailing có 1 chút vấn đề :
- Filefind không trả về T với ổ đĩa => code không add SPP drive
- vl-string-search sẽ trả về khác Nil nếu trong dãy SPP hiện tại có chứa đường dẫn add hiện tại
(ví dụ trong SPP đã có đường dẫn "C:\\abc\\123" mà add thêm "C:\\abc")
Trên thực tế việc kiểm tra đường dẫn cần add mới đã có chưa trong SPP hiện tại là không cần thiết :rolleyes:
=> Bác có thể dùng như thế này :
(defun ST:Support-Add(Path / nowSpp rt)
(setq nowSpp (getenv "ACAD"))
(cond ((vl-file-directory-p Path)
(if (and
(not (vl-string-search (strcat ";" Path ";") nowSpp)) ;Co the bo
(< (strlen (strcat nowSpp Path)) 1000)) ;Kiem tra do dai toi da cua cac SPP
(setq rt (setenv "ACAD" (strcat nowSpp ";" Path)))
)
)
(T (setq rt nil))
)
rt
)

  • 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


#783 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 31 July 2011 - 03:17 PM

......
PS: biến UNDOCTL là read only thì làm sao Set cho nó được?

Ví dụ : CAD mặc định cho nó là undo toàn bộ các lệnh từ khi bắt đầu mở CAD lên.
Nhưng chẳng hiểu vì sao mà chỉ undo 1 cái chỉ được cái đối tượng vừa vẽ thôi.
"Oái oăm" 1 cái là không thể Undo được nữa.
Hoặc là bạn đã từng gặp trường hợp CAD không Undo được chưa?

Ví dụ trường hợp Undo chỉ 1 lần 1 đối tượng đã vẽ trước đó, không Undo được nữa
Biến UNDOCTL (readonly) đang ở giá trị 19 (=1+2+16)
Giá trị 2 chính là Only one command can be undone (chỉ undo được 1 lần)
Bạn set cho nó không phải bằng hàm setvar mà bằng lệnh undo

Ví dụ :
Command: UNDOCTL
UNDOCTL = 19 (read only)
-> Biến UNDOCTL = 19

Command: undo-> Gõ lệnh Undo để thiếp lập
Current settings: Auto = Off, Control = One, Combine = Yes
Enter an option [Control] <1>: C -> Gõ C
Enter an UNDO control option [All/None/One/Combine] <All>: All -> Gõ All

Command: undoctl -> Xem lại biến UNDOCTL vừa được thiết lập

UNDOCTL = 21 (read only)
-> Nó nằm ở tùy chọn Auto, Control của lệnh Undo
  • 1

#784 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 31 July 2011 - 04:57 PM

...Bác đã strcat chưa ^^
Đúng là hàm của bạn Detailing có 1 chút vấn đề...
Bác có thể dùng như thế này...

Ketxu đã chạy thử chưa, hình như có lỗi đấy! Vả lại, cũng không thể add được nhiều hơn 1 thư mục. Ketxu thử giùm tí nhé. Và kiểm tra độ dài để mần chi?
@Tue_NV: sẵn thấy Bác đang online nên hỏi cái này chút: khi đang chạy 1 lệnh lsp, nếu user bấm esc giữa chừng, làm sao để đưa bản vẽ về trạng thái như trước khi chưa chạy lệnh lsp đó?
  • 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.


#785 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2011 - 05:50 PM

Ketxu đã chạy thử chưa, hình như có lỗi đấy! Vả lại, cũng không thể add được nhiều hơn 1 thư mục. Ketxu thử giùm tí nhé. Và kiểm tra độ dài để mần chi?

Hề hề. Srr bác vì vừa nãy e type vội k dùng CAD check nên setq bị lộn, k sao cả. Code đã sửa lại bên trên để lấy kết quả trả về. (OK thì trả về toàn bộ SPP, k thì nil)
Còn add nhiều hơn 1 thư mục nghĩa là như thế nào nhỉ ? Ý bác nói là làm nhiều thư mục cùng lúc hay làm lần lượt thì không được ? Ket thử bình thường

Command: (ST:SUPPORT-ADD "C:\\")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\"

Command: (ST:SUPPORT-ADD "D:\\")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\;D:\\"


Kiểm tra độ dài vì có 1 số khuyến cáo field ghi cho env không nên quá 800 ký tự. Ket chưa test thử giới hạn này nhưng vẫn kiểm tra cho chắc ^^
  • 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


#786 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 31 July 2011 - 06:12 PM

Hề hề. Srr bác vì vừa nãy e type vội k dùng CAD check nên setq bị lộn, k sao cả. Code đã sửa lại bên trên để lấy kết quả trả về. (OK thì trả về toàn bộ SPP, k thì nil)
Còn add nhiều hơn 1 thư mục nghĩa là như thế nào nhỉ ? Ý bác nói là làm nhiều thư mục cùng lúc hay làm lần lượt thì không được ? Ket thử bình thường
Kiểm tra độ dài vì có 1 số khuyến cáo field ghi cho env không nên quá 800 ký tự. Ket chưa test thử giới hạn này nhưng vẫn kiểm tra cho chắc ^^

1). Thêm "C:\\" hoặc "D:\\" thì được, nhưng ví dụ "C:\\A" thì không được.
2). Thêm nhiều thư mục là thêm lần lượt thôi, ví dụ thêm "C:\\HA1" rồi sau đó thêm "C:\\HA2".
  • 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.


#787 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2011 - 06:19 PM

1). Thêm "C:\\" hoặc "D:\\" thì được, nhưng ví dụ "C:\\A" thì không được.
2). Thêm nhiều thư mục là thêm lần lượt thôi, ví dụ thêm "C:\\HA1" rồi sau đó thêm "C:\\HA2".

Command: (ST:SUPPORT-ADD "C:\\windows\\")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\;D:\\;C:\\windows\\"

Command: (ST:SUPPORT-ADD "C:\\windows")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\;D:\\;C:\\windows\\;C:\\windows"

Command: (ST:SUPPORT-ADD "E:\\_Phim")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\;D:\\;C:\\windows\\;;E:\\_Phim"

Command: (ST:SUPPORT-ADD "E:\\Aothuat")
nil

Command: (ST:SUPPORT-ADD "E:\\Game")
"C:\\Users\\Laptop Thuy Duong\\AppData\\Roaming\\Autodesk\\AutoCAD
2008\\R17.1\\enu\\support;C:\\Program Files\\AutoCAD 2008\\support;C:\\Program
Files\\AutoCAD 2008\\fonts;C:\\Program Files\\AutoCAD 2008\\help;C:\\Program
Files\\AutoCAD 2008\\express;C:\\Program Files\\AutoCAD
2008\\support\\color;D:\\_KVTNL;C:\\;D:\\;C:\\windows\\;E:\\_Phim;E:\\Game"


Hình đã gửi

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


#788 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 31 July 2011 - 06:34 PM

Thôi rồi lượm ơi! Chắc bị 1 biến hệ thống nào làm ảnh hưởng rồi. Tôi không thể thêm được như ketxu, mà chỉ thêm được 1 thư mục duy nhất thôi. Biết thằng nào mà lần đây trời! Bạn nào check giúp xem với.
  • 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.


#789 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 10:46 PM

Bác đã thử thêm bằng tay chưa ? Xem có thêm được không ??
Hoặc thêm bằng VLisp như thế này xem sao :
(defun ST:Support-Add (Path / prefs pref_files supPth)
(setq prefs (vla-get-preferences (vlax-get-acad-object)))
(setq pref_files (vla-get-files prefs))
(setq supPth (vla-get-supportpath pref_files))
(vla-put-supportpath pref_files (strcat supPth ";" Path))
)
(code chưa lấy return và chưa bắt lỗi)
  • 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


#790 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 01 August 2011 - 11:08 PM

Bác đã thử thêm bằng tay chưa ? Xem có thêm được không ??
Hoặc thêm bằng VLisp như thế này xem sao :

(defun ST:Support-Add (Path / prefs pref_files supPth)
(setq prefs (vla-get-preferences (vlax-get-acad-object)))
(setq pref_files (vla-get-files prefs))
(setq supPth (vla-get-supportpath pref_files))
(vla-put-supportpath pref_files (strcat supPth ";" Path))
)
(code chưa lấy return và chưa bắt lỗi)

Còn 1 vấn đề này nữa:
Ketxu có dùng window 7 không? Hình như nó không thể tìm được path của file vừa load (trong hàm LastLoad ấy mà)?
  • 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.


#791 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 11:12 PM

Path của file vừa Load là sao ạ ? Ketxu dùng vista Home + XP ^^
  • 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


#792 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 02 August 2011 - 09:13 AM

Path của file vừa Load là sao ạ ? Ketxu dùng vista Home + XP ^^

Tức là thế này, ví dụ tôi có file lsp nằm ở "C:\AA\BB\...\File.lsp". Khi tôi load file "File.lsp" thì dùng hàm Lastload dưới đây sẽ tìm được path của "File.lsp". Sau đó, dùng hàm "ST:..." của Ketxu thì có thể add được "C:\AA\BB\...\" vào trong "Support File Search Path".
Trước đây dùng Win XP thì OK, nay dùng Win 7 thì hàm Lastload bị lỗi nên không add theo kiểu này được, mà phải add thủ công bằng lệnh Options nên hơi bị chán.

(defun LastLoad( / K)
(setq K (strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" "CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*"))
(vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1)))

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


#793 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 August 2011 - 09:51 AM

Tức là thế này, ví dụ tôi có file lsp nằm ở "C:\AA\BB\...\File.lsp". Khi tôi load file "File.lsp" thì dùng hàm Lastload dưới đây sẽ tìm được path của "File.lsp". Sau đó, dùng hàm "ST:..." của Ketxu thì có thể add được "C:\AA\BB\...\" vào trong "Support File Search Path".
Trước đây dùng Win XP thì OK, nay dùng Win 7 thì hàm Lastload bị lỗi nên không add theo kiểu này được, mà phải add thủ công bằng lệnh Options nên hơi bị chán.


(defun LastLoad( / K)
(setq K (strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" "CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*"))
(vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1)))

Nếu đã add thủ công sao không sử dụng cách này :
Trong Lisp bạn viết 1 hàm chọn lại file vừa Load -> Lấy đường dẫn mà bạn vừa chọn đó -> Cho vô support path
->Apload Lisp ->...
Cách này.. nó "cù lần" nhưng nó đúng với mọi hệ điều hành... :rolleyes:
  • 0

#794 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 02 August 2011 - 10:10 AM

Nếu đã add thủ công sao không sử dụng cách này :
Trong Lisp bạn viết 1 hàm chọn lại file vừa Load -> Lấy đường dẫn mà bạn vừa chọn đó -> Cho vô support path
->Apload Lisp ->...

hàm chọn lại file vừa Load.
Hàm này Bác có thể chỉ giùm đwợc không?
Sẵn có Bác, hỏi thêm tí này luôn: cái win 7 này vào help để xem các hàm lsp nó báo lỗi luôn.
  • 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.


#795 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 August 2011 - 10:14 AM

hàm chọn lại file vừa Load.
Hàm này Bác có thể chỉ giùm đwợc không?
Sẵn có Bác, hỏi thêm tí này luôn: cái win 7 này vào help để xem các hàm lsp nó báo lỗi luôn.

Hàm (getfiled ...đấy
Viết Lisp có chứa hàm này ... kiu User chọn lại cái Lisp mà vừa apload đấy
Đương nhiên -> hàm getfiled sẽ trả về đường dẫn mà bạn chọn.
Lấy đường dẫn này cho vô Support path

Hàm này bạn hay sử dụng mà :rolleyes:

Nếu đã add thủ công sao không sử dụng cách này :
.......
........
Cách này.. nó "cù lần" nhưng nó đúng với mọi hệ điều hành... :rolleyes:

Tue_NV không cài Win7 nên không biết
  • 1

#796 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 02 August 2011 - 11:04 AM

Hàm (getfiled ...đấy
Viết Lisp có chứa hàm này ... kiu User chọn lại cái Lisp mà vừa apload đấy
Đương nhiên -> hàm getfiled sẽ trả về đường dẫn mà bạn chọn.
Lấy đường dẫn này cho vô Support path
Hàm này bạn hay sử dụng mà :rolleyes:
Tue_NV không cài Win7 nên không biết

Cách này cũng đã dùng, nhưng chắc "tính thủ công" cũng tương đương vào Options nên không thích lắm. Dù sao cũng thank Bác.
  • 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.


#797 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 August 2011 - 01:42 PM

Bác ĐVH hãy kiểm tra lại đường dẫn Registry xem đã chuẩn xác chưa ? Và kiểm tra quyền admin khi đọc - ghi key reg
  • 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


#798 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 02 August 2011 - 02:19 PM

Bác ĐVH hãy kiểm tra lại đường dẫn Registry xem đã chuẩn xác chưa ? Và kiểm tra quyền admin khi đọc - ghi key reg

Đây Ket (đã kiểm tra trên winXP thì ok). Không hiểu kiểm tra quyền admin là gì Ketxu ơi:

(setq K (strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\"
"CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\*"))

"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComD
lg32\\OpenSaveMRU\\*"

(vl-registry-read K "MRUList")
nil

(vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1)))
; error: bad argument type: stringp nil


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


#799 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 August 2011 - 03:42 PM

Cách này cũng đã dùng, nhưng chắc "tính thủ công" cũng tương đương vào Options nên không thích lắm. Dù sao cũng thank Bác.

Bạn thử cái này xem có được không?

(defun LastLoad( / K)
(setq K
(strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" "CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\lsp"))
(vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1)))

Chú ý cái này trả về đường dẫn của file Lsp vừa Load nhé.
Không phải file VLX
Bạn apload 1 file Lsp nào đó rồi gọi hàm (LastLoad) xem sao.
  • 0

#800 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 02 August 2011 - 03:58 PM

Bạn thử cái này xem có được không?


(defun LastLoad( / K)
(setq K
(strcat "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\" "CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\lsp"))
(vl-registry-read K (substr (vl-registry-read K "MRUList") 1 1)))

Chú ý cái này trả về đường dẫn của file Lsp vừa Load nhé.
Không phải file VLX
Bạn apload 1 file Lsp nào đó rồi gọi hàm (LastLoad) xem sao.

Chịu luôn Bác ơi! Lỗi cũng như #808 ở trên (chỉ khác "*" -> "lsp").
  • 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.