Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
MTRUNGTDH

From: Lisp công trừ trong text

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

MTRUNGTDH    1

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
phamthanhbinh    3.123
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
MTRUNGTDH    1
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
master_worse    87
Ý 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
hhhhgggg    30

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
MTRUNGTDH    1
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
MTRUNGTDH    1
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
master_worse    87
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
Tue_NV    3.841


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
MTRUNGTDH    1
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
master_worse    87
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
Tot77    501

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
Doan Van Ha    2.676

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
Tot77    501

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
gia_bach    1.442

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

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  

×