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ị

Câu hỏi của bạn hơi tối nghĩa. Hướng text của dim là gì? Tuy nhiên, tôi đoán mò: không cần quan tâm trái sang phải hay dưới lên trên thì vẫn có thể di chuyển vị trí text của dim bằng cách:

Dim -> Te -> di chuyển.

Nếu sai thì mong bạn post câu hỏi cho rõ ràng.

em muốn nhờ các bác viết hộ em cái lisp như lệnh MIRROR đối với đối tượng là text của dim, đường trục đối xứng chính là đường dim luôn ạ, em cảm ơn mọi người

  • 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

Nhân tiện đây nhờ các bạn giúp mình phát triển lisp này theo ý tưởng "Điều chỉnh text, dim, phù hợp với khung bản vẽ cần in" có được không vậy!

Với ý tưởng:

1. Chọn toàn bộ text trong khung bản vẽ cần in sau đó bắt điểm theo đường chéo (hoặc theo cạnh) khung để xác định khung in, làm sao sau khi in ra chiều cao text luôn là 2.0mm với khung A4 hoặc 2.5 với khung A3->A1:

2. Tương tự như vậy đối với Dim

=> Như vậy dù bản vẽ với tỷ lệ khung in như nào thì lisp sẽ xử lý chiều cao text và dim sau khi in ra luôn cao 2.0 đối với khung A4 và 2.5 đối với khung A3-A1

Xin cám ơn các 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

em muốn nhờ các bác viết hộ em cái lisp như lệnh MIRROR đối với đối tượng là text của dim, đường trục đối xứng chính là đường dim luôn ạ, em cảm ơn mọi người

Rất tiếc là đọc cả 2 câu hỏi của bạn tôi vẫn chưa hiểu được ý. Có thể do tôi chậm hiểu quá chăng? Nếu được, bạn post ảnh (hoặc file) thể hiện cái hiện hữu và cái mong muốn có sau khi dùng lisp được không?

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

Gửi bác Ketxu !

e đang làm bản vẽ trên nền bản vẽ cũ của người khác... nhưng khi chuyển qua bên layout,e scale lại cho đúng khung in của e thì có 1 vấn đề xảy ra là chiều cao text và dimtext lại ko đúng với quy định đã cho.e ra quán in thì thấy người ta dùng lệnh ckt là có thể thay đổi dimtext tất cả vùng đã chọn cùng 1 lúc.e về làm thủ thì ko đc...mong bác giải đáp giúp e ....

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ệnh ckt hay ck gì gì đi nữa cũng là do người ta viết ra, bạn mô tả như vậy chưa đủ để mình hiểu nó làm cái j. Thay đổi các đối tượng trong vùng chọn bạn hãy nghĩ đến lệnh Mo, hay tổ hợp phím Ctrl + 1 rất hữu ích

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ụ thể là như thế này .... khi e vẽ bên model e dùng tỉ lệ là 1:1 . và chiều cao dimtext là tùy ý,ví dụ là 30. sau khi chuyển sang layout,e muốn in bản vẽ trên khổ giấy A1.tất nhiên e sẽ phải tạo 1 khung mv,sau đó là sử dụng scale fix bản vẽ,ví dụ e scale fix là 1:90 . vậy khi in ra thì height dimtext sẽ là 30/90 = 0,5.trong khi đó quy định của bản vẽ là height text = 3,0.vậy e sẽ phải edit lại hdimtext là 90*3 = 180 thì khi in ra giấy hdimtext mới = 3,0 được.mà edit từng cái như vậy thì rất lâu ( lưu ý là ko thay chiều cao của cả style text đc,vì như vậy sẽ ảnh hưởng đến nhưng khung mv khác.do muốn in nhiều tỷ lệ trên 1 bản vẽ và bên model chỉ dùng 1 style ).e thấy người ta dùng lệnh ckt gì đó...mà có thể thay đổi được hết hdimtext nhưng đỗi tường đã quét qua....mà e về làm thử ko đc...dù đã có lisp đó trong cad 2007.vấn đề của e là ở chỗ đó....mong bác giải đáp sớm giúp e với...e đang rất cần...cám ơn bác 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

mình có gặp vấn đề về tẽt mong các thành viên giúp

trong một bản vẽ bình đồ, tôi muốn thay đổi chiều cao text của các đường đồng mức, thay vì tắt lớp sau đó ma text theo chiều cao của nhiều text (có cùng tên) một lúc, thì có cách nào làm nhanh hơn không. cảm ơn nhiều!............

 

Bạn dùng lệnh Scaletext

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

nếu dùng lệnh Scaletext  của bác Tue_NV thì chỉ thay đổi được 1 đối tượng chứ ko thay đổi đồng loại các đối tượng cùng một lúc được, cái mình muốn là thay đổi đồng loạt chiều cao các đối tượng mà vị trí của các đối tượng ko bị nhảy đến vị trí khác. Vì minh làm bình đồ thì rất nhiều đối tượng mà làm hiều bước thì mất thời gian lắm. Mong các bác giúp cho. Cảm ơn nhiều!

Ai bảo thế? Scale hàng loạt cơ 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

Bác Đoan Van Ha than mến, nếu như bác Scale hàng loạt thì vị trí các text se nhảy đến vị trí khác.

Điểm canh lề không hề thay đổ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

Nhờ bác Đoan Van Ha chỉ rõ hơn dược không, em làm hoài mà các text cư nhảy lung tung khỏi vị trí đường đồng mức. cảm ơn bác nhiểu!

Gởi bản vẽ của bạn lên để test xem sao 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

Nhờ bác Đoan Van Ha chỉ rõ hơn dược không, em làm hoài mà các text cư nhảy lung tung khỏi vị trí đường đồng mức. cảm ơn bác nhiểu!

 

Bạn gõ đúng chữ SCALETEXT vào dòng command

Bạn tìm đọc thêm lệnh trên SCALETEXT  diễn đàn 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

 

Làm dâu trăm họ smile.gif

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 à smile.gif

lips hay nhưng mình nhập chiều cao 1 đằng thì chiều cao thực tế của text dim lại kiểu khác bạn ah.

 

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àm thiết kế. Trên bản vẽ có thể dùng đến 10 dim style có cách nào để gọi nhanh các dim style không? có cách nào để lấy nhanh các chữ số của lệnh đo đường thẳng rồi cho vào 1 bảng không?

thanks All

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Ó AI GIẢI GIÚP MÌNH BÀI TOÀN NÀY VỚI

SAU KHI DIM KÍCH THƯỚC XONG MÌNH MUỐN LẤY SÔ KÍCH THƯỚC ĐÓ CHO VÀO 1 BANG TRONG CAD LUÔN. DIM KÍCH THƯỚC XONG MÌNH CỨ PHẢI COPY RỒI PASTE LÂU QUÁ. CÒN NHẬP BẰNG TAY ĐÔI KHI VẪN BỊ SAI. 

  • 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

CÓ AI GIẢI GIÚP MÌNH BÀI TOÀN NÀY VỚI

SAU KHI DIM KÍCH THƯỚC XONG MÌNH MUỐN LẤY SÔ KÍCH THƯỚC ĐÓ CHO VÀO 1 BANG TRONG CAD LUÔN. DIM KÍCH THƯỚC XONG MÌNH CỨ PHẢI COPY RỒI PASTE LÂU QUÁ. CÒN NHẬP BẰNG TAY ĐÔI KHI VẪN BỊ SAI. 

Hề hề hề,

Chưa hiểu cái bảng của bạn ra sao cả....

Bạn có thể tham khảo lisp dưới đây và chế biến cho hợp ý bạn nhé.

http://www.cadviet.com/upfiles/5/5194_dimline.lsp

 

 

(defun c:DL ( / ans e dt pt )
(setq ans (getstring "\n Chon dimlinear <Y or N> : "))
(if (= (strcase ans) "Y") 
(command "_dimlinear" (getpoint "\n Nhap diem dau cua kich thuoc can do")
                                          (getpoint "\n Nhap diem cuoi cua kich thuoc can do") 
                                          (getpoint "\n Nhap diem dat cua kich thuoc can do"))
(command "_dimaligned" (getpoint "\n Nhap diem dau cua kich thuoc can do")
                                          (getpoint "\n Nhap diem cuoi cua kich thuoc can do") 
                                          (getpoint "\n Nhap diem dat cua kich thuoc can do"))
)
(setq e (entlast)
         es (entget e)
         dt (rtos (cdr (assoc 42 es)) 2 2)
         pt (getpoint "\n Nhap diem dat cua text kich thuoc")  )
(command "text" "J" "MC" "non" pt 2 0 dt)
(princ)
)

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ụ thể là như thế này .... khi e vẽ bên model e dùng tỉ lệ là 1:1 . và chiều cao dimtext là tùy ý,ví dụ là 30. sau khi chuyển sang layout,e muốn in bản vẽ trên khổ giấy A1.tất nhiên e sẽ phải tạo 1 khung mv,sau đó là sử dụng scale fix bản vẽ,ví dụ e scale fix là 1:90 . vậy khi in ra thì height dimtext sẽ là 30/90 = 0,5.trong khi đó quy định của bản vẽ là height text = 3,0.vậy e sẽ phải edit lại hdimtext là 90*3 = 180 thì khi in ra giấy hdimtext mới = 3,0 được.mà edit từng cái như vậy thì rất lâu ( lưu ý là ko thay chiều cao của cả style text đc,vì như vậy sẽ ảnh hưởng đến nhưng khung mv khác.do muốn in nhiều tỷ lệ trên 1 bản vẽ và bên model chỉ dùng 1 style ).e thấy người ta dùng lệnh ckt gì đó...mà có thể thay đổi được hết hdimtext nhưng đỗi tường đã quét qua....mà e về làm thử ko đc...dù đã có lisp đó trong cad 2007.vấn đề của e là ở chỗ đó....mong bác giải đáp sớm giúp e với...e đang rất cần...cám ơn bác nhiều !

bạn có lisp này chưa có thể chia sẻ được không, mình thấy ý tưởng này rất hay nhưng không tìm được lisp tương 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
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 à :)

 

sao ko dùng được cho cad đời cao vây j bác ? Khi thực hiện thì 3 lisp cad như 1 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

CAD nào là cad đời cao vậy ? T đang làm cad 2021 và vẫn thấy mọi thứ đúng như mong muốn. Thứ duy nhất nó k làm đó là k tính tỉ lệ FIT hay Annotative Scale :o

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

×