Đến nội dung


Hình ảnh
- - - - -

Load lisp bang lenh


  • Please log in to reply
13 replies to this topic

#1 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 23 October 2009 - 08:10 AM

XIn hỏi làm sao để load tất cả *.(lsp, vlx, arx, fas) bằng lệnh LISP.
Ví dụ trong thư mục C:\\Load có các file lisp con 1,2.......
Vậy có lệnh nào Load tất cả các file trong đấy mà ko phải chỉ tên đích danh từng thằng không?
Cảm ơn mọi người trước.............
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 23 October 2009 - 08:30 AM

XIn hỏi làm sao để load tất cả *.(lsp, vlx, arx, fas) bằng lệnh LISP.
Ví dụ trong thư mục C:\\Load có các file lisp con 1,2.......
Vậy có lệnh nào Load tất cả các file trong đấy mà ko phải chỉ tên đích danh từng thằng không?
Cảm ơn mọi người trước.............

Bạn sử dụng hàm Load :

Hàm (Load ...)
CHỨC NĂNG:
Gọi một chương trình ứng dụng vào AutoCad
CÚ PHÁP:
(Load “Tên_tệp”)
GIẢI THÍCH:
Tên_tệp: là tên tập tin có phần mở rộng *.LSP, .ARX, .ADS hoặc .EXE
Nếu chương trình đặt ngoài thư mục làm việc của AutoCad thì phải chỉ rõ đường dẫn của tệp tin đó
Ví dụ : file tong.lsp trong thư mục C:\\Load thì sử dụng hàm load như sau :

(Load "C:\\Load \\tong.lsp")

Nếu thư mục C:\\Load nằm trong thư mục làm việc của AutoCad (support file search Path)
thì chỉ cần Load như sau :

(Load "tong.lsp")
  • 1

#3 ssg

ssg

    biết lệnh adcenter

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

Đã gửi 23 October 2009 - 10:56 AM

XIn hỏi làm sao để load tất cả *.(lsp, vlx, arx, fas) bằng lệnh LISP.
Ví dụ trong thư mục C:\\Load có các file lisp con 1,2.......
Vậy có lệnh nào Load tất cả các file trong đấy mà ko phải chỉ tên đích danh từng thằng không?
Cảm ơn mọi người trước.............

Load 1 file thì bạn Tue_NV đã nói rồi, ssg xin bổ sung (mách nước thôi, bạn tự làm):
1- (vl-directory-files MyPath "*.lsp") -> return list của tất cả các file *.lsp trong MyPath
2- Dùng Foreach kết hợp với Load để load tất cả chúng mà không phải "chỉ tên đích danh từng thằng". Làm tương tự với các kiểu *.vlx, *.fas...
3- Nên thiết lập luôn Support File Search Path cho MyPath

Chúc thành công!
  • 6

#4 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 26 October 2009 - 09:25 PM

Load 1 file thì bạn Tue_NV đã nói rồi, ssg xin bổ sung (mách nước thôi, bạn tự làm):
1- (vl-directory-files MyPath "*.lsp") -> return list của tất cả các file *.lsp trong MyPath
2- Dùng Foreach kết hợp với Load để load tất cả chúng mà không phải "chỉ tên đích danh từng thằng". Làm tương tự với các kiểu *.vlx, *.fas...
3- Nên thiết lập luôn Support File Search Path cho MyPath

Chúc thành công!



Cảm ơn nhiều, nhưng mình cũng một lần dùng cách này rồi, có chút vấn đề là khi mình tạo một list các đường dẫn thì có lúc nó cho kết quả không đúng đường dẫn làm lisp chạy sai.
Chẳng hạn đường dẫn là "C:\\my_lsp\\file1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx"................Thì có lúc đầu list như sau:
("fìle1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx" .......... "C:\\my_lsp\\")
Ý của mình ở đây là đường dẫn nó bị cắt và chắp nối không đúng nữa, đang rất thắc mắt.
Mình cần cái này là do máy chạy không được good nên khi cần thì mới dùng lisp load cho nhanh thôi (bổ sung menu tien ich cua minh ma)
Cảm ơn va mong mọi người giúp đỡ


Thế còn "3- Nên thiết lập luôn Support File Search Path cho MyPath" bằng lisp thì mình phải lam thế nào ạ, cái này chưa biết.........
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#5 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 October 2009 - 06:32 AM

Cảm ơn nhiều, nhưng mình cũng một lần dùng cách này rồi, có chút vấn đề là khi mình tạo một list các đường dẫn thì có lúc nó cho kết quả không đúng đường dẫn làm lisp chạy sai.
Chẳng hạn đường dẫn là "C:\\my_lsp\\file1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx"................Thì có lúc đầu list như sau:
("fìle1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx" .......... "C:\\my_lsp\\")
Ý của mình ở đây là đường dẫn nó bị cắt và chắp nối không đúng nữa, đang rất thắc mắt.
Mình cần cái này là do máy chạy không được good nên khi cần thì mới dùng lisp load cho nhanh thôi
...........
Thế còn "3- Nên thiết lập luôn Support File Search Path cho MyPath" bằng lisp thì mình phải lam thế nào ạ, cái này chưa biết.........

Bạn có thể vui lòng post luôn đoạn code mà bạn đã viết lên đây luôn được không?
Tue_NV nghĩ rằng MyPath của bạn có thể định nghĩa bị sai. Bạn đã viết rồi thì nên post lên đây để anh em góp ý nhé

Nên thiết lập luôn Support File Search Path cho MyPath" bằng lisp : tức là Những đường dẫn nào nằm trong Support File Search Path thì thiết lập cho MyPath hay MyPath là 1 tập hợp List chứa các đường dẫn [b]Support File Search Path
-> Dùng hàm foreach duyệt qua từng phần tử của MyPath -> lấy các phần tử là các tệp tin .lsp; vlx.. và Load
  • 1

#6 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 27 October 2009 - 04:51 PM

Bạn có thể vui lòng post luôn đoạn code mà bạn đã viết lên đây luôn được không?
Tue_NV nghĩ rằng MyPath của bạn có thể định nghĩa bị sai. Bạn đã viết rồi thì nên post lên đây để anh em góp ý nhé

Nên thiết lập luôn Support File Search Path cho MyPath" bằng lisp : tức là Những đường dẫn nào nằm trong Support File Search Path thì thiết lập cho MyPath hay MyPath là 1 tập hợp List chứa các đường dẫn [b]Support File Search Path
-> Dùng hàm foreach duyệt qua từng phần tử của MyPath -> lấy các phần tử là các tệp tin .lsp; vlx.. và Load



Vì đang tập tành viết Lsp nên không có định hướng trước khi viết. DO vậy các file để không có hệ thống. File này lấy dữ liệu file kia nên không biết Post lên sao cho anh hiểu. Nhưng theo gợi ý em tìm trên diễn đàn cách add vào Support File Search Path nên đã thay đổi mã. Dù sao cũng cảm ơn anh quan tâm và nhiệt tình giúp đỡ. Tiện thể cho em hỏi là mình có thể Load file ở dạng ký tự thay thế không.
Ví dụ: (Load "c:\Anh*.lsp") hay (load "c:\\*.Lsp") không
Xin cảm ơn anh và mọi người...........
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#7 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 October 2009 - 05:17 PM

Vì đang tập tành viết Lsp nên không có định hướng trước khi viết. DO vậy các file để không có hệ thống. File này lấy dữ liệu file kia nên không biết Post lên sao cho anh hiểu. Nhưng theo gợi ý em tìm trên diễn đàn cách add vào Support File Search Path nên đã thay đổi mã. Dù sao cũng cảm ơn anh quan tâm và nhiệt tình giúp đỡ. Tiện thể cho em hỏi là mình có thể Load file ở dạng ký tự thay thế không.
Ví dụ: (Load "c:\Anh*.lsp") hay (load "c:\\*.Lsp") không

.......

Không được bạn à. Hàm Load chỉ load 1 file có tên tuổi rõ ràng như Tue_NV đã phân tích ở bài viết số 2.
Vì thế để Load các file thì bạn phải có 1 danh sách (List) chứa đường dẫncác file .lsp, .vlx , cách tạo ra một List danh sách này như bác ssg đã trình bày

Sau khi có 1 danh sách (List) chứa đường dẫn các file .lsp, .vlx -> bạn nghiên cứu sử dụng hàm foreach duyệt qua từng phần tử của List này và qua mỗi phần tử trong List -> bạn sử dụng hàm Load để Load chúng

Hãy đọc thật kỹ lại bài của bác ssg. Nó là chìa khoá để bạn giải quyết thành công bài toán này đấy
Chúc bạn thành công :tongue2:
  • 0

#8 ssg

ssg

    biết lệnh adcenter

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

Đã gửi 28 October 2009 - 07:55 AM

Cảm ơn nhiều, nhưng mình cũng một lần dùng cách này rồi, có chút vấn đề là khi mình tạo một list các đường dẫn thì có lúc nó cho kết quả không đúng đường dẫn làm lisp chạy sai.
1- Chẳng hạn đường dẫn là "C:\\my_lsp\\file1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx"................Thì có lúc đầu list như sau:
("fìle1.lsp" "C:\\my_lsp\\file2.lsp" "C:\\my_lsp\\file3.vlx" .......... "C:\\my_lsp\\")
Ý của mình ở đây là đường dẫn nó bị cắt và chắp nối không đúng nữa, đang rất thắc mắt.

Mình cần cái này là do máy chạy không được good nên khi cần thì mới dùng lisp load cho nhanh thôi (bổ sung menu tien ich cua minh ma)
Cảm ơn va mong mọi người giúp đỡ
2- Thế còn "3- Nên thiết lập luôn Support File Search Path cho MyPath" bằng lisp thì mình phải lam thế nào ạ, cái này chưa biết.........

1- Không bao giờ có chuyện đó! Vl-directory-files chỉ return list of filename & ext, và/hoặc directory name, không chứa path. Bạn lật Help ra xem sẽ rõ hơn. Nhiều khả năng là bạn coding sai cái gì đó, nghe bạn Tue_NV, post code lên đi...
2- Cái này đã từng đề cập trên diễn đàn. Ssg post lại:
(defun addspath(s) ;;;Add support file search path
(setenv "ACAD" (strcat (getenv "ACAD") ";" s))
)
Áp dụng: (addspath mypath)
  • 1

#9 congchivo

congchivo

    biết vẽ line

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

Đã gửi 19 December 2011 - 05:20 PM

bac tue oiiiiiii, em co bo lisp ten la lenh nhom luu o ổ D em muốn nhờ bác viết hộ em 1 lisp load tất cả các lisp kia để sử dụng, bộ lisp của em có file .lsp, vlx ròi sau do em ap lẹnh lisp vừa tạo vào contenst de luu 1 lisp do thoi, em ko rành về lisp nên nhờ bác giúp, em cảm ơn bác trước
  • 0

#10 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

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

Đã gửi 28 July 2014 - 10:31 AM

các bác ơi, cho em hỏi chút là load thì dùng (Load "C:\\Load \\tong.lsp") vậy unload lisp trên bản vẽ đang làm thì dùng hàm gì ạ?


 


  • 0

#11 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 28 July 2014 - 11:32 AM

Bạn chỉ có thể unload từng lệnh thôi, chứ không unload cả file được, 

thí dụ dùng (vl-acad-undefun "c:tt") để unload lệnh tt.

Còn nếu là file vlx thì (vl-unload-vlx "ten file vlx không có .vlx")


  • 1

#12 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

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

Đã gửi 28 July 2014 - 11:47 AM

còn nếu là file .fas thì làm thế nào anh tot nhỉ?


  • 0

#13 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 28 July 2014 - 12:25 PM

Thì chắc là thua chứ sao!! :o  :o

Muốn biết mình đã load những hàm lệnh gì thì (atoms-family 0) , nhưng nó cho ra một cái list khá dài (gần 5000 hàm + lệnh, cả của cad và của ng dùng load vào).

Cho nên nếu biết tên lệnh thì có thể dùng vl-acad-undefun ở trên để unload nó.


  • 1

#14 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

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

Đã gửi 28 July 2014 - 01:40 PM

Oh, vậy là bó tay nhỉ


  • 0