Đến nội dung


Hình ảnh
- - - - -

Đánh số thứ tự cho text thuộc tính!


  • Please log in to reply
24 replies to this topic

#1 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 08 August 2010 - 03:54 PM

Tôi dùng bản vẽ có khung tên là block thuộc tính gồm có các text thuộc tính là số thứ tự bản vẽ. Xin hỏi có cách nào hiệu chỉnh nhanh chóng số thứ tự bản vẽ ko (chỉ cần chọn các block là số thứ tự bản vẽ thay đổi thành 1, 2, 3, 4, ...). Xin cảm ơn rất nhiều!
  • 0

#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 09 August 2010 - 08:05 AM

Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa ...
vớii yêu cầu thế này thì chỉ có thể giúp bạn đánh số thứ tự từng bản vẽ.
Giữ shift trong khi pick nếu muốn giảm dần số thứ tự
(defun C:STT (/ i Ti DMZLAST GiaSo1 ST1)
(if (not GiaSo) (setq GiaSo 1))
(if (not ST) (setq ST 1))
(setq DMZLAST (getvar "Dimzin"))
(setvar "Dimzin" 8)
(setq GiaSo1 (getreal (strcat "- Nhap gia so <" (rtos GiaSo 2) ">: "))
ST1 (getreal (strcat"\nGia tri so dau tien <" (rtos ST 2) ">: "))
i 0)
(if GiaSo1 (setq GiaSo Giaso1))
(if ST1 (setq ST ST1))
(while (setq Ti (nentsel (strcat "\nChon text thu " (rtos (1+ i) 2))))
(if (= i 0)
(thai-entmod-entsel 1 (rtos ST 2) Ti)
(progn
(if (not (acet-sys-shift-down))
(setq ST (+ ST GiaSo))
(setq ST (- ST GiaSo))
);if
(princ (strcat ": " (rtos ST 2)))
(thai-entmod-entsel 1 (rtos ST 2) Ti)
);progn
);if
(setq i (1+ i))
);while
(setvar "Dimzin" DMZLAST)
(prompt " - End")
(princ)
);end STT
(defun thai-entmod-entsel (code value obj / RES)
(setq RES (entget (car obj)))
(entmod (subst (cons code value) (assoc code RES) RES))
)

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 09 August 2010 - 01:39 PM

Phần Lisp của bản chỉ thay đổi cho text thông thường. Còn khung tên của tôi là block có chứa nhiều thuộc tính, trong đó có thuộc tính số bản vẽ là các giá trị: 1, 2, 3, 4, ... Tôi muốn hiệu chỉnh các số này từ 1 cho đến số lớn nhất bằng cách thực hiện giống như lisp đánh chữ theo thứ tự của CADVIET đó.
  • 0

#4 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 09 August 2010 - 03:49 PM

Bạn có thể dùng lisp này
 
(defun etype (e);;;Entity Type
;; free lisp from cadviet.com

;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************


;;;-------------------------------------------------



(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h);;;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 incN (n dn / n2 i n1);;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2);;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "["))
(progn (command "erase" (entlast) "") (alert "Over character!") (exit))
(strcat c1 c2)
)
)
;;;============================
(defun C:OD( / cn dn c n p);;;Make OrDinal number with any format
(setq
cn (getstring "\nBegin at <1>: " T)
dn (getint "\nIncrement <1>: ")
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn))
(setq n (vl-string-subst "" c cn))
(if (/= n "") (setq mode 1) (setq mode 0))
(while (setq p (getpoint "\nBase point : "))
(wtxt cn p)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
)
(princ)
)
;;;============================
(defun C:OC( / e dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from template
(setq
e (car (entsel "\nSelect template text:"))
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e "" p1 p2)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
(setq
dat (entget (entlast))
dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
)
(princ)
)
;;;============================
(defun C:OCA( / e e0 dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from Atttribute block
(setq
e0 (car (entsel "\nSelect attribute block:"))
e (entnext e0)
)
(if (/= (etype e) "ATTRIB") (progn (alert "Object is not a Attribute Block!") (exit)))
(setq
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e0 "" p1 p2)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
(setq
dat (entget (entnext (entlast)))
dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
(command "regen")
)
(princ)
)
;;;============================

  • 2



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#5 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 09 August 2010 - 05:10 PM

Phần Lisp của bản chỉ thay đổi cho text thông thường. Còn khung tên của tôi là block có chứa nhiều thuộc tính, trong đó có thuộc tính số bản vẽ là các giá trị: 1, 2, 3, 4, ... Tôi muốn hiệu chỉnh các số này từ 1 cho đến số lớn nhất bằng cách thực hiện giống như lisp đánh chữ theo thứ tự của CADVIET đó.

Bạn có chắc chắn điều bạn đang nói không đó. mình khẳng định lisp của mình chạy đc với không chỉ text thuộc tính mà cả text thuờng trong block.
Nếu chắn chắn điều bạn nói là đúng thì bạn có thể up khung tên của bạn để mình xem đc không?
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#6 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 09 August 2010 - 07:40 PM

Bạn có chắc chắn điều bạn đang nói không đó. mình khẳng định lisp của mình chạy đc với không chỉ text thuộc tính mà cả text thuờng trong block.
Nếu chắn chắn điều bạn nói là đúng thì bạn có thể up khung tên của bạn để mình xem đc không?

Mình xin up file khung tên để bạn xem và giúp mình nhé. Thanks!
http://www.cadviet.c...3/khung_ten.dwg
  • 0

#7 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 10 August 2010 - 11:31 AM

Giúp mình với!!!
  • 0

#8 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 10 August 2010 - 02:14 PM

Mình xin up file khung tên để bạn xem và giúp mình nhé. Thanks!
http://www.cadviet.c...3/khung_ten.dwg

lạ thật. mình chạy bản vẽ của bạn có vấn đề gì đâu. stt vẫn nhảy tanh tách mà :(
quên mất, bạn cài express tool chưa?
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#9 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 10 August 2010 - 04:17 PM

lạ thật. mình chạy bản vẽ của bạn có vấn đề gì đâu. stt vẫn nhảy tanh tách mà :(
quên mất, bạn cài express tool chưa?

Mình cài rồi. Mà mình dùng cad 2007.
  • 0

#10 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 10 August 2010 - 06:20 PM

Mình cài rồi. Mà mình dùng cad 2007.

thế thì chịu rồi. chắc máy của bạn bị lỗi. nếu không chạy đc lisp này thì máy của bạn ko thể chạy đc bất kỳ lisp nào tuơng tự đâu
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#11 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 10 August 2010 - 09:43 PM

thế thì chịu rồi. chắc máy của bạn bị lỗi. nếu không chạy đc lisp này thì máy của bạn ko thể chạy đc bất kỳ lisp nào tuơng tự đâu

Mình làm được rồi nhưng phải dùng lệnh regen thì nó mới thay đổi. Bạn có cách nào chọn nhiều block và nó sẽ tự động thay đổi toàn bộ thuộc tính không.
  • 0

#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 August 2010 - 07:51 AM

Mình làm được rồi nhưng phải dùng lệnh regen thì nó mới thay đổi. Bạn có cách nào chọn nhiều block và nó sẽ tự động thay đổi toàn bộ thuộc tính không.

Bạn thêm dòng này nữa :
(entupd (car obj))

Vị trí thêm :
(defun thai-entmod-entsel (code value obj / RES)
    (setq RES (entget (car obj)))
    (entmod (subst (cons code value) (assoc code RES) RES))
(entupd (car obj))
)

Để chọn nhiều block như bạn muốn thì như Thaistreetz đã nói : "Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa "
  • 2

#13 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 11 August 2010 - 09:49 AM

Bạn thêm dòng này nữa :
(entupd (car obj))

Vị trí thêm :
(defun thai-entmod-entsel (code value obj / RES)
    (setq RES (entget (car obj)))
    (entmod (subst (cons code value) (assoc code RES) RES))
(entupd (car obj))
)

Để chọn nhiều block như bạn muốn thì như Thaistreetz đã nói : "Để đánh số hàng loạt 1 nhát ăn ngay thì fải biết đuợc rõ quy tắc đánh số bản vẽ của bạn như thế nào, định dạng khung tên của bạn nữa "

Khung tên mình có up lên rồi đó, phần số thứ tự bản vẽ chỉ là các số nguyên dương thôi: 01, 02, 03, ... (không kèm theo ký tự gì cả). Bạn xem và giúp mình với.
http://www.cadviet.c...3/khung_ten.dwg
  • 0

#14 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 12 August 2010 - 10:11 AM

Giúp mình với các bạn, mình đang cần gấp lắm. Hic hic...
  • 0

#15 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 13 August 2010 - 05:55 PM

Giúp mình với các bạn, mình đang cần gấp lắm. Hic hic...

Hề hề hề,...
Không giúp được vì download file bạn gửi không được, hề hề hề...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#16 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 13 August 2010 - 09:58 PM

Giúp mình với các bạn, mình đang cần gấp lắm. Hic hic...

bạn khóc ghê quá!
đánh số thứ tự của khung tên thì đâu cần gấp đến thế nhỉ? hồ sơ của bạn có đến vài trăm bản vẽ thì nếu không có công cụ mình ngồi pick cũng chỉ 1 tẹo là xong.
thêm nữa, bạn nhờ người khác làm nhưng bản thân bạn có lẽ cũng chưa hiểu rõ mình muốn gì. mỗi bản vẽ 1 khung tên, vậy trong cả đám khung tên ấy bạn đánh số thứ tự cho nó theo quy tắc nào? cái nào trước cái nào sau? bạn chỉ có bản vẽ trên model hay cả layout, hồ sơ thiết kế của bạn có để chung tất cả bản vẽ trên 1 file hay để trên nhiều file... v.v phải có đủ các điều kiện đó thì người ta mới có thể giúp bạn đc chứ.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#17 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 14 August 2010 - 10:24 AM

bạn khóc ghê quá!
đánh số thứ tự của khung tên thì đâu cần gấp đến thế nhỉ? hồ sơ của bạn có đến vài trăm bản vẽ thì nếu không có công cụ mình ngồi pick cũng chỉ 1 tẹo là xong.
thêm nữa, bạn nhờ người khác làm nhưng bản thân bạn có lẽ cũng chưa hiểu rõ mình muốn gì. mỗi bản vẽ 1 khung tên, vậy trong cả đám khung tên ấy bạn đánh số thứ tự cho nó theo quy tắc nào? cái nào trước cái nào sau? bạn chỉ có bản vẽ trên model hay cả layout, hồ sơ thiết kế của bạn có để chung tất cả bản vẽ trên 1 file hay để trên nhiều file... v.v phải có đủ các điều kiện đó thì người ta mới có thể giúp bạn đc chứ.

Cảm ơn bạn nhiều!
Bản vẽ của mình đều làm trên model, tất cả bản vẽ đều vào chung một file. Mình tính đánh số thứ tự theo quy tắc tăng dần từ trên xuống dưới, và từ trái qua phải. Hoặc có thể theo thứ tự lựa chọn, có nghĩa là khung tên nào chọn trước sẽ đánh stt trước.
Giúp mình với bạn nhé!
  • 0

#18 thanhphong2002

thanhphong2002

    biết zoom

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

Đã gửi 16 August 2010 - 02:09 PM

Bạn Thái đâu rồi nhỉ?
  • 0

#19 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 August 2010 - 03:36 PM

Bạn Thái đâu rồi nhỉ?

Chào bạn thanhphong2002,
Trong lúc chờ bác Thái ra tay, bạn dùng thử cái này xem sao.
Lisp này chỉ xài được cho các block khung tên có cái tên đúng như trên bản vẽ bạn post là "A3-ko khung ten.fv.5x". Nếu bạn muốn xài với các block khung tên khác thì mình không chịu trách nhiệm. Hề hề hề.
Lisp này sẽ đánh số bản vẽ theo thứ tự bạn nhập khung tên vào bộ chọn và bắt đầu đánh từ số bạn nhập vào tăng dần với công sai là 1. Nếu bạn không nhập giá tri bắt dầu đánh số thì lisp sẽ tự đánh số bắt đấu là 1.
Tuy chưa hoàn toàn tối ưu song mình nghĩ có thể giúp bạn phần nào trong lúc bạn chờ các bác khác. Chúc bạn vui.
Lisp đây:

(defun c:chatt (/ ss n i en en1 els1 k bln att)
(command "undo" "be")
(setq ext (getvar "extnames"))
(setvar "extnames" 1)
(setq k (getint "\n Nhap gia tri bat dau danh so: "))
(if (= k nil)
(setq k 1)
)
(setq bln (getstring T "\n Chon ten block khung ten: "))
(setq ss (ssget (list (cons 0 "insert") (cons 2 bln)))
n (sslength ss)
i 0)
(setq att (getstring "\n Chon ten thuoc tinh STT: "))
(while (< i n)
(setq en (ssname ss i)
en1 (entnext en)
els1 (entget en1))

(while (/= (cdr(assoc 0 els1)) "SEQEND")

(if (= (cdr (assoc 2 els1)) att)
(progn
(setq els1 (subst (cons 1 (strcat "0" (rtos (+ k i) 2 0))) (assoc 1 els1) els1))
(entmod els1)
(entupd en1)
)
)
(setq en1 (entnext en1)
els1 (entget en1))
)
(setq i (1+ i))
)
(setvar "extnames" ext)
(command "undo" "e")
(princ)
)



Bài được chỉnh sửa bởi Pham Thanh Binh ngày 22-8-2010 để cho phép người sử dụng nhập tên block khung tên và thuộc tính STT bản vẽ.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#20 hailuavnn

hailuavnn

    biết vẽ ellipse

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

Đã gửi 19 August 2010 - 01:33 PM

Bạn có thể dùng lisp này

 
(defun etype (e);;;Entity Type
;; free lisp from cadviet.com

;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************
;;;-------------------------------------------------
(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h);;;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 incN (n dn / n2 i n1);;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2);;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "["))
(progn (command "erase" (entlast) "") (alert "Over character!") (exit))
(strcat c1 c2)
)
)
;;;============================
(defun C:OD( / cn dn c n p);;;Make OrDinal number with any format
(setq
cn (getstring "\nBegin at <1>: " T)
dn (getint "\nIncrement <1>: ")
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn))
(setq n (vl-string-subst "" c cn))
(if (/= n "") (setq mode 1) (setq mode 0))
(while (setq p (getpoint "\nBase point : "))
(wtxt cn p)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
)
(princ)
)
;;;============================
(defun C:OC( / e dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from template
(setq
e (car (entsel "\nSelect template text:"))
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e "" p1 p2)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
(setq
dat (entget (entlast))
dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
)
(princ)
)
;;;============================
(defun C:OCA( / e e0 dn p1 cn c n p2 dat);;;Make Ordinal number. Copy from Atttribute block
(setq
e0 (car (entsel "\nSelect attribute block:"))
e (entnext e0)
)
(if (/= (etype e) "ATTRIB") (progn (alert "Object is not a Attribute Block!") (exit)))
(setq
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
)
(if (not dn) (setq dn 1))
(if (= cn "") (setq cn "1"))
(setq
c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)
n (vl-string-subst "" c cn)
)
(while (setq p2 (getpoint p1 "\nNew point : "))
(command "copy" e0 "" p1 p2)
(if (= n "")
(setq cn (incC cn))
(setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))
)
(setq
dat (entget (entnext (entlast)))
dat (subst (cons 1 cn) (assoc 1 dat) dat)
)
(entmod dat)
(command "regen")
)
(princ)
)
;;;============================


Chào bạn, đây cũng là một cách hay. Nhưng cách này cũng hơi thủ công quá là các bản vẽ được copy ra đều có đánh số thứ tự hẳn hoi, nhưng ngặc nổi là các tên của bản vẽ ( MB trệt, MB lầu...)và các thông tin khác nữa, cái này trong lúc vẽ mình đã hiệu chỉnh rồi. Cái quan trọng nhất là lúc cuối cùng, Khi tấc cả bản vẽ đã xong công đoạn cuối cùng là đánh số thứ tự cho toàn bộ bản vẽ. Trong Block bản vẽ có các Attribute giả sử mình chọn Attribute "STT" để đánh số thứ tự chẳn hạn thì khi ta chọn lệnh xong, bắt đầu Select các Block khung tên ( cái này thường thấy thì theo từ trái sang phải hoặc sang trái ) Khi mình Select các Block theo một hướng cụ thể , =>> Enter =>> nhập số bắt đầu =>> OK =>> Thì nó sẽ đánh số thứ thư theo các Attribute "STT" ban đầu. Như thế là OK, còn nếu muốn đánh STT theo một chiều khác từ dưới lên trên hoặc ngược lại, để đánh STT cho toàn bộ bản vẽ. Nếu được như thế thì tuyệt quá.
  • 0