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

Nhờ viết lisp ghi đường dẫn file nguồn

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

-Xin chào các Bác. Em mới vào diễn đàn cadviet chẳng có gì xin chúc các anh chị trong diễn đàn ngày càng mạnh khỏe, chúc cadviet ngày càng phát triển hơn.

Em xin nhờ các Anh chị viết cho em một lisp ghi đường dẫn file nguông cùng ngày tháng.

Ví dụ: em đang làm việc trong file nguồn sau: D:\congviec\cong\tenfile.dwg khi làm xong thi mình muốn có 1 lisp ghi như sau:

D:\congviec\cong\tenfile.dwg\ngày tháng hiện tại\giờ. cụ thể D:\congviec\cong\tenfile.dwg-\24-09-2012\7:29 AM.

Kính mong các anh chị trong diễn đàn giúp em.

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

Đâu cần phải viết Autolisp cho phức tạp, bạn chỉ cần 1 Mtext có các Field (trường dữ liệu). Tạo Mtext như sau

1. Nhập lệnh MTEXT

2. Tại dòng thứ nhất: kích chuột phải rồi chọn insert field -> Trong Field Category chọn Orther -> Trong Field names chọn DieselExpression -> Trong màn hình Diesel Expression nhập dòng lệnh sau:

Drawing name: $(getvar, "dwgprefix")$(getvar, "dwgname") - AutoCad version: $(getvar, "ACADVER")

2. Nhấn nút OK để thoát Field rồi tiếp tục Enter để xuống hàng.

4. Tại dòng thứ hai: thao tác như phần nhập lệnh của hàng thứ nhất nhưng có nội dung sau:

Designed by : $(getvar, "LOGINNAME") - Modify Date : $(edtime, $(getvar,date),DDD"," DD MON YYYY - H:MMam/pm)

5. MTEXT sẽ có nội dung sau:

Drawing name: E:\NSD\CONGTRINH\2012\KSHG - HA\T09-2012\KS-KT.dwg - AutoCad version: 19.0s (LMS Tech)

Designed by: KtsCam - Modify Date : Mon, 24 Sep 2012 - 8:21am

Chỉ cấn Copy Mtext này vào các bản vẽ khác nhau ta sẽ có những thông tin trực tiếp tại các bản vẽ đó.

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

Đâu cần phải viết Autolisp cho phức tạp, bạn chỉ cần 1 Mtext có các Field (trường dữ liệu). Tạo Mtext như sau

1. Nhập lệnh MTEXT

2. Tại dòng thứ nhất: kích chuột phải rồi chọn insert field -> Trong Field Category chọn Orther -> Trong Field names chọn DieselExpression -> Trong màn hình Diesel Expression nhập dòng lệnh sau:

Drawing name: $(getvar, "dwgprefix")$(getvar, "dwgname") - AutoCad version: $(getvar, "ACADVER")

2. Nhấn nút OK để thoát Field rồi tiếp tục Enter để xuống hàng.

4. Tại dòng thứ hai: thao tác như phần nhập lệnh của hàng thứ nhất nhưng có nội dung sau:

Designed by : $(getvar, "LOGINNAME") - Modify Date : $(edtime, $(getvar,date),DDD"," DD MON YYYY - H:MMam/pm)

5. MTEXT sẽ có nội dung sau:

Drawing name: E:\NSD\CONGTRINH\2012\KSHG - HA\T09-2012\KS-KT.dwg - AutoCad version: 19.0s (LMS Tech)

Designed by: KtsCam - Modify Date : Mon, 24 Sep 2012 - 8:21am

Chỉ cấn Copy Mtext này vào các bản vẽ khác nhau ta sẽ có những thông tin trực tiếp tại các bản vẽ đó.

cảm ơn bạn kncam đã quan tâm. Bạn ơi cái này cứ upload liên tục mình không quản lý thời gian chính hoàn thành được, vì khi làm xong mình muốn có ngày đó, nhưng cái này khi mở bản vẽ ra thì nó tự động cập nhật các thông số thời gian, ngày tháng hiện tại làm mình rất khó kiểm soát. Một lần nữa củng cảm ơn bạn nhiều. Chúc bạn mạnh khỏe!

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

Lisp thì đây bạn!

(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "dwgname") "-/" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "/" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst)))))

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

Lisp thì đây bạn!


(defun C:HA( / lst)
(command "date")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "dwgname") "-/" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "/" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst)))))

Lisp sao dùng không được bạn ơi, bạn kiểm tra lại xem thế nào với nhé. cả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


(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "dwgname") "-/" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "/" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst)))))

P/S: nếu chạy bị lỗi thì nhấn F2 rồi copy và paste lên xem. Tôi test OK.

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


(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "dwgname") "-/" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "/" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst)))))

P/S: nếu chạy bị lỗi thì nhấn F2 rồi copy và paste lên xem. Tôi test OK.

Không lỗi đâu mà là bác chưa hiểu ý của duongts là

ghi dòng đó thành text trên bản vẽ, với đầy đủ đường dẫn Như D:\gigido\gigido\tenbanve\ngay\gio

phải không duongts???

mà lisp của Bác mới đưa được tên của bản vẽ ngày giờ mà chứ chưa có đường dẫ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

Không lỗi đâu mà là bác chưa hiểu ý của duongts là

ghi dòng đó thành text trên bản vẽ, với đầy đủ đường dẫn Như D:\gigido\gigido\tenbanve\ngay\gio

phải không duongts

Đúng rồi đó, chắc tại mình chưa nói rõ nên Bạn Ha chưa rõ, cảm ơn bạn huunhantvxdts nghe.

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

Đúng rồi đó, chắc tại mình chưa nói rõ nên Bạn Ha chưa rõ, cảm ơn bạn huunhantvxdts nghe.

Cám ơn chi chú, thấy chú cứ báo lỗi mà không nói cụ thể để Bác Hà phải mất thời gian suy nghĩ không biết lỗi chỗ mô A mới cụ thể hóa yêu cầu của chú đó mà

heee, làm cùng chỗ mà khách sáo ghê

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

Mình mạn phép lấy lisp của @Doan Van Ha sửa lại cho Bạn

(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "SAVENAME") "-//" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "//" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst))))
 (ENTMAKE (LIST(CONS 0 "TEXT")(CONS 1 A)(CONS 40 300)(CONS 10 (GETPOINT"\nINSERT POINT"))))
 )

 

lưu ý: (CONS 40 300) trong đó 300 là chiều cao text

  • 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

Mình mạn phép lấy lisp của @Doan Van Ha sửa lại cho Bạn

(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "SAVENAME") "-//" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "//" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst))))
 (ENTMAKE (LIST(CONS 0 "TEXT")(CONS 1 A)(CONS 40 300)(CONS 10 (GETPOINT"\nINSERT POINT"))))
 )

 

lưu ý: (CONS 40 300) trong đó 300 là chiều cao text

Lisp đúng ý của mình rồi, cảm ơn Bác Tien2005 nghe

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

@Tien2005: nên sửa như sau. Bởi khi mở bản vẽ và làm nhưng chưa save thì (getvar "SAVENAME") trả về "" chứ không phải tên bản vẽ.


(defun C:HA( / lst)
(load "julian.lsp")
(setq lst (jtoc (getvar "date")))
(setq a (strcat (getvar "dwgprefix") (getvar "dwgname") "-/" (itoa (nth 2 lst)) "-" (itoa (nth 1 lst)) "-" (itoa (nth 0 lst)) "/" (itoa (nth 3 lst)) ":" (itoa (nth 4 lst))))
(ENTMAKE (LIST(CONS 0 "TEXT")(CONS 1 A)(CONS 40 300)(CONS 10 (GETPOINT"\nINSERT POINT")))))

  • 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

Load Julian code sẽ lâu hơn Diesel code

(defun C:HA( /)
(entmake
(list  (cons 0 "TEXT")
  (cons 1 (strcat (getvar "dwgprefix") (getvar "dwgname") "-/"
(menucmd "M=$(edtime, $(getvar, date),MO/DD/YY HH:MM AM/PM)")))
(cons 40 300)(cons 10 (getpoint "\nINSERT POINT")))))

  • 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

@Doan Van Ha: thông thường thì người ta sẽ lưu file vào môt thư mục nào đó của công trình chứ không lưu vào MyDocument

Trong đoạn string bên trên có 1 dấu "/" thì khi ghi text sẽ thành dấu "?" do đó cần phải có 2 dấu "//" thì ghi text mới đú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

@Doan Van Ha: thông thường thì người ta sẽ lưu file vào môt thư mục nào đó của công trình chứ không lưu vào MyDocument

Trong đoạn string bên trên có 1 dấu "/" thì khi ghi text sẽ thành dấu "?" do đó cần phải có 2 dấu "//" thì ghi text mới đúng

1). Không liên quan gì việc lưu ở đâu.

2). "/" chứ không phả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

 

2). "/" chứ không phải "\".

 

Mình không hiểu ý Bạn ở đoạn trên

Lại học thêm 1 cái nữa: Với đoạn string "-/25/09/12" với autocad2007 thì ghi ra bình thường nhưng với autocad2010 thì ghi ra "-?5?9?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

Chà! Có thế nữa cơ à! Tôi không có cad2012, nhưng có cad2013 ở nhà. Tối về test thử xem sao. Hoặc bạn nào có 2012 thì test giùm với.

Hoặc có thể text đó đang được viết với font "xuyệc" chăng?

"thông thường thì người ta sẽ lưu file vào môt thư mục nào đó của công trình chứ không lưu vào MyDocumentis"

Lisp trên có quan tâm lưu ở đâu đâu nhỉ, thậm chí chưa lưu thì vẫn có kết quả cơ mà?

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  

×