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

[yêu cầu] Lisp thay đổi chiều cao text của dimstyle cực nhanh !

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

Vào lúc 30/8/2011 tại 22:01, ketxu đã nói:

Làm dâu trăm họ :)

Thôi thì theo cái lisp cũ, mình viết thêm vài kiểu nữa cho chắc :

1. Change cho toàn bộ DimStyle trong bản vẽ :

 


(defun c:hdima (/ table tH)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(defun table (s / d r)
(while (setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
)
(setq tH (getreal "\n Text Height :"))
(setvar "cmdecho" 0)
(mapcar '(lambda(x)(command "DIMSTYLE" "R" x)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" x "Y")) (table "DIMSTYLE"))
(command "undo" "en"))
 

 

2. Pick đến đâu change đến đó :

 


(defun c:hdimb (/ lstDstyle tH ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :"))
(while (setq ent (car (entsel "\n Pick dim :")))
(if (setq dstyle (cdr (assoc 3 (entget ent))))
	(if (not (vl-position dstyle lstDstyle))
		(progn
			(setq lstDstyle (cons dstyle lstDstyle))
			(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
		)
		(princ "\nAlready Dimension Style Picked")
	)
)
)
(command "undo" "en")
)
 

 

3. Chọn 1 loạt rồi change :

 


(defun c:hdimc (/ lstDstyle tH i ss ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :") i 0 ss (ssget (list (cons 0 "DIMENSION"))))
(while (setq ent (ssname ss i))	
(if (setq dstyle (cdr (assoc 3 (entget ent))))
	(if (not (vl-position dstyle lstDstyle))
		(progn
			(setq lstDstyle (cons dstyle lstDstyle))
			(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
		)			
	)
)
(setq i (1+ i))
)
(command "undo" "en")
)
 

 

Đó là công việc mà mọi người trên diễn đàn đang cố gắng làm và chia sẻ bạn à :)

 

lisp hdima thì ok ạ lisp hdimb sau khi thực hiện lệnh chọn đối tượng đầu tiên thì toàn bộ dim trong bản vẽ đều bị đổi

lisp hdimc cũng vậy sau khi gõ lệnh chọn các dim muốn đổi gõ enter thì toàn bộ dim trong bản vẽ cũng đổi luôn

Mong bác xem lại giúp ạ

https://drive.google.com/file/d/1YvbFC7Xf-4r_CU3hTY5CbUgx60s_AeUB/view?usp=sharing

đường link video ạ

 

Chỉnh sửa theo đỗ văn nhân
bổ sung link video

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 30/8/2011 tại 22:01, ketxu đã nói:

Làm dâu trăm họ :)

Thôi thì theo cái lisp cũ, mình viết thêm vài kiểu nữa cho chắc :

1. Change cho toàn bộ DimStyle trong bản vẽ :

 


(defun c:hdima (/ table tH)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(defun table (s / d r)
(while (setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
)
(setq tH (getreal "\n Text Height :"))
(setvar "cmdecho" 0)
(mapcar '(lambda(x)(command "DIMSTYLE" "R" x)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" x "Y")) (table "DIMSTYLE"))
(command "undo" "en"))
 

 

2. Pick đến đâu change đến đó :

 


(defun c:hdimb (/ lstDstyle tH ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :"))
(while (setq ent (car (entsel "\n Pick dim :")))
(if (setq dstyle (cdr (assoc 3 (entget ent))))
	(if (not (vl-position dstyle lstDstyle))
		(progn
			(setq lstDstyle (cons dstyle lstDstyle))
			(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
		)
		(princ "\nAlready Dimension Style Picked")
	)
)
)
(command "undo" "en")
)
 

 

3. Chọn 1 loạt rồi change :

 


(defun c:hdimc (/ lstDstyle tH i ss ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :") i 0 ss (ssget (list (cons 0 "DIMENSION"))))
(while (setq ent (ssname ss i))	
(if (setq dstyle (cdr (assoc 3 (entget ent))))
	(if (not (vl-position dstyle lstDstyle))
		(progn
			(setq lstDstyle (cons dstyle lstDstyle))
			(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" tH)(command "DIMSTYLE" "S" dstyle "Y")
		)			
	)
)
(setq i (1+ i))
)
(command "undo" "en")
)
 

 

Đó là công việc mà mọi người trên diễn đàn đang cố gắng làm và chia sẻ bạn à :)

 

bác ketxu có thể bớt chút thời gian xem giúp em đó là lỗi gì ko với ạ ? thank bá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

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

×