Đến nội dung


Hình ảnh

Giúp tôi: Ghi tên file vào bản vẽ


  • Please log in to reply
7 replies to this topic

#1 0983329677

0983329677

    biết pan

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

Đã gửi 13 June 2008 - 03:08 PM

Xin chào các bạn.

Tôi có một thắc mắc mong các bạn giúp tôi.

Tôi đang dùng lệnh RText để ghi đường dẫn của bản vẽ

Tôi muốn nhờ ai viết cho 1 auto lisp để đơn giản công việc này.

Giúp tôi nhé.

Thank.
  • 0

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 13 June 2008 - 03:59 PM

lệnh FNAME dưới đây sẽ giúp bạn:


(defun c:fname (/ sty d h)
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(entmake (list (cons 0 "TEXT")
(cons 7 sty)
(cons 1
"%<\\AcVar Filename \\f \"%fn7\">%"
)
(cons 10 (getpoint "\nVi tri text: "))
(if (> h 0)
(cons 40 h)
(assoc 40 d)
)
(assoc 41 d)
)
)
(command ".updatefield" (entlast) "")
(princ)
)

  • 1

#3 telico.khoavd

telico.khoavd

    Chưa sử dụng CAD

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

Đã gửi 14 June 2008 - 03:22 PM

Rất đơn giản, nếu bạn muốn chèn tên file vào bản vẽ chọn INSERT - Field - FileName chọn vị trí cần chèn thế là ok.
  • 0

#4 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 25 June 2008 - 08:00 AM

Mình ko biết bạn dùng CAD???? chứ CAD2004 mình đâu thấy Fielf-FileName như bạn chỉ nhỉ.

Cad2004 trở về trước không có tính năng này.
Về lisp cũng vậy, có lẽ anh Hoành quên không để ý, lisp trên không dùng được cho Cad đời cũ.
Bạn có thể dùng lisp sau, lệnh FN, không phân biệt version:


;;;-------------------------------------------------------
(defun wtxt (txt p ) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:FN () ;;;Write full filename on graphic screen
(wtxt (findfile (getvar "dwgname")) (getpoint "\nVi tri ghi FileName:"))
(princ)
)
;;;-------------------------------------------------------

  • 2

#5 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 25 June 2008 - 03:22 PM

Tuyệt cú mèo. Cảm ơn bạn nhé. Nhưng bạn có thể giúp thêm đường dẫn có dạng thế này ko:
Time - date - Path (Tức là: Giờ lưu BV sau cùng - Ngày lưu bản vẽ - Đường dẫn)

Đây bạn, tên lệnh MTF (Modified Time and Filename). Nhưng bạn nên rút kinh nghiệm, lần sau có nêu yêu cầu thì nêu luôn 1 thể, từ nội dung đến hình thức trình bày.

;;;-------------------------------------------------------
(defun wtxt (txt p ) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:MTF ( / fn mt txt)
;;;Write last Modified Time and full Filename on graphic screen
(setq
fn (findfile (getvar "dwgname"))
mt (menucmd "M=$(edtime,$(getvar,tdupdate),HH:MM - DD/MO/YYYY)")
txt (strcat mt " - " fn)
)
(wtxt txt (getpoint "\nBase point:"))
(princ)
)
;;;-------------------------------------------------------

  • 1

#6 dat_interart

dat_interart

    biết zoom

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

Đã gửi 26 September 2008 - 04:21 PM

1 gõ rtext
2 chọn diesel
3 copy dòng lệnh này vào bảng hiện lên
$(edtime, 0, mon dd"," yyyy - h:mmam/pm) $(getvar, "dwgprefix") $(getvar, "dwgname")
  • 0

#7 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 16 March 2009 - 12:00 AM

Lâu quá ko thấy bác nào giúp cả, diễn đàn minhg thiếu nhiệt tình nhỉ. Tự mò mẫm với Lisp FN trên diễn đàn được thế này mong các bác chỉnh sửa lại cho hay nhất

;;; ====== Ghi duong dan File vao ban ve CAD =======
;;;-------------------------------------------------------
(defun wtxt (txt p )
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:FN ( / logn fname mt txt)
(setq
logn (getvar "loginname")
fname (findfile (getvar "dwgname"))
mt (menucmd "M=$(edtime,$(getvar,tdupdate),HH:MM_DD/MO/YY)")
txt (strcat "[" logn "_" mt "] " fname)
)
(command ".layer" "n" "TEXTfn" "c" "8" "TEXTfn" "s" "TEXTfn" "")
(command ".style" "TEXTfn" "vnsimple" "2" "0.7" "" "" "")

(wtxt txt (getpoint "\nChon diem dat:"))

(command ".rotate" "l" "" (getpoint "\nChon diem xoay:") "r" "0" )
(princ)
(prompt "\nBan da hoan thanh_Chuc thanh cong")
(princ)
)
;;;-------------------------------------------------------

Chào bạn philipdn,
Có vài điều góp ý với bạn như sau:
1/- Bạn đã chứng tỏ rằng bạn có một kiến thức về lisp không tồi. Hơn nữa bạn cũng đã là thành viên khá lâu của diễn đàn này. Chắc bạn cũng đã hiểu khá rõ về mục đích của diễn đàn này. Đó là giúp nhau cùng tiến bộ chứ không phải là làm hộ nhau hay là để ỷ lại vào nhau.
Việc bạn trách móc như vậy chưa hẳn đúng đâu. Rõ ràng là bạn có khả năng chỉnh sửa lisp và có thể làm được cái điều không quá khó mà bạn đã post. Vậy mà bạn vẫn yêu cầu người khác giúp. Không những thế bạn lại hơi quá đáng khi chỉ một yêu cầu của bạn mà bạn không nói rõ ràng đầy đủ ngay từ đầu, lại post lắt nhắt, mỗi lần một tí như kiểu trẻ con vậy. Bác SSG đã từng nói trên diễn đàn yêu cầu mọi ngừoi có yêu cầu viết lisp cần phải suy nghĩ đầy đủ và nghiêm túc để chỉ post yêu cầu một lần. Khi đã viết lisp đúng với yêu cầu đặt ra thì bác ấy sẽ không chấp nhận viết thêm các yêu cầu phụ mà người yêu cầu viết muốn thêm nữa vì điều đó chứng tỏ người yêu cầu không tôn trọng người viết. Với bạn bác ấy đã cảnh báo một lần rồi mà. Bạn nên tự rút kinh nghiệm thì hơn là trách móc mọi người.
2/- Thực ra mình thấy cách suy luận của bạn chưa hay lắm khi làm lisp. Rõ ràng trong bộ mã DXF của một text đã có đầy đủ các mã tương ứng với yêu cầu của bạn. Vì thế bạn chỉ cần bổ sung hay thay thế các mã tương ứng với các yêu cầu của bạn trong hàm entmake là được không cần phải sử dụng phức tạp như bạn là dùng hàm lệnh style, lệnh rotate. Cụ thể:
mã 62 chỉ thị màu của text, mã 50 chỉ thị góc xoay text, mã 8 chỉ thị lớp của text, mã 1 chỉ nội dung text, mã 40 chỉ chiều cao text, mã 41 chỉ hệ số chiều rông text, .......
Do đó, với cái líp của bác SSG, bạn chỉ cần bổ sung biến logn như bạn đã làm, bổ sung hàm đặt tên lớp mà bạn muốn chọn, bổ sung hàm lệnh layer để tạo lớp có tên như bạn chọn và cuối cùng là bổ sung và thay thế các bộ mã tương ứng với yêu cầu của bạn vào trong list các mã của hàm enmake là OK.
Như vậy lisp sẽ gọn và mạch lạc hơn bạn ạ.
Bạn hãy thử làm như mình gợi ý xem nhé. Nếu gặp khó khăn thì bạn hãy post lên mình sẽ giúp.
Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 xuangiangtedi

xuangiangtedi

    biết vẽ line

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

Đã gửi 16 March 2009 - 10:04 AM

Mình không biết các bạn dùng CAD nào còn nếu dùng CAD 2008 trở lên thì vấn đề này rất đơn giản cũng không cần phải viết lip bởi trong CAD đã có sẵn tính năng này rùi. bạn chi cần làm theo các hình sau la oke luôn có đầy đủ thông tin cho bạn lựa chọn, từ đường dẫn, tên người dùng, ngày chỉnh sửa, font chữ, cỡ chữ, góc xoay...
Bạn xem các hình vẽ ở đây nhé!
( nhân tiện các cho hỏi luôn: mình thấy mọi ngouwì gắn ảnh trực tiếp vào bài viết được, không biết các bạn làm cách nào hay vậy)
http://www.cadviet.c...pfiles/h1_1.jpg
http://www.cadviet.c...pfiles/h2_1.jpg
http://www.cadviet.c...pfiles/h3_1.jpg
  • 0