Chuyển đến nội dung
Diễn đàn CADViet
leemindjan

Cần gấp lisp tăng giá trị khi chọn

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

Các bác giúp mình với,mình đang cần lisp này gấp lắm,mình lỡ đánh số cọc gần cả ngàn cọc nhưng phát hiện đánh thiếu 1 cọc,nên bi giờ đánh số cọc đó thì các cọc sau phải đánh số tăng thêm 1,mà cả ngàn số như vậy thì edit đến bao giờ,các bác có biết lisp nào mà khi bấm chọn vào số đó thì sẽ tăng lên 1,nếu chọn vào cả nhóm và cả nhóm tăng lên 1 thì càng hay,nếu mà cho phép chọn giá trị để tăng thì càng hay nữa ( :mellow: ) ví dụ mình đánh thiếu 2 cọc thì muốn nó tăng lên 1 lúc 2 giá trị luôn.Giúp giùm mình nhé,cần gấp lắ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
Các bác giúp mình với,mình đang cần lisp này gấp lắm,mình lỡ đánh số cọc gần cả ngàn cọc nhưng phát hiện đánh thiếu 1 cọc,nên bi giờ đánh số cọc đó thì các cọc sau phải đánh số tăng thêm 1,mà cả ngàn số như vậy thì edit đến bao giờ,các bác có biết lisp nào mà khi bấm chọn vào số đó thì sẽ tăng lên 1,nếu chọn vào cả nhóm và cả nhóm tăng lên 1 thì càng hay,nếu mà cho phép chọn giá trị để tăng thì càng hay nữa ( :mellow: ) ví dụ mình đánh thiếu 2 cọc thì muốn nó tăng lên 1 lúc 2 giá trị luôn.Giúp giùm mình nhé,cần gấp lắm.

Bạn xem lisp dồn số hiệu bản vẽ ở đây: http://www.cadviet.com/cadnews/content/view/22/34/

  • 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

(defun myerror (s)
 (cond
   ((= s "quit / exit abort") (princ))
   ((/= s "Function cancelled") (princ (strcat "\nError: " s)))
 )
 (setvar "cmdecho" CMD)		; Restore saved modes
 (setvar "osmode" OSM)
 (setq *error* OLDERR)			; Restore old *error* handler
 (princ)
)
(defun intro ()
 (princ "\nCopyright by Nguyen Gia Dat (Datnggia@gmail.com - 0915169886)")
)
(defun bocchu (ss1 c)
 (setq ob (entget (ssname ss1 c)))
 (setq ts (assoc 1 ob))
 (setq a (cdr ts))
)
(defun sothanhchu (num) (rtos num 2 2))
(defun connumint (num) (rtos num 2 0))
(defun thaychu (Ob newstr)
 (setq txtstr (assoc 1 Ob))
 (setq newstr (cons 1 newstr))
 (entmod (subst newstr txtstr Ob))

)
(defun chonchu (dongnhac)
 (prompt dongnhac)
 (ssget
   '((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))
 )
)
(defun chon (str) (ssget '((cons (0 str)))))
(defun bamchon (st) (entget (car (entsel st))))
(defun bocdt (ss1 c) (entget (ssname ss1 c)))


;;; Sua nhieu text (cong tru gia tri thuc)
(defun c:3 ()
 (command "undo" "mark")
 (intro)
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getreal Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 2)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
				;(if (< num 10)
				; (setq st (strcat "0" (connumint num)))
   (setq st (sothanhchu num))
				; )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

;;; Sua nhieu text (cong tru gia tri nguyen)
(defun c:4 ()
 (intro)
 (command "undo" "mark")
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getint Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 0)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
   (if	(< num 10)
     (setq st (strcat "0" (connumint num)))
     (setq st (connumint num))
   )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:5 ()
 (intro)
 (command "undo" "mark")
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getreal Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 2)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
   (if	(> num 0)
     (setq st (strcat "+" (sothanhchu num)))
     (setq st (sothanhchu num))
   )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

 

 

Lệnh "3": tăng giảm nhiều số dưới dạng số thực

Lệnh "4": tăng giảm các số nguyên (dạng số thứ tự)

Lện "5": tăng giảm các số nguyên có chứa dấu (dạng cao độ)

Hy vọng giúp ích cho bạ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

Chết thật! trong lúc em post bài thì bác Hoanh đã kịp trả lời trước rồi. Lisp của mình có thể kết hợp với các biện pháp chọn lọc đối tượng text - sẽ đem lại hiệu quả nhanh hơn (Tất nhiên ko thể so sánh với bộ công cụ trên của bác Hoành :mellow:

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
Bạn xem lisp dồn số hiệu bản vẽ ở đây: http://www.cadviet.com/cadnews/content/view/22/34/

 

 

(defun myerror (s)
 (cond
   ((= s "quit / exit abort") (princ))
   ((/= s "Function cancelled") (princ (strcat "\nError: " s)))
 )
 (setvar "cmdecho" CMD)		; Restore saved modes
 (setvar "osmode" OSM)
 (setq *error* OLDERR)			; Restore old *error* handler
 (princ)
)
(defun intro ()
 (princ "\nCopyright by Nguyen Gia Dat (Datnggia@gmail.com - 0915169886)")
)
(defun bocchu (ss1 c)
 (setq ob (entget (ssname ss1 c)))
 (setq ts (assoc 1 ob))
 (setq a (cdr ts))
)
(defun sothanhchu (num) (rtos num 2 2))
(defun connumint (num) (rtos num 2 0))
(defun thaychu (Ob newstr)
 (setq txtstr (assoc 1 Ob))
 (setq newstr (cons 1 newstr))
 (entmod (subst newstr txtstr Ob))

)
(defun chonchu (dongnhac)
 (prompt dongnhac)
 (ssget
   '((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))
 )
)
(defun chon (str) (ssget '((cons (0 str)))))
(defun bamchon (st) (entget (car (entsel st))))
(defun bocdt (ss1 c) (entget (ssname ss1 c)))


;;; Sua nhieu text (cong tru gia tri thuc)
(defun c:3 ()
 (command "undo" "mark")
 (intro)
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getreal Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 2)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
				;(if (< num 10)
				; (setq st (strcat "0" (connumint num)))
   (setq st (sothanhchu num))
				; )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

;;; Sua nhieu text (cong tru gia tri nguyen)
(defun c:4 ()
 (intro)
 (command "undo" "mark")
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getint Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 0)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
   (if	(< num 10)
     (setq st (strcat "0" (connumint num)))
     (setq st (connumint num))
   )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:5 ()
 (intro)
 (command "undo" "mark")
 (setq	ss1 (chonchu "\nChon text can cong them ...")
 )
 (if (= Ostr nil)
   (setq Ostr "\nNhap gia tri tang them <>...: ")
 )

 (while (= ss1 nil)
   (setq ss1 (chonchu "\nChon text can cong them ...")
   )
 )

 (setq	i     0
num2  (getreal Ostr)
sslen (sslength ss1)
 )
 (if (/= num2 nil)
   (setq
     numadd num2
   )
 )
 (if (/= numadd nil)
   (setq Ostr (strcat "\nNhap gia tri tang them <"
	       (rtos numadd 2 2)
	       "> : "
       )
   )
 )

 (while (<= i (1- sslen))
   (setq num1 (atof (bocchu ss1 i))

   )
   (setq num (+ num1 numadd))
   (setq ob (bocdt ss1 i))
   (if	(> num 0)
     (setq st (strcat "+" (sothanhchu num)))
     (setq st (sothanhchu num))
   )

   (thaychu ob st)
   (princ)

   (setq i (1+ i))
 )
)

 

 

Lệnh "3": tăng giảm nhiều số dưới dạng số thực

Lệnh "4": tăng giảm các số nguyên (dạng số thứ tự)

Lện "5": tăng giảm các số nguyên có chứa dấu (dạng cao độ)

Hy vọng giúp ích cho bạn

 

 

Chết thật! trong lúc em post bài thì bác Hoanh đã kịp trả lời trước rồi. Lisp của mình có thể kết hợp với các biện pháp chọn lọc đối tượng text - sẽ đem lại hiệu quả nhanh hơn (Tất nhiên ko thể so sánh với bộ công cụ trên của bác Hoành :mellow:

 

 

Thanks các bác nhiều lắm.Mình đã làm được rồ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

List trên của Snowman mới chỉ áp dụng được cho những text chứa toàn số. List sau đây sẽ giúp bạn tăng các text bao gồm cả số và chữ .

(defun C:tgt(/ stra so so1 listso listso1 strs strs1  oldstr1 oldstr2 newstr newlist  elist oldlist oldstr kt tt tt1 tt2 dem len pt tt0 i )
(prompt "\nTang gia tri so cua text hocvecad.cadviet.com")
(setq stra (ssget ''((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))))
 (if (= ostr nil)
   (setq ostr "\nNhap gia tri tang them <>:")
   )
 (setq i (getint ostr))
 (if (/= i nil)
   (setq i2 i)
   )
 (if (/= i2 nil)
   (setq ostr (strcat "\nNhap gia tri tang them <" (itoa i2) ">: "))
   )
 (setq sslen (sslength stra))
 (setq l 0)
 (while (<= l (1- sslen))
   (setq ss1 (ssname stra l))
   (setq str (entget ss1))
   (setq elist str)
   (setq oldlist (assoc 1 elist))
   (setq oldstr (cdr oldlist))
   (setq len (strlen oldstr))
   (setq kt 0)
   (setq tt1 0)
   (setq oldstr (vl-string->list oldstr))
   (setq oldstr (append (list 37)  oldstr  (list 37)))
   (setq len (length oldstr))
   (while (<= kt len)
    (setq pt (nth kt oldstr))
    (if  (and (>= pt 48) (<= pt 57))
     (progn
      (setq tt1 kt)
      (setq kt (+ len 1))
      )

     (setq kt (+ kt 1))
     )
    )
  (setq tt2 tt1)
  (setq tt0 tt1)
  (while (<= tt0 len)
   (setq pt (nth tt0 oldstr))
   (if (or (< pt 48) (> pt 57))
     (progn
      (setq tt2  tt0 )
      (setq tt0 (+ 1 len))
       )
     )
   (setq tt0 (+ tt0 1))
   )
 (setq tt (+ 1 tt1))
 (setq listso (nth tt1 oldstr))
 (setq listso (list listso))
  (if (< tt tt2)
   (progn
    (while (and (>= tt tt1) (<= tt tt2))
     (setq listso1 (nth tt oldstr))
     (setq listso (append  listso  (list listso1)))
     (setq tt (+ tt 1))
     )
    )
   )


(setq strs (vl-list->string listso))
(setq strs1 (atoi strs))    
(setq so strs1)
(setq so1 (+ so i2))
(setq so1 (itoa so1))
(setq dem1   (- tt1 1) )
(setq dem2   tt2 )
(setq oldstr (cdr oldstr))
(Setq oldstr (reverse oldstr))
(setq oldstr (cdr oldstr))
(setq oldstr (reverse oldstr))
(setq oldstr(vl-list->string oldstr))
(setq oldstr1 (substr oldstr  1 dem1)) 
(setq oldstr2 (substr oldstr dem2 ))
(setq newstr (strcat oldstr1 so1 oldstr2))
(setq newlist (cons '1 newstr))
(setq elist (subst newlist oldlist elist))
(entmod elist)
   (princ)
(setq l (1+ l))
   )
 )






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 này là một mớ chắp vá và ko biêt tác giả đã test chưa mà post lên cho AE vậy.

 

Sai ngay từ khi chọn đối tuợng

(setq stra (ssget ''((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))))

 

Dù sửa xong lỗi đó vẫn dính lỗi khác

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 này là một mớ chắp vá và ko biêt tác giả đã test chưa mà post lên cho AE vậy.

 

Sai ngay từ khi chọn đối tuợng

 

Trích dẫn

(setq stra (ssget ''((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))))

 

 

Dù sửa xong lỗi đó vẫn dính lỗi khác

:angry: Các bác viết thế này làm em ...tự ái quá :mellow: Đoạn mã của em dùng ..cực tốt đấy nhé! không có lỗi j đâu. Lần sau các bác phản đối ai thì nêu đích danh ra nhé, em hay có tật ...giật mình :ph34r:

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 này là một mớ chắp vá và ko biêt tác giả đã test chưa mà post lên cho AE vậy.

 

Sai ngay từ khi chọn đối tuợng

 

 

Dù sửa xong lỗi đó vẫn dính lỗi khác

Chỉ sai ở mỗi lỗi đó thôi . Sau khi sửa lại chạy tôi thấy không có lỗi gì nữa . Trước khi post lên đây tôi luôn luôn phải test đi test lại nhiều lần . Lỗi trên là do tôi bất cẩn khi copy qua code box . Lisp tôi viết là dựa trên thuật toán của tôi nghĩ ra và những code mà tôi học được . . Không biết dựa vào đâu mà bạn lại nói đây là một mớ chắp vá. Vả lại nếu chắp vá mà đúng thuật toán , chương trình vẫn chạy đúng cũng tốt chứ sao .

(defun C:tgt(/ stra so so1 listso listso1 strs strs1  oldstr1 oldstr2 newstr newlist  elist oldlist oldstr kt tt tt1 tt2 dem len pt tt0 i )
(prompt "\nTang gia tri so cua text hocvecad.cadviet.com")
(setq stra (ssget '((-4 . "<OR") (0 . "text") (0 . "mtext") (-4 . "OR>"))))
(if (= ostr nil)
(setq ostr "\nNhap gia tri tang them <>:")
)
(setq i (getint ostr))
(if (/= i nil)
(setq i2 i)
)
(if (/= i2 nil)
(setq ostr (strcat "\nNhap gia tri tang them <" (itoa i2) ">: "))
)
(setq sslen (sslength stra))
(setq l 0)
(while (<= l (1- sslen))
(setq ss1 (ssname stra l))
(setq str (entget ss1))
(setq elist str)
(setq oldlist (assoc 1 elist))
(setq oldstr (cdr oldlist))
(setq len (strlen oldstr))
(setq kt 0)
(setq tt1 0)
(setq oldstr (vl-string->list oldstr))
(setq oldstr (append (list 37) oldstr (list 37)))
(setq len (length oldstr))
(while (<= kt len)
(setq pt (nth kt oldstr))
(if (and (>= pt 48) (<= pt 57))
(progn
(setq tt1 kt)
(setq kt (+ len 1))
)

(setq kt (+ kt 1))
)
)
(setq tt2 tt1)
(setq tt0 tt1)
(while (<= tt0 len)
(setq pt (nth tt0 oldstr))
(if (or (< pt 48) (> pt 57))
(progn
(setq tt2 tt0 )
(setq tt0 (+ 1 len))
)
)
(setq tt0 (+ tt0 1))
)
(setq tt (+ 1 tt1))
(setq listso (nth tt1 oldstr))
(setq listso (list listso))
(if (< tt tt2)
(progn
(while (and (>= tt tt1) (<= tt tt2))
(setq listso1 (nth tt oldstr))
(setq listso (append listso (list listso1)))
(setq tt (+ tt 1))
)
)
)


(setq strs (vl-list->string listso))
(setq strs1 (atoi strs))
(setq so strs1)
(setq so1 (+ so i2))
(setq so1 (itoa so1))
(setq dem1 (- tt1 1) )
(setq dem2 tt2 )
(setq oldstr (cdr oldstr))
(Setq oldstr (reverse oldstr))
(setq oldstr (cdr oldstr))
(setq oldstr (reverse oldstr))
(setq oldstr(vl-list->string oldstr))
(setq oldstr1 (substr oldstr 1 dem1))
(setq oldstr2 (substr oldstr dem2 ))
(setq newstr (strcat oldstr1 so1 oldstr2))
(setq newlist (cons '1 newstr))
(setq elist (subst newlist oldlist elist))
(entmod elist)
(princ)
(setq l (1+ l))
)
)




  • 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

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

×