Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
MTRUNGTDH

From: Lisp công trừ trong text

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

Bạn nào có Lisp mà có thể tự động cộng trừ các giá trị tẽt trong CAD một giá trị lẻ như lệnh TCOUNT (nhưng lẹnh này chỉ áp dụng với giá trị cộng trừ là số chẳn. Bản vẻ của mình có nhiều giá trị cần cộng trừ thêm một giá trị nếu dủng ED thì lâu quá.

Cảm ơn truớc mọi người.

mtrungtdh@gmail.com

  • 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
Bạn nào có Lisp mà có thể tự động cộng trừ các giá trị tẽt trong CAD một giá trị lẻ như lệnh TCOUNT (nhưng lẹnh này chỉ áp dụng với giá trị cộng trừ là số chẳn. Bản vẻ của mình có nhiều giá trị cần cộng trừ thêm một giá trị nếu dủng ED thì lâu quá.

Cảm ơn truớc mọi người.

mtrungtdh@gmail.com

Bạn hãy chịu khó kiếm trên diễn đàn này nhé. Các lísp loại này đã có khá nhiều bài viết rồi đó bạn ạ. Do không biết bạn cần cụ thể ra sao nên tốt nhất là bạn phải nêu rõ yêu cầu và cho ví dụ cụ thể mới có thể viết được bạn ạ.

Trong các lisp sẵn có trên diễn đàn, nếu bạn thấy có cái nào gần giống với cái bạn cần thì hãy post lên và nói rõ chỗ chưa đạt yêu cầu của bạn, mọi người sẽ giúp bạn hiệu chỉnh lại cho phù hợp.

Chúc bạn vui khi tham gia diễn đà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
Bạn hãy chịu khó kiếm trên diễn đàn này nhé. Các lísp loại này đã có khá nhiều bài viết rồi đó bạn ạ. Do không biết bạn cần cụ thể ra sao nên tốt nhất là bạn phải nêu rõ yêu cầu và cho ví dụ cụ thể mới có thể viết được bạn ạ.

Trong các lisp sẵn có trên diễn đàn, nếu bạn thấy có cái nào gần giống với cái bạn cần thì hãy post lên và nói rõ chỗ chưa đạt yêu cầu của bạn, mọi người sẽ giúp bạn hiệu chỉnh lại cho phù hợp.

Chúc bạn vui khi tham gia diễn đàn,.

Ý mình là muốn trừ đi tất cả các số đuợc chọn một giá trị nào đó (cũng gần tuơng tự như đánh số thứ tự)

ví dụ: có các sô : 45.24 ; 55.67 ;78.53

giờ mình muốn trừ đi các số trên một giá trị là 0.2:

kết quả cuối cùng các số đuợc chọn là: 45.04 ; 55.47 ; 78.33

Nếu dùng lisp đánh số thứ tự thì chỉ tính đuợc cho các số nguyên thô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
Ý mình là muốn trừ đi tất cả các số đuợc chọn một giá trị nào đó (cũng gần tuơng tự như đánh số thứ tự)

ví dụ: có các sô : 45.24 ; 55.67 ;78.53

giờ mình muốn trừ đi các số trên một giá trị là 0.2:

kết quả cuối cùng các số đuợc chọn là: 45.04 ; 55.47 ; 78.33

Nếu dùng lisp đánh số thứ tự thì chỉ tính đuợc cho các số nguyên thôi.

bạn dùng thử lisp này

(defun C:TRU (/ OLDDIMZIN SS SOTRU DSSBT SBT)
 (vl-load-com)
 (setq OLDIMZIN (getvar "DIMZIN"))
 (setvar "DIMZIN" 0)
 (princ "\nChon cac so bi tru")
 (setq SS (ssget '((0 . "TEXT"))))
 (if _SOTRU
(progn
  (initget 4)
  (if (null (setq SOTRU (getreal (strcat "\nNhap so tru: <" (rtos _SOTRU) "> "))))
(setq SOTRU _SOTRU)
  ) 
) 
(progn
  (initget (+ 1 4))
  (setq SOTRU (getreal "\nNhap so tru: "))
) 
 ) 
 (setq DSSBT (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
 (foreach SBT DSSBT (vla-put-textstring SBT (rtos (- (atof (vla-get-textstring SBT)) SOTRU))))
 (setq _SOTRU SOTRU)
 (setvar "DIMZIN" OLDIMZIN)
 (princ)
)

  • 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

Bạn dùng thử cái này nhé, Lisp này cho phép cộng thêm 1 giá trị vào Text

CODE

;;;=========== Cong Text voi so =======

 

(defun c:add ()

(setvar "CMDECHO" 0)

;Lay gia tri cua text thu nhat:

(setq s (entget (car (entsel "\n Select Text number: "))))

(setq otext (assoc 1 s))

(setq ot (cdr otext))

(setq ot (read (substr ot 1)))

 

;Lay gia tri cua text thu hai:

(command "luprec" pre)

(if ot1 (setq ot2 (getreal (strcat "\n + them: <" (rtos ot1) ">:")))

(setq ot1 (getreal "\nValue Add :" )))

 

(if ot2 (setq ot1 ot2))

 

 

 

(setq giatri (entget (car (entsel "\n Select Text to results: "))))

(command "luprec" "2")

(setq gia (assoc 1 giatri))

;(setq gia (rtos gia 2 2))

(setq nt1 (cons 1 (rtos (+ ot ot1) 2 2)))

(setq giatri (subst nt1 gia giatri))

(entmod giatri)

(princ)

)

  • Vote giảm 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
Bạn dùng thử cái này nhé, Lisp này cho phép cộng thêm 1 giá trị vào Text

CODE

;;;=========== Cong Text voi so =======

 

(defun c:add ()

(setvar "CMDECHO" 0)

;Lay gia tri cua text thu nhat:

(setq s (entget (car (entsel "\n Select Text number: "))))

(setq otext (assoc 1 s))

(setq ot (cdr otext))

(setq ot (read (substr ot 1)))

 

;Lay gia tri cua text thu hai:

(command "luprec" pre)

(if ot1 (setq ot2 (getreal (strcat "\n + them: <" (rtos ot1) ">:")))

(setq ot1 (getreal "\nValue Add :" )))

 

(if ot2 (setq ot1 ot2))

(setq giatri (entget (car (entsel "\n Select Text to results: "))))

(command "luprec" "2")

(setq gia (assoc 1 giatri))

;(setq gia (rtos gia 2 2))

(setq nt1 (cons 1 (rtos (+ ot ot1) 2 2)))

(setq giatri (subst nt1 gia giatri))

(entmod giatri)

(princ)

)

 

 

Cảm ơn bạn nhiều lắm, mình đang cần lisp trừ đi một giá trị, nếu bạn sửa lại đoạn code trên để có tính năng trừ đi một số thì quá tốt, ai biết thì giúp mình với nha! thanks!

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 dùng thử lisp này

(defun C:TRU (/ OLDDIMZIN SS SOTRU DSSBT SBT)
 (vl-load-com)
 (setq OLDIMZIN (getvar "DIMZIN"))
 (setvar "DIMZIN" 0)
 (princ "\nChon cac so bi tru")
 (setq SS (ssget '((0 . "TEXT"))))
 (if _SOTRU
(progn
  (initget 4)
  (if (null (setq SOTRU (getreal (strcat "\nNhap so tru: <" (rtos _SOTRU) "> "))))
(setq SOTRU _SOTRU)
  ) 
) 
(progn
  (initget (+ 1 4))
  (setq SOTRU (getreal "\nNhap so tru: "))
) 
 ) 
 (setq DSSBT (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
 (foreach SBT DSSBT (vla-put-textstring SBT (rtos (- (atof (vla-get-textstring SBT)) SOTRU))))
 (setq _SOTRU SOTRU)
 (setvar "DIMZIN" OLDIMZIN)
 (princ)
)

 

 

không biết sao mình dùng thử lisp trên thì bị báo lỗi, nhờ bạn xem lại hộ mình với. Thanks!

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
không biết sao mình dùng thử lisp trên thì bị báo lỗi, nhờ bạn xem lại hộ mình với. Thanks!

Mình đã kiểm tra rồi nhưng không thấy lỗi

 

Command: TRU

Chon cac so bi tru

Select objects: Specify opposite corner: 4 found

Select objects:

Nhap so tru: <0.500> .2

 

Để mình thử máy khác xem sao

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ào MTRUNGTDH
 Code có tính năng cộng ; trừ ; nhân ; chia Text với 1 số chỉ trong 1 Code Lisp duy nhất.
Bạn vào đây xem nhé :
Hướng dẫn sử dụng Code đó nằm ở đây :

Bài viết số 90, bài viết số 96- Viết Lisp theo yêu cầu phần 2
Và code đó nằm ở đây :

Bài viết số 105

 

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 dùng thử lisp này

(defun C:TRU (/ OLDDIMZIN SS SOTRU DSSBT SBT)
 (vl-load-com)
 (setq OLDIMZIN (getvar "DIMZIN"))
 (setvar "DIMZIN" 0)
 (princ "\nChon cac so bi tru")
 (setq SS (ssget '((0 . "TEXT"))))
 (if _SOTRU
(progn
  (initget 4)
  (if (null (setq SOTRU (getreal (strcat "\nNhap so tru: <" (rtos _SOTRU) "> "))))
(setq SOTRU _SOTRU)
  ) 
) 
(progn
  (initget (+ 1 4))
  (setq SOTRU (getreal "\nNhap so tru: "))
) 
 ) 
 (setq DSSBT (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))))
 (foreach SBT DSSBT (vla-put-textstring SBT (rtos (- (atof (vla-get-textstring SBT)) SOTRU))))
 (setq _SOTRU SOTRU)
 (setvar "DIMZIN" OLDIMZIN)
 (princ)
)

 

 

Nhờ bạn xem giúp mình khi dùng lisp trên thì bị báo lỗi (; error: bad argument type: lselsetp nil) khi nhập số trừ. Thanks!

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
Nhờ bạn xem giúp mình khi dùng lisp trên thì bị báo lỗi (; error: bad argument type: lselsetp nil) khi nhập số trừ. Thanks!

Không thấy lỗi bạn ơ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

Bạn thử cái này. Khi nó hỏi "Phep tinh:" thì bạn gõ vào, thí dụ "+2" hay "-3" , "*4", "/5" thì nó sẽ đổi.

Cái này chỉ dùng với text, không dùng cho mtext và nếu trong chữ có nhiều số thì chỉ đổi số đầu tiên.

 

(defun C:ctnc(/ tg obj nd so nd1)
  (setvar 'dimzin 8)
  (setq tg (getstring "\nPhep tinh:" ))  
  (foreach v (vl-remove-if 'listp (mapcar 'cadr (ssnamex  (ssget (list '(0 . "TEXT") )))))
    (setq nd (vla-get-TextString (setq obj (vlax-ename->vla-object v)))
 so (rtos (atof (vl-list->string (mapcar '(lambda(x) (if (or (= 46 x) (<= 48 x 57)) x 32)) (vl-string->list nd)))))
 nd1 (rtos (cal (strcat so tg)))
 nd (vl-string-subst nd1 so nd)
    )
    (vla-put-TextString obj nd)
   )
)

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ôi đang dùng Cad2007. Không biết Cad đời cao thế nào, chứ với Cad<=2007, nếu lisp có dùng hàm CAL mà thiếu dòng load lệnh Cal, hoặc mở Cad mà chưa dùng lệnh Cal 1 lần thì lisp trên sẽ báo lỗi: ; error: no function definition: CAL

Tôi có nhắc điều này với Tot77 1 lần 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

Trước tôi dùng 2004 cũng chẳng thấy báo lỗi, giờ 2010 cũng vậy. Tôi nghĩ hàm và lệnh cal thì cad tự động load vì nó đã trở thành hàm và lệnh cơ bản của cad. Tôi chưa thấy trường hợp nào báo lỗi, trừ phi file arx bị mất.

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ôi đang dùng Cad2007. Không biết Cad đời cao thế nào, chứ với Cad<=2007, nếu lisp có dùng hàm CAL mà thiếu dòng load lệnh Cal, hoặc mở Cad mà chưa dùng lệnh Cal 1 lần thì lisp trên sẽ báo lỗi: ; error: no function definition: CAL

Tôi có nhắc điều này với Tot77 1 lần rồi.

 

 

Trước tôi dùng 2004 cũng chẳng thấy báo lỗi, giờ 2010 cũng vậy. Tôi nghĩ hàm và lệnh cal thì cad tự động load vì nó đã trở thành hàm và lệnh cơ bản của cad. Tôi chưa thấy trường hợp nào báo lỗi, trừ phi file arx bị mất.

Cad2010 của tôi lại báo lỗi : error: no function definition: CAL

 

Chắc Cad của Tot77 có set gì đó trong file acad.lsp (acad2010.lsp)

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

lần đầu tìm đến cadviet. mình muốn tìm 1 lisp thay đổi giá trị thêm 1 2 3 theo thứ tự. 

ví dụ có nhiều khung tên. mình đặt 1 text có tên là stt. bây giờ mình muốn tìm và thay đổi text stt đó thành 01 > 02 >03 theo thứ tự như từ trái qua phải 

có bác nào giúp em được không. thanks trướ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
5 giờ trước, nguyenduchuy đã nói:

lần đầu tìm đến cadviet. mình muốn tìm 1 lisp thay đổi giá trị thêm 1 2 3 theo thứ tự. 

ví dụ có nhiều khung tên. mình đặt 1 text có tên là stt. bây giờ mình muốn tìm và thay đổi text stt đó thành 01 > 02 >03 theo thứ tự như từ trái qua phải 

có bác nào giúp em được không. thanks trước ạ !!

Bạn tham khảo lisp này nhé

 

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
Đăng nhập để thực hiện theo  

×