Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
npham

Hỏi về hàm Getfiled

Các bài được khuyến nghị

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 !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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

 

getfiled.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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

 

getfiled.png

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

getfiled.jpg

Flag = 8 -> buton Open

(setq tmp (getfiled "Chon File" (getvar "dwgprefix") "dwg;xls;pdf;txt" 8))

getfiled8.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

untitled1.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

untitled1.png

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ư)

getfiled_net.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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é...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khá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.

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

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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?

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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))
 )

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khá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.

 

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

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu đã dùng thêm dll thì giải pháp nhiều vô cùng . hí hí. Tks bạn vô cùng ^^ Cảm giác dạo này đội ngũ code mạnh quá, yêu quá cơ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu đã dùng thêm dll thì giải pháp nhiều vô cùng . hí hí. Tks bạn vô cùng ^^ Cảm giác dạo này đội ngũ code mạnh quá, yêu quá cơ

Mày mò thôi Ket ơi :D

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×