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

Điều chỉnh giá trị chiều cao text trong lisp

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

Em chào các anh chị trên cộng đồng, em hiện có 1 lisp như file và cần chỉnh chiều cao chữ trong lệnh QS (tính tổng các text số). Mong các anh chị hỗ trợ sửa lisp để khi sử dụng có thêm phần nhập chiều cao chữ trước khi xuất kết quả ra ạ (có thể mặc định cỡ chữ là 220 nhưng cũng có thể thay đổi được).

CS, CT, NS.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
6 giờ trước, VoTuanKiet đã nói:

Em chào các anh chị trên cộng đồng, em hiện có 1 lisp như file và cần chỉnh chiều cao chữ trong lệnh QS (tính tổng các text số). Mong các anh chị hỗ trợ sửa lisp để khi sử dụng có thêm phần nhập chiều cao chữ trước khi xuất kết quả ra ạ (có thể mặc định cỡ chữ là 220 nhưng cũng có thể thay đổi được).

CS, CT, NS.lsp

- Bạn dùng lệnh DTEXT,

- rồi viết một TEXT theo chiều cao mà bạn mong muốn, sau đó xóa text tạm này đi.

- dùng lại lệnh QS là sẽ có chiều cao theo lệnh TEXT trước đó của bạn.

  • Like 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
13 giờ trước, Nguyen Hoanh đã nói:

- Bạn dùng lệnh DTEXT,

- rồi viết một TEXT theo chiều cao mà bạn mong muốn, sau đó xóa text tạm này đi.

- dùng lại lệnh QS là sẽ có chiều cao theo lệnh TEXT trước đó của bạn.

Em cảm ơn anh nhiều ạ! ra là nó hoạt động như vậy

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
Vào lúc 12/7/2024 tại 10:40, VoTuanKiet đã nói:

Em chào các anh chị trên cộng đồng, em hiện có 1 lisp như file và cần chỉnh chiều cao chữ trong lệnh QS (tính tổng các text số). Mong các anh chị hỗ trợ sửa lisp để khi sử dụng có thêm phần nhập chiều cao chữ trước khi xuất kết quả ra ạ (có thể mặc định cỡ chữ là 220 nhưng cũng có thể thay đổi được).

CS, CT, NS.lsp


Textheigt của Text trong lệnh Dtext được lấy theo giá trị biến Textsize.
C1 Trước khi chạy lisp bạn có thể điều chỉnh biến textsize bằng lệnh Textsize (nhập trực tiếp vào CAD)  rồi chạy lisp của bạn
C2 : Sửa nhanh thì đổi dòng này 
 

(command ".text" p1 "" "" (rtos tong 2 3))

thành 
 

(command ".text" p1 (getdist "Text height")  "" (rtos tong 2 3))


C3 : Hoặc muốn lưu giá trị cũ của Text height để có thể Space ngay khi k cần thay đổi thì đổi cả lệnh QS thành :
 

(defun c:QS()
	
  (setvar "CMDECHO" 0)
  (SETQ SET (SSGET))
  (SETQ QUANT (SSLENGTH SET))
  
  ;-------------- Add this
  (or *th* (setq *th* (getvar 'Textsize)))
  (initget 6) (setq *th* (cond ((getdist (strcat "\nText height <" (rtos *th*) ">:")))(*th*)))  
  ;-------------- Add this
  
  (SETQ INDEX 0)
  (setq lu1 0)
  (setq tong 0)  
  (WHILE (< INDEX QUANT)
   (if	
    (OR (= "TEXT" (CDR (ASSOC 0 (SETQ s (ENTGET (SSNAME SET INDEX)))))) (= (DXF 0 s) "MTEXT"))
     (PROGN
	(setq otext (assoc 1 s))
	(setq ot (cdr otext))
	(setq lu1 (max lu1 (tphan ot)))
	(setq ot (atof ot))
	(setq tong (+ tong ot))  
	(entmod s)
     )
   );if
   (setq index (+ index 1))
  );while
 (command "luprec" lu1)
 (setq p1 (getpoint "\n Pick a point:"))
 ;-------------------- Change this 
 (command ".text" p1 *th* "" (rtos tong 2 3))
 (command "luprec" "0")  
);defun


Hoặc để dòng setvar vào trong lisp hoặc vân vân và mây mây .....

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
3 giờ trước, ketxu đã nói:


Textheigt của Text trong lệnh Dtext được lấy theo giá trị biến Textsize.
C1 Trước khi chạy lisp bạn có thể điều chỉnh biến textsize bằng lệnh Textsize (nhập trực tiếp vào CAD)  rồi chạy lisp của bạn
C2 : Sửa nhanh thì đổi dòng này 
 


(command ".text" p1 "" "" (rtos tong 2 3))

thành 
 


(command ".text" p1 (getdist "Text height")  "" (rtos tong 2 3))


C3 : Hoặc muốn lưu giá trị cũ của Text height để có thể Space ngay khi k cần thay đổi thì đổi cả lệnh QS thành :
 


(defun c:QS()
	
  (setvar "CMDECHO" 0)
  (SETQ SET (SSGET))
  (SETQ QUANT (SSLENGTH SET))
  
  ;-------------- Add this
  (or *th* (setq *th* (getvar 'Textsize)))
  (initget 6) (setq *th* (cond ((getdist (strcat "\nText height <" (rtos *th*) ">:")))(*th*)))  
  ;-------------- Add this
  
  (SETQ INDEX 0)
  (setq lu1 0)
  (setq tong 0)  
  (WHILE (< INDEX QUANT)
   (if	
    (OR (= "TEXT" (CDR (ASSOC 0 (SETQ s (ENTGET (SSNAME SET INDEX)))))) (= (DXF 0 s) "MTEXT"))
     (PROGN
	(setq otext (assoc 1 s))
	(setq ot (cdr otext))
	(setq lu1 (max lu1 (tphan ot)))
	(setq ot (atof ot))
	(setq tong (+ tong ot))  
	(entmod s)
     )
   );if
   (setq index (+ index 1))
  );while
 (command "luprec" lu1)
 (setq p1 (getpoint "\n Pick a point:"))
 ;-------------------- Change this 
 (command ".text" p1 *th* "" (rtos tong 2 3))
 (command "luprec" "0")  
);defun


Hoặc để dòng setvar vào trong lisp hoặc vân vân và mây mây .....

Dạ em cảm ơn anh nhiều ạ!

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  

×