Đến nội dung


Hình ảnh
- - - - -

Hỏi về hàm Getfiled


  • Please log in to reply
21 replies to this topic

#1 npham

npham

    biết lệnh rotate

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

Đã gửi 07 December 2010 - 09:55 AM

Cái hàm getfiled hình như chỉ cho chọn 1 ext file duy nhất, trừ *.*
Bác nào có biết cách gọi 1 hộp thoại save với tùy chọn 1 số ext cho trước không?
Thanks !
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 07 December 2010 - 10:34 AM

Cái hàm getfiled hình như chỉ cho chọn 1 ext file duy nhất, trừ *.*
Bác nào có biết cách gọi 1 hộp thoại save với tùy chọn 1 số ext cho trước không?
Thanks !

Bạn thử đọan sau :
(setq tmp (getfiled "Chon File" (getvar "dwgprefix") "xls;xlsx;csv;txt" 1))
  • 0

#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 December 2010 - 10:37 AM

Cái hàm getfiled hình như chỉ cho chọn 1 ext file duy nhất, trừ *.*
Bác nào có biết cách gọi 1 hộp thoại save với tùy chọn 1 số ext cho trước không?
Thanks !

Bạn có thể dùng dấu ; ngăn cách giữa ext được gọi .
Ví dụ : gọi ext là : .lsp và .xls
(getfiled "Select a File" "" "lsp;xls" 1)

Kết quả nằm trong File of types
  • 0

#4 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 07 December 2010 - 10:55 AM

Để Flag = 4 thì có thể chọn file có phần mở rộng khác với ext được thì phải
  • 0

#5 npham

npham

    biết lệnh rotate

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

Đã gửi 07 December 2010 - 11:27 AM

Bạn thử đọan sau :
(setq tmp (getfiled "Chon File" (getvar "dwgprefix") "xls;xlsx;csv;txt" 1))


wow ! đã thử mọi dấu mà lại chừa cái dấu ";" này ra. Đúng là ngớ thật. Thanks các bác.
ủa? mà sao thêm phần chú giải vào ta? nó chỉ hiểu một vài ext đặc trwng như dwg, txt thôi

Hình đã gửi
  • 0

#6 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 07 December 2010 - 12:12 PM

wow ! đã thử mọi dấu mà lại chừa cái dấu ";" này ra. Đúng là ngớ thật. Thanks các bác.
ủa? mà sao thêm phần chú giải vào ta? nó chỉ hiểu một vài ext đặc trwng như dwg, txt thôi

Hình đã gửi

Phụ thuộc vào hệ thống có cài đặt các phần mềm tuơng ứng phần chú giải của file sẽ khác nhau.

Bạn có cài Office nên có phần chú giải của file *.xls : (Excel Workbook), *.csv : (CSV Commma ....)

Trên hệ thống không có Office nó như thế này.
(setq tmp (getfiled "Chon File" (getvar "dwgprefix") "dwg;xls;pdf;txt" 1))
Flag = 1 -> buton Save
Hình đã gửi
Flag = 8 -> buton Open
(setq tmp (getfiled "Chon File" (getvar "dwgprefix") "dwg;xls;pdf;txt" 8))
Hình đã gửi
  • 0

#7 npham

npham

    biết lệnh rotate

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

Đã gửi 07 December 2010 - 02:03 PM

Phụ thuộc vào hệ thống có cài đặt các phần mềm tuơng ứng phần chú giải của file sẽ khác nhau.

Bạn có cài Office nên có phần chú giải của file *.xls : (Excel Workbook), *.csv : (CSV Commma ....)

(


oh Thanks bác, nhưng ý của mình là chú giải tự thêm vào. như thế này này.
Hình đã gửi
  • 0

#8 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1433 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 07 December 2010 - 03:33 PM

oh Thanks bác, nhưng ý của mình là chú giải tự thêm vào. như thế này này.
Hình đã gửi

Hình này bạn đã làm đuợc bằng LISP hay đang đố mọi nguời ?

Đây là sản phẩm của Acad .NET (tiếng Việt Unicode vô tư)
Hình đã gửi
  • 0

#9 npham

npham

    biết lệnh rotate

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

Đã gửi 07 December 2010 - 04:11 PM

Hình này bạn đã làm đuợc bằng LISP hay đang đố mọi nguời ?


Cái bác này! cái hình đó lấy từ thư viện. Chắc viết bằng cái gì đó bác nói. Làm ví dụ thôi. Lisp làm được thì đi hỏi mấy bác chi?
  • 0

#10 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 28 December 2010 - 11:28 AM

Các bác ơi cho em hỏi em muốn định dạng file name luôn theo tên và đường dẫn của bản vẽ thì thế nào? Em chưa thông.
Tức là khi thực hiện getfield thì cái dòng File name viết luôn là c:\123\tenbanve.text luôn chứ không phải oánh vào. Mong các bác chỉ giáo hì hì.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#11 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 28 December 2010 - 12:23 PM

Các bác ơi cho em hỏi em muốn định dạng file name luôn theo tên và đường dẫn của bản vẽ thì thế nào? Em chưa thông.
Tức là khi thực hiện getfield thì cái dòng File name viết luôn là c:\123\tenbanve.text luôn chứ không phải oánh vào. Mong các bác chỉ giáo hì hì.

Hề hề hề,
Có phải bạn cần cái này không hỉ???
(getfiled "Chon file xuat Text goc" (getvar "dwgprefix") "csv;txt" 1)
Bạn thử tham khảo thêm các biến hệ thống trong CAD như dwgname, dwgprefix này xem nhé...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 28 December 2010 - 01:17 PM

Hề hề hề,
Có phải bạn cần cái này không hỉ???
(getfiled "Chon file xuat Text goc" (getvar "dwgprefix") "csv;txt" 1)
Bạn thử tham khảo thêm các biến hệ thống trong CAD như dwgname, dwgprefix này xem nhé...

okie cái nè em bít nhưng vấn đề ở chỗ mở dialog dòng file name ghi luôn đường dẫn đến file đó.
Ví dụ em có file bản vẽ c:\123\tenbv.dwg
Thì khi sử dụng getfield thì nó sẽ chỉ đường dẫn tới c:\123\
Còn dòng file name thì là tenbv.txt
Và dòng dưới là chọn TXT roài.
Chứ không trống không như bản vẽ vừa rồi.

Chỉnh sửa chỉnh sửa em tìm ra roài thật là thẹn quá hi hi hi. Cảm ơn bác Bình nhé.
Muốn nó hiện ra như em nói ở trên thì làm như sau
Tạo 1 biến lấy 2 hàm dwgprefix và dwgname (bỏ phần đuôi tức như sau (getfiled "Chon file xuat Text goc" "c:\123\tenbv" "csv;txt" 1)
Thía là nó sẽ hiện tên file name là tenbv.txt
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#13 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 28 December 2010 - 02:19 PM

okie cái nè em bít nhưng vấn đề ở chỗ mở dialog dòng file name ghi luôn đường dẫn đến file đó.
Ví dụ em có file bản vẽ c:\123\tenbv.dwg
Thì khi sử dụng getfield thì nó sẽ chỉ đường dẫn tới c:\123\
Còn dòng file name thì là tenbv.txt
Và dòng dưới là chọn TXT roài.
Chứ không trống không như bản vẽ vừa rồi.

Bạn tạo biến duongdanhientai và tenfiledwg rồi đặt điều kiện
-Nếu tenfiledwg bằng nil thì gán duongdanhientai bằng ""
-Nếu tenfiledwg khác nil thì lọc lấy đường dẩn và gán duongdanhientai bằng đường dẩn.

(setq tenfiledwg (getfiled "CHON FILE MUON TAO ANH " duongdanhientai "DWG" 0))
  • 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


#14 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 December 2010 - 02:31 PM

Bạn tạo biến duongdanhientai và tenfiledwg rồi đặt điều kiện
-Nếu tenfiledwg bằng nil thì gán duongdanhientai bằng ""
-Nếu tenfiledwg khác nil thì lọc lấy đường dẩn và gán duongdanhientai bằng đường dẩn.

(setq tenfiledwg (getfiled "CHON FILE MUON TAO ANH " duongdanhientai "DWG" 0))

Chào anh Duy, bác Bình.
Ý của bạn 1801185 như thế này cơ

okie cái nè em bít nhưng vấn đề ở chỗ mở dialog dòng file name ghi luôn đường dẫn đến file đó.
Ví dụ em có file bản vẽ c:\123\tenbv.dwg
Thì khi sử dụng getfield thì nó sẽ chỉ đường dẫn tới c:\123\
Còn dòng file name thì là tenbv.txt
Và dòng dưới là chọn TXT roài.
Chứ không trống không như bản vẽ vừa rồi.


Các bác ơi cho em hỏi em muốn định dạng file name luôn theo tên và đường dẫn của bản vẽ thì thế nào? Em chưa thông.
Tức là khi thực hiện getfield thì cái dòng File name viết luôn là c:\123\tenbanve.text luôn chứ không phải oánh vào. Mong các bác chỉ giáo hì hì.


@18011985: Dòng file Name thì chỉ có thể ghi tên tenbv.txt vô luôn. Còn đường dẫn thì Lisp đã chỉ cho nó chạy tới rồi cơ mà. Tue_NV hiểu vậy đúng không?
  • 1

#15 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 28 December 2010 - 02:38 PM

Chào anh Duy, bác Bình.
Ý của bạn 1801185 như thế này cơ
@18011985: Dòng file Name thì chỉ có thể ghi tên tenbv.txt vô luôn. Còn đường dẫn thì Lisp đã chỉ cho nó chạy tới rồi cơ mà. Tue_NV hiểu vậy đúng không?

Chính xác chính xác! Cảm ơn các bác em đã tìm ra lời giải.

Chỉnh sửa chỉnh sửa em tìm ra roài thật là thẹn quá hi hi hi. Cảm ơn bác Bình nhé.
Muốn nó hiện ra như em nói ở trên thì làm như sau
Tạo 1 biến lấy 2 hàm dwgprefix và dwgname (bỏ phần đuôi tức như sau (getfiled "Chon file xuat Text goc" "c:\123\tenbv" "csv;txt" 1)
Thía là nó sẽ hiện tên file name là tenbv.txt

Ví dụ minh hoạ của em hì hì.
(defun c:thu (/ A A1 A2 B POS)
(setq a1 (getvar "dwgprefix"))
(setq a2 (getvar "dwgname"))
(setq pos (vl-string-search "." a2))
(setq a2 (substr a2 1 pos))
(setq b (strcat a1 a2))
(setq a (getfiled "Chon file" b "txt" 2))
)

  • 1
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#16 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 28 December 2010 - 02:54 PM

okie cái nè em bít nhưng vấn đề ở chỗ mở dialog dòng file name ghi luôn đường dẫn đến file đó.
Ví dụ em có file bản vẽ c:\123\tenbv.dwg
Thì khi sử dụng getfield thì nó sẽ chỉ đường dẫn tới c:\123\
Còn dòng file name thì là tenbv.txt
Và dòng dưới là chọn TXT roài.
Chứ không trống không như bản vẽ vừa rồi.

Chỉnh sửa chỉnh sửa em tìm ra roài thật là thẹn quá hi hi hi. Cảm ơn bác Bình nhé.
Muốn nó hiện ra như em nói ở trên thì làm như sau
Tạo 1 biến lấy 2 hàm dwgprefix và dwgname (bỏ phần đuôi tức như sau (getfiled "Chon file xuat Text goc" "c:\123\tenbv" "csv;txt" 1)
Thía là nó sẽ hiện tên file name là tenbv.txt

Hề hề hề,
Bác thử thay cái thằng flag thành 0 xem sao, còn trong cái ext bác chỉ để nhõn thằng txt thôi , hy vọng trúng ý bác....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#17 toanmda

toanmda

    biết zoom

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

Đã gửi 25 April 2013 - 10:11 PM

Các bác pro cho nhà em hỏi chút, cũng cái hàm Getfiled này em muốn chọn nhiều file có được không? nếu được nhờ các bác chỉ giáo giúp. Ngoài Getfiled có hàm nào khác để chọn nhiều file và trả về tên, đường dẫn của từng file không?


  • 0

#18 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 25 April 2013 - 10:22 PM

Bản chất của hàm getfiled chỉ cho chọn 1 file => không thể chọn nhiều file bằng hàm getfiled được => có thể dùng hàm vl-directory-files kết hợp với dialog tự tạo để xây dựng 1 hàm chọn nhiều file tương tự getfiled, nhưng khá rắc rố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.


#19 toanmda

toanmda

    biết zoom

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

Đã gửi 25 April 2013 - 10:41 PM

Bản chất của hàm getfiled chỉ cho chọn 1 file => không thể chọn nhiều file bằng hàm getfiled được => có thể dùng hàm vl-directory-files kết hợp với dialog tự tạo để xây dựng 1 hàm chọn nhiều file tương tự getfiled, nhưng khá rắc rối.

Thanks Doan Van Ha, để mình thử hàm này xem sao, mình cũng đang làm cái dialog mà chưa biết lấy nhiều file thế nào.


  • 0

#20 thehost31

thehost31

    biết vẽ line

  • Members
  • PipPip
  • 26 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 30 April 2013 - 04:42 PM

Thêm một giải pháp để có thể chọn nhiều file với hộp thoại thông dụng của Windows. tớ sử dụng AutoCAD.net để định nghĩa một hàm AutoLISP mới cho phép người dùng có thể chọn nhiều file để mở (Vì thông thường để lưu dữ liệu hiếm có trường hợp ghi vào nhiều file).

Cách sử dụng như sau:

 

Tải file MultiFileSel.dll tại đây. Sử dụng netload và tải file này vào AutoCAD. Sau khi tải ta sẽ có thêm một hàm AutoLISP mới là Getmfiled. Cú pháp sử dụng như sau:

 

(getmfiled Title def_folder ext_str)

 

Trong đó bao gồm 3 đối số cần nhập cho hàm:

- Title: kiểu chuỗi. Tiêu đề của hộp thoại

- def_folder: kiểu chuỗi. Xác định thư mục mở kèm hộp thoại

- ext_str: kiểu chuỗi. Quy định các kiểu file được chọn.

 

Ví dụ:

 

(setq Title "Chon nhieu tap tin")

(setq ext_str "File van ban (*.txt)|*.txt|Ban ve AutoCAD (*.dwg)|*.dwg|File AutoLISP (*.lsp)|*.lsp|Tat ca kieu files (*.*)|*.*")

(setq def_folder (getvar "DWGPREFIX"))

(setq Files (getmfiled Title def_folder ext_str))

 

Hàm sẽ trả về trong biến Files một list các tên file cùng đường dẫn được chọn.

 

 

Để tải file MultiFileSel.dll cùng lúc ta có thể sử dụng như sau kèm vào AutoLISP. Ghi nhớ đường dẫn lưu file dll và thực hiện tải bằng hàm command.

 

(command “netload” “….\\MultiFileSel.dll”)

 

Chia sẽ mã nguồn của MultiFileSel.dll để các bạn cùng nghiên cứu.


  • 1