Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
19 replies to this topic

#1 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 07:30 AM

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

#2 kncam

kncam

    biết lệnh rotate

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

Đã gửi 24 September 2012 - 08:37 AM

Đâ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ẽ đó.
  • 0
nongdan@sg

#3 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 09:17 AM

Đâ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!
  • 0

#4 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 24 September 2012 - 11:16 AM

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

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


#5 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 02:33 PM

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

#6 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 24 September 2012 - 02:51 PM

Srr, tôi đã sửa, vẫn link cũ. Bạn down lại nhé!
  • 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.


#7 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 03:46 PM

Srr, tôi đã sửa, vẫn link cũ. Bạn down lại nhé!

Link vẫn như cũ bạn ơi, vẫn không dùng được. bạn cho link mới nhé
  • 0

#8 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 24 September 2012 - 03:49 PM



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


#9 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 24 September 2012 - 04:00 PM



(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
  • 0

#10 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 04:04 PM

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

#11 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 24 September 2012 - 04:08 PM

Đú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ê
  • 0

#12 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 24 September 2012 - 04:19 PM

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

#13 duongts

duongts

    biết vẽ line

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

Đã gửi 24 September 2012 - 04:36 PM

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

#14 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 24 September 2012 - 04:44 PM

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

  • 1

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


#15 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 September 2012 - 05:12 PM

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

  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 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 24 September 2012 - 05:16 PM

Cũng phải chỉnh tí xíu nữa để nó ra 24-9-2012 như ý chủ topic
  • 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.


#17 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 25 September 2012 - 09:13 AM

@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
  • 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 September 2012 - 09:26 AM

@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 "\".
  • 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 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 25 September 2012 - 09:41 AM


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"
  • 0

#20 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 September 2012 - 09:53 AM

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à?
  • 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.