Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Lisp save file hiện tại vào 1 chỗ để lưu

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

Trong quá trình bạn vẽ, bạn gặp phải 1 sự thay đổi. Bạn muốn save file lại để phòng sau này cần phải revert. Bạn làm gì?

 

Thông thường, chúng ta sẽ save as sang 1 file khác, đặt tên theo số. Ví dụ MBT3_1, MBT3_2,... Nhưng có 1 nhược điểm là khi bạn vẽ bản vẽ có sử dụng ánh xạ Xref, nếu tên file bị thay đổi, hệ thống ánh xạ theo tên sẽ gặp vấn đề.

 

Lisp dưới đây để giải quyết trường hợp trên. Lệnh OSAVE của nó sẽ Save As Copy file hiện hành vào thư mục có tên là OLD nằm cùng thư mục với bản vẽ hiện hành. Tên file sẽ là TENFILEGOCxxx, trong đó xxx là 3 số sẽ được tự động thêm vào sau mỗi lần dùng lệnh OSAVE. Bạn nhớ rằng lệnh OSAVE không hề thực hiện lệnh Save hay Save As bản vẽ hiện hành. Vì vậy khi tắt CAD, bạn cần phải save nếu không muốn mất dữ liệu (tất nhiên là nếu mất thì sẽ revert từ thư mục OLD được). Tên file gốc không hề thay đổi khi sử dụng lệnh OSAVE.

 

(vl-load-com)
(defun c:osave (/	   curpath    oldpath	 curfname   fname
	bfpattern  fpattern   tapso	 somax	    fnamelist
	strso	   nfname
       )  
 (setq
   curpath   (getvar "DWGPREFIX")
   oldpath   (strcat curpath "OLD")
   curfname  (getvar "DWGNAME")
   fname     (substr curfname 1 (- (strlen curfname) 4))
   Bfpattern (strcat "Z-" fname)
   fpattern  (strcat Bfpattern "*.dwg")
   tapso     nil
   somax     0
 )
 (if (not (vl-file-directory-p oldpath))
   (if	(not (vl-mkdir oldpath))
     (progn
(alert "\nError when create Old directory")	
(exit)
     )
   )
 )
 (setq fnamelist (vl-directory-files oldpath fpattern))
 (foreach fname fnamelist
   (setq daiso	(- (strlen fname) (strlen Bfpattern) 4)
  strso	(substr fname (- (strlen fname) daiso 3) daiso)
  so	(atoi strso)
  somax	(max somax so)
   )
 )
 (setq	somax (1+ somax)
strso (itoa somax)
 )
 (while (    (setq strso (strcat "0" strso))
 )
 (setq nfname (strcat oldpath "\\" Bfpattern strso ".dwg"))
 (command ".save" nfname)
 (princ)
)

  • Vote tăng 2

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

×