Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Lisp tăng chỉ số


  • Please log in to reply
7 replies to this topic

#1 tutranvan1988

tutranvan1988

    biết zoom

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

Đã gửi 09 August 2011 - 02:12 PM

Em chào các bác.
Em được biết trên diễn đàn đã có list tăng chỉ số.
Ví dụ: C01; C02...
Tuy nhiên trong trường hợp của em bắt đầu là C01-D; em muốn sử dụng list để tạo ra C02-D; C03-D... thì nó lại tăng ký tự cuối cùng là C01-D; C01-E; C01-F.
Em muốn hỏi có bác nào có list để tăng chỉ số trong trường hợp của em không ạ?
Thank cả nhà!
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 August 2011 - 02:31 PM

Em chào các bác.
Em được biết trên diễn đàn đã có list tăng chỉ số.
Ví dụ: C01; C02...
Tuy nhiên trong trường hợp của em bắt đầu là C01-D; em muốn sử dụng list để tạo ra C02-D; C03-D... thì nó lại tăng ký tự cuối cùng là C01-D; C01-E; C01-F.
Em muốn hỏi có bác nào có list để tăng chỉ số trong trường hợp của em không ạ?
Thank cả nhà!

Hề hề hề,
Yêu cầu của bạn không khó, nhưng do bạn đã có file lisp thì hãy gửi nó lên , mọi người sẽ chỉnh file lisp đó giùm bạn , đỡ mất công làm lại từ đầu bạn ạ.
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.

#3 thanhphuocbmt

thanhphuocbmt

    biết vẽ line

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

Đã gửi 09 August 2011 - 02:41 PM

chào anh Bình
  • 0

#4 tinya1225

tinya1225

    biết lệnh copy

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

Đã gửi 09 August 2011 - 02:52 PM

Em chào các bác.
Em được biết trên diễn đàn đã có list tăng chỉ số.
Ví dụ: C01; C02...
Tuy nhiên trong trường hợp của em bắt đầu là C01-D; em muốn sử dụng list để tạo ra C02-D; C03-D... thì nó lại tăng ký tự cuối cùng là C01-D; C01-E; C01-F.
Em muốn hỏi có bác nào có list để tăng chỉ số trong trường hợp của em không ạ?
Thank cả nhà!

Lệnh TCOUNT có thể làm đc cái bạn cần rùi mà sao lại phải dùng lisp nữa.
Và chi tiết về lệnh TCOUNT thì bác Hoành đã trình bày rất rõ rùi bạn đọc thì sẽ làm đc.
Chúc thành công.
  • 0
Thấy bài có ích thì ấn thật nhiều Thank + các bác nhé^^

#5 tutranvan1988

tutranvan1988

    biết zoom

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

Đã gửi 09 August 2011 - 03:54 PM

Hề hề hề,
Yêu cầu của bạn không khó, nhưng do bạn đã có file lisp thì hãy gửi nó lên , mọi người sẽ chỉnh file lisp đó giùm bạn , đỡ mất công làm lại từ đầu bạn ạ.
hề hề hề...

Em sử dụng list này ạ.
Em chưa biết cách upload nên dùng tạm cách copy and patse.
Ở phía dưới có anh nói là dùng tcout. Trong trường hợp này không dùng tcout dược đâu ạ.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=34029
;; 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
;;;**********************************************


;;;-------------------------------------------------
(defun etype (e) ;;;Entity Type
(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 <exit>: "))
(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 <exit>: "))
(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 <exit>: "))
(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)
)
;;;============================

  • 0

#6 tinya1225

tinya1225

    biết lệnh copy

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

Đã gửi 09 August 2011 - 04:20 PM

Em sử dụng list này ạ.
Em chưa biết cách upload nên dùng tạm cách copy and patse.
Ở phía dưới có anh nói là dùng tcout. Trong trường hợp này không dùng tcout dược đâu ạ.

Bạn đã hiểu về lệnh TCOUNT chưa mà nói là không dùng đc vậy. Bạn copy tất cả những chữ cần đánh số với cùng mẫu C01-D, dùng TCOUNT với chức năng find&replace (search string value gõ 1)hoàn toàn có thể làm được theo yêu cầu của bạn.
  • 0
Thấy bài có ích thì ấn thật nhiều Thank + các bác nhé^^

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 August 2011 - 07:55 PM

@tutranvan1988 : Bài của bạn post sai địa chỉ, code thì chưa cho vào thẻ [code], và nhầm lẫn cơ bản giữa ListLisp, mình đã sửa lại, hi vọng bạn không phiền và rút kinh nghiệm nhé :wub:
  • 0

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


#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 10 August 2011 - 12:05 AM

Em sử dụng list này ạ.
Em chưa biết cách upload nên dùng tạm cách copy and patse.
Ở phía dưới có anh nói là dùng tcout. Trong trường hợp này không dùng tcout dược đâu ạ.

Hề hề hề,
Bạn dùng thử cái ni coi ưng ý chưa nhé.


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=34029
;; 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
;;;**********************************************


;;;-------------------------------------------------
(defun etype (e) ;;;Entity Type
(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 <exit>: "))
(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
(command "undo" "be")
(setq
e (car (entsel "\nSelect template text:"))
dn (getint "\nIncrement <1>: ")
p1 (getpoint "\nBase point:")
cn (cdr (assoc 1 (entget e)))
k (strlen cn)
i (getint "\n Nhap so ky tu can giu trong suffix: ")
cn0 (substr cn 1 (- k i))
cn1 (substr cn (1+ (- k i)))
)
(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" cn0)
n (vl-string-subst "" c cn0)
)
(while (setq p2 (getpoint p1 "\nNew point <exit>: "))
(command "copy" e "" p1 p2)
(if (= n "")
(setq cn0 (incC cn0))
(setq cn0 (strcat c (incN (vl-string-subst "" c cn0) dn)))
)
(setq
dat (entget (entlast))
dat (subst (cons 1 (strcat cn0 cn1)) (assoc 1 dat) dat)
)
(entmod dat)
)
(command "undo" "e")
(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 <exit>: "))
(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)
)
;;;============================

Hề hề hề,
Cái ni mình chỉ có sửa bổ sung vào cái lisp của bác SSG nên bạn hãy cám ơn bác ấy nhé.
Khi bạn nhập "Nhap so ky tu can giu trong suffix: " là 0 thì kết quả sẽ y như của bác SSG đã viết.
Trong ví dụ bạn đưa, text mẫu là C01-D thì ở chỗ "Nhap so ky tu can giu trong suffix: " bạn cần nhập là 2. Kết quả sẽ có C02-D, C03-D.... nếu Increament là 1, và kết quả sẽ là C03-D, C05-D nếu increament là 2, ......
Chúc bạn vui,....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.