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

Nhờ chỉnh sửa lisp

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

Chào các anh chị diễn đàn Cadviet.

Em có đoạn lisp lọc tên bản vẽ theo file *txt có sẵn. Em xin giải thích sơ về đoạn lisp này:

Giả sử em có các tên bản vẽ lần lượt là: NS1CL001, NS1CL002. NS1CL003, NS1CL004, NS1CL005. Bây giờ em cần lấy 3 bản vẽ có tên NS1CL002,NS1CL003, NS1CL005.

Cách làm của em: Tạo 1 file *TXT có tên bất kỳ, trong file này em viết tên 3 bản vẽ cần lấy ra là: NS1CL002,NS1CL003, NS1CL005.

Sau đó em chạy lisp với tên CFFBYLIST, nó hiện cái bang yêu cầu chon file *TXT, em chon và nó sẽ lọc cho em.

.............................................................................................

Vấn đề của e là nó chạy nhưng báo lỗi " bad argument".

Mong anh chị giúp em tìm lỗi với.

...............................Code của em đây..........................

(defun c:CFFbyList (/ data dwgfinal file lstdwg lst_err path path_dwgfinal path_final)
   (vl-load-com)
   (setvar "Modemacro" "@ Tr\U+1EA7n C\U+00F4ng S\U+01A1n _ Detail SS")
   (if
   (and
   (setq file (getfiled "Ch\U+1ECDn File TXT,CSV c\U+1EA7n loc Final." "" "txt" 16))
   (setq path (vl-filename-directory file))
   (setq data (TS:readcsv file))
   )
  (progn
     ;;-------------------------------------------------------------------------------;;
     (setq lstdir (vl-remove-if
         '(lambda (x) (wcmatch x ".,.."))
         (vl-directory-files path "*" -1)
      )
     )
     (if
     (not (vl-file-directory-p (setq Path_final (strcat path "\\" (vl-filename-base file)))))
    (vl-mkdir Path_final)
     )
     (foreach name data
     (if (> (length (setq lstdwg (TS:directoryfiles path (strcat name "-R*.dwg") T))) 1)
     (progn
     (setq lstdwg
       (vl-sort
          lstdwg
          '(lambda (x1 x2)
           (> (last (TS:ParseNumbers (vl-filename-base x1)))
           (last (TS:ParseNumbers (vl-filename-base x2)))
           )
        )
       )
     )
     )
     )
     (setq path_dwgfinal (car lstdwg)
     dwgfinal   (strcat
          (vl-filename-base path_dwgfinal)
          (vl-filename-extension path_dwgfinal)
          )
     )
     (if (vl-file-copy
      path_dwgfinal
      (strcat Path_final
        "\\"
        dwgfinal
      )
      )
     (vl-file-delete path_dwgfinal)
     (setq lst_err (cons file lst_err))
     )
     )
     (if lstdir
     (mapcar (function (lambda (x)
           (TS:delFolder (strcat path "\\" x))
        )
       )
       lstdir
     )
     )
     (if
     lst_err
     (acet-ui-message
     (strcat
     "\nM\U+1ED9t v\U+00E0i b\U+1EA3n v\U+1EBD kh\U+00F4ng Copy \U+0111\U+01B0\U+1EE3c:  \n+ "
     (TS:lst->str lst_err "\n+ ")
     )
     "@ Tr\U+1EA7n C\U+00F4ng S\U+01A1n _ Detail SS"
     48
     )
     (acet-ui-message
     (strcat "Kh\U+00E1nh \U+01A1i! \n"
       "S\U+1ED1 b\U+1EA3n v\U+1EBD \U+0111\U+00E3 l\U+1ECDc \U+0111\U+01B0\U+1EE3c l\U+00E0:   "
       (itoa (length (vl-directory-files Path_final "*.dwg")))
       " (DWG)"
     )
     "Cao Thanh Kh\U+00E1nh - Steel Structure - Design Division."
     48
     )
     )
    
  )
   )
   (princ)
)

.......................................................................

Mong anh (chị) giúp đỡ.

Thân mến!

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
2 giờ trước, khanhkasu đã nói:

Chào các anh chị diễn đàn Cadviet.

Em có đoạn lisp lọc tên bản vẽ theo file *txt có sẵn. Em xin giải thích sơ về đoạn lisp này:

Giả sử em có các tên bản vẽ lần lượt là: NS1CL001, NS1CL002. NS1CL003, NS1CL004, NS1CL005. Bây giờ em cần lấy 3 bản vẽ có tên NS1CL002,NS1CL003, NS1CL005.

Cách làm của em: Tạo 1 file *TXT có tên bất kỳ, trong file này em viết tên 3 bản vẽ cần lấy ra là: NS1CL002,NS1CL003, NS1CL005.

Sau đó em chạy lisp với tên CFFBYLIST, nó hiện cái bang yêu cầu chon file *TXT, em chon và nó sẽ lọc cho em.

.............................................................................................

Vấn đề của e là nó chạy nhưng báo lỗi " bad argument".

Mong anh chị giúp em tìm lỗi với.

...............................Code của em đây..........................

(defun c:CFFbyList (/ data dwgfinal file lstdwg lst_err path path_dwgfinal path_final)
   (vl-load-com)
   (setvar "Modemacro" "@ Tr\U+1EA7n C\U+00F4ng S\U+01A1n _ Detail SS")
   (if
   (and
   (setq file (getfiled "Ch\U+1ECDn File TXT,CSV c\U+1EA7n loc Final." "" "txt" 16))
   (setq path (vl-filename-directory file))
   (setq data (TS:readcsv file))
   )
  (progn
     ;;-------------------------------------------------------------------------------;;
     (setq lstdir (vl-remove-if
         '(lambda (x) (wcmatch x ".,.."))
         (vl-directory-files path "*" -1)
      )
     )
     (if
     (not (vl-file-directory-p (setq Path_final (strcat path "\\" (vl-filename-base file)))))
    (vl-mkdir Path_final)
     )
     (foreach name data
     (if (> (length (setq lstdwg (TS:directoryfiles path (strcat name "-R*.dwg") T))) 1)
     (progn
     (setq lstdwg
       (vl-sort
          lstdwg
          '(lambda (x1 x2)
           (> (last (TS:ParseNumbers (vl-filename-base x1)))
           (last (TS:ParseNumbers (vl-filename-base x2)))
           )
        )
       )
     )
     )
     )
     (setq path_dwgfinal (car lstdwg)
     dwgfinal   (strcat
          (vl-filename-base path_dwgfinal)
          (vl-filename-extension path_dwgfinal)
          )
     )
     (if (vl-file-copy
      path_dwgfinal
      (strcat Path_final
        "\\"
        dwgfinal
      )
      )
     (vl-file-delete path_dwgfinal)
     (setq lst_err (cons file lst_err))
     )
     )
     (if lstdir
     (mapcar (function (lambda (x)
           (TS:delFolder (strcat path "\\" x))
        )
       )
       lstdir
     )
     )
     (if
     lst_err
     (acet-ui-message
     (strcat
     "\nM\U+1ED9t v\U+00E0i b\U+1EA3n v\U+1EBD kh\U+00F4ng Copy \U+0111\U+01B0\U+1EE3c:  \n+ "
     (TS:lst->str lst_err "\n+ ")
     )
     "@ Tr\U+1EA7n C\U+00F4ng S\U+01A1n _ Detail SS"
     48
     )
     (acet-ui-message
     (strcat "Kh\U+00E1nh \U+01A1i! \n"
       "S\U+1ED1 b\U+1EA3n v\U+1EBD \U+0111\U+00E3 l\U+1ECDc \U+0111\U+01B0\U+1EE3c l\U+00E0:   "
       (itoa (length (vl-directory-files Path_final "*.dwg")))
       " (DWG)"
     )
     "Cao Thanh Kh\U+00E1nh - Steel Structure - Design Division."
     48
     )
     )
    
  )
   )
   (princ)
)

.......................................................................

Mong anh (chị) giúp đỡ.

Thân mến!

Funtion TS:readcsv, TS:ParseNumbers, TS:delFolder ở đâu vậy ?

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àm con đây mấy anh (chị) ơi.

------------------------------------------------------

(defun TS:readcsv (csv / des lst sep str)
   (if (setq des (open csv "r"))
   (progn
   (setq sep
     (cond ((vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList"))
        (",")
     )
   )
   (while (setq str (read-line des))
   (setq lst (cons (vl-string-trim " " (car (TS:csv->lst str sep 0))) lst))
   )
   (close des)
   )
   )
   (reverse lst)
)

-----------------------------------------------------------

(defun TS:ParseNumbers (s)
   (
 (lambda (l)
    (read
    (strcat "("
      (vl-list->string
      (mapcar
      (function
         (lambda (a b c)
         (if
         (or
         (< 47 b 58)
         (and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
         (and (= 46 b) (< 47 a 58) (< 47 c 58))
         )
           b
           32
         )
         )
      )
      (cons nil l)
      l
      (append (cdr l) (list nil))
      )
      )
      ")"
    )
    )
 )
   (vl-string->list s)
   )
)

-----------------------------------------------------------------------------------------

(defun TS:delFolder (folder)
   (vl-load-com)
   (setq fso (vlax-create-object "Scripting.FileSystemObject"))
   (vlax-invoke-method fso 'DeleteFolder folder :vlax-false)
   (vlax-release-object fso)
)

----------------------------------------------------------------------------------------

Mong anh (chị) giúp đỡ.

Thân mến!

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
15 phút trước, khanhkasu đã nói:

Hàm con đây mấy anh (chị) ơi.

------------------------------------------------------

(defun TS:readcsv (csv / des lst sep str)
   (if (setq des (open csv "r"))
   (progn
   (setq sep
     (cond ((vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList"))
        (",")
     )
   )
   (while (setq str (read-line des))
   (setq lst (cons (vl-string-trim " " (car (TS:csv->lst str sep 0))) lst))
   )
   (close des)
   )
   )
   (reverse lst)
)

-----------------------------------------------------------

(defun TS:ParseNumbers (s)
   (
 (lambda (l)
    (read
    (strcat "("
      (vl-list->string
      (mapcar
      (function
         (lambda (a b c)
         (if
         (or
         (< 47 b 58)
         (and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
         (and (= 46 b) (< 47 a 58) (< 47 c 58))
         )
           b
           32
         )
         )
      )
      (cons nil l)
      l
      (append (cdr l) (list nil))
      )
      )
      ")"
    )
    )
 )
   (vl-string->list s)
   )
)

-----------------------------------------------------------------------------------------

(defun TS:delFolder (folder)
   (vl-load-com)
   (setq fso (vlax-create-object "Scripting.FileSystemObject"))
   (vlax-invoke-method fso 'DeleteFolder folder :vlax-false)
   (vlax-release-object fso)
)

----------------------------------------------------------------------------------------

Mong anh (chị) giúp đỡ.

Thân mến!

Có bao nhiêu hàm con thì pót hết lên đi ^_^

Vẫn thiếu TS:directoryfiles, TS:csv->lst. 

Quăng luôn cái file ví dụ lên thì mn mới test đ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
Vào lúc 20/10/2018 tại 17:01, khanhkasu đã nói:

Chào các anh chị diễn đàn Cadviet.

Em có đoạn lisp lọc tên bản vẽ theo file *txt có sẵn. Em xin giải thích sơ về đoạn lisp này:

Giả sử em có các tên bản vẽ lần lượt là: NS1CL001, NS1CL002. NS1CL003, NS1CL004, NS1CL005. Bây giờ em cần lấy 3 bản vẽ có tên NS1CL002,NS1CL003, NS1CL005.

Cách làm của em: Tạo 1 file *TXT có tên bất kỳ, trong file này em viết tên 3 bản vẽ cần lấy ra là: NS1CL002,NS1CL003, NS1CL005.

Sau đó em chạy lisp với tên CFFBYLIST, nó hiện cái bang yêu cầu chon file *TXT, em chon và nó sẽ lọc cho em.

.............................................................................................

Vấn đề của e là nó chạy nhưng báo lỗi " bad argument".

 

Error: bad argument type: stringp nil

Hay là lỗi nào vậy ?

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
3 giờ trước, khanhkasu đã nói:

Đúng là lỗi này đây anh.

Anh xem giúp em với.

Thank anh.

Lỗi funtion này:

(setq lstdwg (ts:directoryfiles path (strcat name "-R*.dwg") t))

nếu lstdwg mà nil thì sẽ báo lỗi đó.

Check lại funtion này thôi hoặc là khi setq 1 biến thì phải check biến đó. Bạn đã viết được cả 1 loạt lisp thế thì có thể tự điều chỉnh lại được.

Good luck.

^_^

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 lisp này nhằm mục đích ntn ?

Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

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 lisp này nhằm mục đích ntn ?

Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

============================================================================================

Chào anh.

Em xin trả lời mấy câu hỏ của anh Bee như sau:

1. Cái lisp này nhằm mục đích ntn?

Cái lisp này nhằm mục đích lọc các bản vẽ theo list cho sẵn, nghĩa là mình có nhiều bản vẽ trong một folder, bây giờ mình cần lấy một số bản vẽ trong folder đó ra.

→ Muốn làm được như vậy thì em tạo 1 file *txt có ghi tên bản vẽ cần lấy ra, sau đó bỏ vào folder cần lấy bản vẽ → Gõ lệnh → nó sẽ lọc ra bản vẽ mình cần lấy.

2. Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

Cái lisp này là của bạn Trần Công Sơn, em chỉ sử dung lại thôi, còn chuyện đổi tên em cũng không biết.

Có gì mong anh giúp đỡ!

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
2 giờ trước, khanhkasu đã nói:

Cái lisp này nhằm mục đích ntn ?

Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

============================================================================================

Chào anh.

Em xin trả lời mấy câu hỏ của anh Bee như sau:

1. Cái lisp này nhằm mục đích ntn?

Cái lisp này nhằm mục đích lọc các bản vẽ theo list cho sẵn, nghĩa là mình có nhiều bản vẽ trong một folder, bây giờ mình cần lấy một số bản vẽ trong folder đó ra.

→ Muốn làm được như vậy thì em tạo 1 file *txt có ghi tên bản vẽ cần lấy ra, sau đó bỏ vào folder cần lấy bản vẽ → Gõ lệnh → nó sẽ lọc ra bản vẽ mình cần lấy.

2. Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

Cái lisp này là của bạn Trần Công Sơn, em chỉ sử dung lại thôi, còn chuyện đổi tên em cũng không biết.

Có gì mong anh giúp đỡ!

Như thế này thì dễ hơn bài 1 rất nhiều.

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
2 giờ trước, khanhkasu đã nói:

Cái lisp này nhằm mục đích ntn ?

Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

============================================================================================

Chào anh.

Em xin trả lời mấy câu hỏ của anh Bee như sau:

1. Cái lisp này nhằm mục đích ntn?

Cái lisp này nhằm mục đích lọc các bản vẽ theo list cho sẵn, nghĩa là mình có nhiều bản vẽ trong một folder, bây giờ mình cần lấy một số bản vẽ trong folder đó ra.

→ Muốn làm được như vậy thì em tạo 1 file *txt có ghi tên bản vẽ cần lấy ra, sau đó bỏ vào folder cần lấy bản vẽ → Gõ lệnh → nó sẽ lọc ra bản vẽ mình cần lấy.

2. Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

Cái lisp này là của bạn Trần Công Sơn, em chỉ sử dung lại thôi, còn chuyện đổi tên em cũng không biết.

Có gì mong anh giúp đỡ!

 

lọc ra bản vẽ mình cần lấy là như thế nào?

- copy /move file ra nơi chỉ định

- mở các bản vẽ đó lên

- .....

Bạn hãy chi tiết cụ thể hơn đi, như vậy không mất thời gian của các bên

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
5 giờ trước, quocmanh04tt đã nói:

Như thế này thì dễ hơn bài 1 rất nhiều.

Chào anh  quocmanh04tt.

Anh có thể chỉnh sửa cho em cái lisp đó không?

Nếu được em xin cảm ơn và hậu ta.

Thân mến anh!

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
5 giờ trước, tien2005 đã nói:

 

lọc ra bản vẽ mình cần lấy là như thế nào?

- copy /move file ra nơi chỉ định

- mở các bản vẽ đó lên

- .....

Bạn hãy chi tiết cụ thể hơn đi, như vậy không mất thời gian của các bên

Chào anh Tien2005..

Em xin trả lời câu hỏi của anh như sau: Mục đích của em là lọc ra một số bản vẽ, move đến folder con (folder này tạo ra trong folder tổng) , không copy và không cần mở bản vẽ lên.

Có gì mong anh giúp đỡ.

Thân mến anh!

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
1 giờ} trướ}c, khanhkasu đã nói:

Chào anh  quocmanh04tt.

Anh có thể chỉnh sửa cho em cái lisp đó không?

Nếu được em xin cảm ơn và hậu ta.

Thân mến anh!

Lisp:

(defun c:tt  (/ file)
 (or #path# (setq #path# ""))
 (if (and (setq file (getfiled "Chon file Final." #path# "txt" 16))
          (setq #path# (vl-filename-directory file)))
  ((lambda (/ file_read line list_filefinal path_final)
    (if (not
         (vl-file-directory-p (setq Path_final (strcat #path# "\\" (vl-filename-base file)))))
     (vl-mkdir Path_final))
    (setq file_read (open file "r"))
    (while (setq line (read-line file_read))
     (setq list_filefinal (cons line list_filefinal)))
    (close file_read)
    (foreach f  (vl-directory-files #path# "*.dwg")
     (if (wcmatch (strcase (vl-filename-base f))
                  (strcase (apply 'strcat
                                  (cons (car list_filefinal)
                                        (mapcar '(lambda (x) (strcat "," x)) (cdr list_filefinal))))))
      (progn (vl-file-copy (strcat #path# "\\" f) (strcat Path_final "\\" f) t)
             (vl-file-delete (strcat #path# "\\" f))))))))
 (princ))

a. Yêu cầu bắt buộc:

- Nội dung trong file.txt: Tên các file cần lọc ngăn cách bằng dấu phẩy "," giống như bài 1 (không có phần .dwg)

- Tên file, tên thư mục không dùng tiếng Việt có dấu, (hoặc tiếng nước khác có ký tự loằng ngoằng...)

- File.txt và các file.dwg nằm cùng thư mục.

b. Tùy chọn: Nội dung trong file.txt theo hàng thì ngăn cách bằng dấy "," như đã nói ở trên, nhưng có thể tạo nhiều hàng (enter xuống dòng). Nếu không dùng dấu "," thì mỗi tên file phải nằm 1 hàng (kiểu như bố trí theo cột).

*** Sau khi chạy: Lisp sẽ tạo ra 1 thư mục có tên là tên của file.txt, các file dwg trong danh sách lọc sẽ di chuyển vào đó.

*** Những file dwg trong danh sách lọc nếu đang mở (hoặc read only) thì chỉ được copy vào thư mục mới chứ không bị xóa ở vị trí cũ.

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

@quocmanh04tt

 Tôi chưa thử nhưng chắc là Lisp này đã thực hiện tốt y/cầu của chủ thớt.

 

Tuy nhiên về mặt lập trình, tôi đề nghị sử dụng giao diện như hình đính kèm có vẽ trực quan hơn ???

(và không cần phải tạo file text)

 

MoveFile.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
11 giờ trước, quocmanh04tt đã nói:

Lisp:

(defun c:tt  (/ file)
 (or #path# (setq #path# ""))
 (if (and (setq file (getfiled "Chon file Final." #path# "txt" 16))
          (setq #path# (vl-filename-directory file)))
  ((lambda (/ file_read line list_filefinal path_final)
    (if (not
         (vl-file-directory-p (setq Path_final (strcat #path# "\\" (vl-filename-base file)))))
     (vl-mkdir Path_final))
    (setq file_read (open file "r"))
    (while (setq line (read-line file_read))
     (setq list_filefinal (cons line list_filefinal)))
    (close file_read)
    (foreach f  (vl-directory-files #path# "*.dwg")
     (if (wcmatch (strcase (vl-filename-base f))
                  (strcase (apply 'strcat
                                  (cons (car list_filefinal)
                                        (mapcar '(lambda (x) (strcat "," x)) (cdr list_filefinal))))))
      (progn (vl-file-copy (strcat #path# "\\" f) (strcat Path_final "\\" f) t)
             (vl-file-delete (strcat #path# "\\" f))))))))
 (princ))

a. Yêu cầu bắt buộc:

- Nội dung trong file.txt: Tên các file cần lọc ngăn cách bằng dấu phẩy "," giống như bài 1 (không có phần .dwg)

- Tên file, tên thư mục không dùng tiếng Việt có dấu, (hoặc tiếng nước khác có ký tự loằng ngoằng...)

- File.txt và các file.dwg nằm cùng thư mục.

b. Tùy chọn: Nội dung trong file.txt theo hàng thì ngăn cách bằng dấy "," như đã nói ở trên, nhưng có thể tạo nhiều hàng (enter xuống dòng). Nếu không dùng dấu "," thì mỗi tên file phải nằm 1 hàng (kiểu như bố trí theo cột).

*** Sau khi chạy: Lisp sẽ tạo ra 1 thư mục có tên là tên của file.txt, các file dwg trong danh sách lọc sẽ di chuyển vào đó.

*** Những file dwg trong danh sách lọc nếu đang mở (hoặc read only) thì chỉ được copy vào thư mục mới chứ không bị xóa ở vị trí cũ.

Chào anh  Quocmanh04tt

Em có làm theo yêu cầu của anh chỉ dẫn ở trên, nhưng vẫn không lọc được anh à.

Bước 01: Em tạo 1 folder có tong tất cả bản vẽ và 1 file *txt có tên bản vẽ cần lọc trong đó

Hinh01.png.e106f1e1f6fd693c5db971136437f245.png

Hinh02.png.301ca60fef481dcf8424c97366d8090a.png

Bước 2: Em chạy lệnh tt thì nó tạo ta 1 folder giống tên của list nhưng không có bản vẽ cần lọc trong đó.

Hinh03.png.a792b00b351e70f94118a58c8c9764ab.png

Anh xem giúp em với.

Thân mến anh!

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
9 phút trước, gia_bach đã nói:

@quocmanh04tt

 Tôi chưa thử nhưng chắc là Lisp này đã thực hiện tốt y/cầu của chủ thớt.

 

Tuy nhiên về mặt lập trình, tôi đề nghị sử dụng giao diện như hình đính kèm có vẽ trực quan hơn ???

(và không cần phải tạo file text)

 

MoveFile.png

Chào Anh Gia Bách.

Em cũng có dung mọt số lisp của anh rồi → rất OK.

Anh có thể giúp em chỉnh sửa file như trên không?

Em xin cảm ơn anh nhiều!

Thân mến!

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

@khanhkasu: Trong list của bạn, filename còn có -R0 phía sau mà.

@Bác GiaBach: Làm như bác thì pro quá, sợ ông chủ không ưng cái bụng. hehehe...

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
21 giờ trước, khanhkasu đã nói:

Cái lisp này nhằm mục đích ntn ?

Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

============================================================================================

Chào anh.

Em xin trả lời mấy câu hỏ của anh Bee như sau:

1. Cái lisp này nhằm mục đích ntn?

Cái lisp này nhằm mục đích lọc các bản vẽ theo list cho sẵn, nghĩa là mình có nhiều bản vẽ trong một folder, bây giờ mình cần lấy một số bản vẽ trong folder đó ra.

→ Muốn làm được như vậy thì em tạo 1 file *txt có ghi tên bản vẽ cần lấy ra, sau đó bỏ vào folder cần lấy bản vẽ → Gõ lệnh → nó sẽ lọc ra bản vẽ mình cần lấy.

2. Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !

Cái lisp này là của bạn Trần Công Sơn, em chỉ sử dung lại thôi, còn chuyện đổi tên em cũng không biết.

Có gì mong anh giúp đỡ!

 

Cái này dùng chỉ để quản lý bản vẽ thôi uh?

Còn mục đích gì nữa không chủ thớt?

Tại sao không dùng các chương trình tìm kiếm file cho nó nhanh 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

thay vì gõ hoặc copy đường dẫn của file Bạn nên dùng các chương trình quản lý file có 2 cửa sổ như Total commander (giống norton commander trước đây) dùng phím insert để chọn các file, F6 để move qua cửa sổ bên kia nhanh hơn

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
47 phút trước, quocmanh04tt đã nói:

@khanhkasu: Trong list của bạn, filename còn có -R0 phía sau mà.

@Bác GiaBach: Làm như bác thì pro quá, sợ ông chủ không ưng cái bụng. hehehe...

Em cảm ơn Anh Quocmanh04tt. Em làm được rồi.

Anh có thể thêm cho em dòng lệnh thống kê số bản vẽ đã lọc được, bản vẽ còn lại một số bản vẽ có trong list (*txt) nhưng không lọc được (do có tên trong file *txt nhưng không có trong folder tổng để lọc).

Em cảm ơn anh nhiều.

Thân mến anh!

 

 

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
5 phút trước, tien2005 đã nói:

thay vì gõ hoặc copy đường dẫn của file Bạn nên dùng các chương trình quản lý file có 2 cửa sổ như Total commander (giống norton commander trước đây) dùng phím insert để chọn các file, F6 để move qua cửa sổ bên kia nhanh hơn

Chào anh tien2005.

Em có dùng chương trình Q-Dir 5.35 có nhiều cửa sổ, nhưng do số bản vẽ của em nhiều quá nên tìm thủ công nó lâu quá anh à + dể sai nữa.

Thân mến anh!

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
25 phút trước, CadExTools đã nói:

 

Cái này dùng chỉ để quản lý bản vẽ thôi uh?

Còn mục đích gì nữa không chủ thớt?

Tại sao không dùng các chương trình tìm kiếm file cho nó nhanh nhỉ?

Chào anh (chị) CadExTools.

HIện tại mục đích của em chỉ là để lọc bản vẽ theo list có sẵn anh (chị) à.

Em có cái ý tưởng là lọc bản vẽ cuối cùng nữa - Em xin giải thích sơ bộ về cái em cần lọc.

Đề bài: Giả sử em có các bản vẽ có tên lần lượt là NS1CL001-R0, NS1CL001-R1, NS1CL001-R2 , NS1CL002-R0, NS1CL002-R1, NS1CL003-R0, NS1CL003-R1. Dựa vào số R0 hoặc R1 hoặc R2

để lấy bản vẽ final.

Kết quả: Em sẽ lấy được các ản vẽ final sau: NS1CL001-R2, NS1CL002-R1, NS1CL003-R1.

Anh ( chị) có thể giúp em cái này không?

Thân mến!

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  

×