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

Xin mẹo Scale chữ số

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

Nhờ các anh trên diễn đàn giúp em cách scale chữ số:

- Số được đặt trong block ví dụ số 1 hay số 5 chiều cao chữ là 2.5

- Scale block đó lên n lần thì chiều cao của số 1 hay số 5 to ra n lần =2.5*n

- Số 1 hay số 5 sẽ thay đổi thành giá trị n hay 5n (nếu n=2 số 1 sẽ thành 2 hay ssó 5 sẽ thành 10)

EM nghĩ trong lênh "field" làm được nhưng tìm không ra

Nếu ghi số 1 hay 5 bằng Dli thì khi scale chỉ thay đổi được giá trị còn chiều cao không thay đổi, dùng lệnh sc số 1hay số 5 thì chiều cao thay đổi nhưng giá trị lại giữ nguyên.

cám ơn mọi người

sc_1.jpg

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ờ các anh trên diễn đàn giúp em cách scale chữ số:

- Số được đặt trong block ví dụ số 1 hay số 5 chiều cao chữ là 2.5

- Scale block đó lên n lần thì chiều cao của số 1 hay số 5 to ra n lần =2.5*n

- Số 1 hay số 5 sẽ thay đổi thành giá trị n hay 5n (nếu n=2 số 1 sẽ thành 2 hay ssó 5 sẽ thành 10)

EM nghĩ trong lênh "fild" làm được nhưng tìm không ra

Nếu ghi số 1 hay 5 bằng Dli thì khi scale chỉ thay đổi được giá trị còn chiều cao không thay đổi, dùng lệnh sc số 1hay số 5 thì chiều cao thay đổi nhưng giá trị lại giữ nguyên.

cám ơn mọi người

sc_1.jpg

Bạn dùng lệnh "field" trong tag Field category bạn tìm mục Object sau đó bấm vào nút chọn phía tag Object type (nút có mũi tên) Cad sẽ cho bạn chọn đối tượng; khi chọn xong Cad sẽ liệt kê 1 loạt các loại dữ liệu cho bạn chọn (bạn cứ làm thử sẽ hiểu) -> bấm Ok Cad sẽ hỏi tại dòng lệnh chiều cao chữ -> gõ H enter -> gõ 2.5. Khi bạn phóng to lên bạn regen lại sẽ có kết quả 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
Bạn dùng lệnh "field" trong tag Field category bạn tìm mục Object sau đó bấm vào nút chọn phía tag Object type (nút có mũi tên) Cad sẽ cho bạn chọn đối tượng; khi chọn xong Cad sẽ liệt kê 1 loạt các loại dữ liệu cho bạn chọn (bạn cứ làm thử sẽ hiểu) -> bấm Ok Cad sẽ hỏi tại dòng lệnh chiều cao chữ -> gõ H enter -> gõ 2.5. Khi bạn phóng to lên bạn regen lại sẽ có kết quả như ý.

Cám ơn meohang

Chưa phải bác ạ.

em muốn có chữ số mà khi dùng lệnh SCale thì cả kích thước và giá trị sẽ thay đổi bác 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
Cám ơn meohang

Chưa phải bác ạ.

em muốn có chữ số mà khi dùng lệnh SCale thì cả kích thước và giá trị sẽ thay đổi bác nhé.

Chắc phải nhờ các bác thạo về lisp viết thôi

Cách làm thủ công của em là:

Tạo thêm một kiểu Dim mới bằng cách thay đổi giá trị trong:

1- Use overall scale op: (Trong thẻ Fit)

2 - Scale factor ( Trong thẻ Primary Units

 

Sau khi Scale hình vẽ xong ta dùng lệnh MA quét kích thước theo một kích thước của kiểu dim vừa tạo là đượ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
Cám ơn meohang

Chưa phải bác ạ.

em muốn có chữ số mà khi dùng lệnh SCale thì cả kích thước và giá trị sẽ thay đổi bác nhé.

Chào nguoi_tho_mo,

Bạn hãy thử dùng lisp xem sao. Theo mình lisp có thể giải quyết tốt yêu cầu của bạn...

  • 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
Chào nguoi_tho_mo,

Bạn hãy thử dùng lisp xem sao. Theo mình lisp có thể giải quyết tốt yêu cầu của bạn...

Vâng em đi kiếm không ra, còn tự viết thì phải đợi một thời gian nữa vì "Quá gà"

EM block dim (không có chân) mừng hụt bác ạ. được cái này thì mất cái kia

EM trình bày rõ mục đích các bác giúp em khác phục khó khăn này:

em đặt số 1 vào block khung tên khi scale khung tên bao nhiêu lần thì số 1 thay đổi giá trị và kích thước theo.

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âng em đi kiếm không ra, còn tự viết thì phải đợi một thời gian nữa vì "Quá gà"

EM block dim (không có chân) mừng hụt bác ạ. được cái này thì mất cái kia

EM trình bày rõ mục đích các bác giúp em khác phục khó khăn này:

em đặt số 1 vào block khung tên khi scale khung tên bao nhiêu lần thì số 1 thay đổi giá trị và kích thước theo.

Vậy là số 1 này có thuộc block khung tên hay không hử nguoi_tho_mo????

Khi scale thì chọn cả khung tên và cái số 1 ấy à??? Các text khác trong khung tên thì sao????

Hề hề hề, nghĩ cho kỹ rồi đặt yêu cầu chứ đừng có Phát sinh kiểu nớ, khó đoán lắ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
Vâng em đi kiếm không ra, còn tự viết thì phải đợi một thời gian nữa vì "Quá gà"

EM block dim (không có chân) mừng hụt bác ạ. được cái này thì mất cái kia

EM trình bày rõ mục đích các bác giúp em khác phục khó khăn này:

em đặt số 1 vào block khung tên khi scale khung tên bao nhiêu lần thì số 1 thay đổi giá trị và kích thước theo.

 

Cái này dùng FIELD là đc mà bạn. Mình thử 1 cái này xem có đúng ý bạn ko nhé. Scale xong thi` REGEN nhe'

http://www.cadviet.com/upfiles/3/up_1.dwg

  • 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
Cái này dùng FIELD là đc mà bạn. Mình thử 1 cái này xem có đúng ý bạn ko nhé. Scale xong thi` REGEN nhe'

http://www.cadviet.com/upfiles/3/up_1.dwg

Chào bác nguyentuyen6

Rất cảm ơn bác

Chính xác bác ạ.

Vậy là số 1 này có thuộc block khung tên hay không hử nguoi_tho_mo????

Khi scale thì chọn cả khung tên và cái số 1 ấy à??? Các text khác trong khung tên thì sao????

Hề hề hề, nghĩ cho kỹ rồi đặt yêu cầu chứ đừng có Phát sinh kiểu nớ, khó đoán lắm.....

dùng các này ta có thể lựa chọn dim, text... phù hợp để khi in ra giấy chiều cao chữ là tieu chuẩn mà không phải thử nhiều lần các bác nhá.

"Hề Hề Hề" không cần nhìn nick bít ngay là bác rồi

nghĩ cho kỹ rồi đặt yêu cầu chứ

Bác nguyentuyen6 nghĩ giúp bác cháu ta rồi

Bác nào giải quyết giúp vụ khi scale luôn là số đặc biệt (1, 2, 4, 5, 10, 20,) đượ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
Chắc phải nhờ các bác thạo về lisp viết thôi

Cách làm thủ công của em là:

Tạo thêm một kiểu Dim mới bằng cách thay đổi giá trị trong:

1- Use overall scale op: (Trong thẻ Fit)

2 - Scale factor ( Trong thẻ Primary Units

 

Sau khi Scale hình vẽ xong ta dùng lệnh MA quét kích thước theo một kích thước của kiểu dim vừa tạo là được.

Dim của em để trong block thì ko dc nữa bác 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

Chào bạn nguoi_tho_mo. Không biết bạn đã làm đc cái Block chứa FIELD kia chưa. Nếu chưa thì để mình hướng dẫn luôn.

Còn vấn đề vẽ trong MODEL mà ta hay scale khung với tỉ lệ khung bất kỳ mà khi muốn in ra các DIM và TEXT luôn bằng nhau thì mình cũng đã từng mắc phải. Mình có viết 1 lisp để làm việc này. Nếu bạn cần thì mai mình úp lên cho bạn tham khảo. Khi dùng líp này thì dù khung có scale bao nhiêu đi nữa thì in ra TEXT và DIM vẫn cứ bằng nhau. hề hề.

  • 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
Chào bạn nguoi_tho_mo. Không biết bạn đã làm đc cái Block chứa FIELD kia chưa. Nếu chưa thì để mình hướng dẫn luôn.

Còn vấn đề vẽ trong MODEL mà ta hay scale khung với tỉ lệ khung bất kỳ mà khi muốn in ra các DIM và TEXT luôn bằng nhau thì mình cũng đã từng mắc phải. Mình có viết 1 lisp để làm việc này. Nếu bạn cần thì mai mình úp lên cho bạn tham khảo. Khi dùng líp này thì dù khung có scale bao nhiêu đi nữa thì in ra TEXT và DIM vẫn cứ bằng nhau. hề hề.

Cảm ơn bác Nguyentuyen6

Field em làm dc từ ngay lúc đó.

có lisp thì càng tuyệt vời hơn

Rất mong bác sớm up lên sớm cùng chia sẻ và hoàn thiệ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
Cảm ơn bác Nguyentuyen6

Field em làm dc từ ngay lúc đó.

có lisp thì càng tuyệt vời hơn

Rất mong bác sớm up lên sớm cùng chia sẻ và hoàn thiện.

 

Bạn thử cái này nhé. Mình để chiều cao Dim mặc định là bằng 1/150 chiều rộng (ngắn) của blok khung tên. Chiều cao Text cao hơn Dim là 1,2 lần

 

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))
(defun KetThuc() (setvar "osmode" OldOs)(princ))
(defun moddxf (dxf chdxf ss) (entmod (subst (cons dxf chdxf) (assoc dxf (entget ss)) (entget ss))))
;=========== FIX DIM TEXT ===========;
;Chinh chieu cao cua dim & text theo ;
;chieu rong(ngan) cua block khung ten;
;Mac dinh la = 1/150 chieu rong k/ten;
;====================================;
(defun c:ft (/ Rec pt1 pt2 rpt1 rpt2 rpt3 rpt4 dis12 dis14 dis toadodinh 
caodim tilechu textgap dimxtend i el1 el ssd en OldOs OldEcho )
(vl-load-com)
(setq OldEcho (getvar "cmdecho")) 
(setvar "cmdecho" 0)
(command "undo" "be")
(princ "\n      From nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
(setq Rec (acet-ent-geomextents (car (entsel "\nChon block khung ten:")))
	  pt1 (nth 0 Rec);lay dinh               *-----pt2
	  pt2 (nth 1 Rec);lay dinh               | khung |
	  i 0);setq                              pt1-----*	
;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai, ve hcn
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)	
(setq el1 (entlast));el1
;-----lay tile, mac dinh la :1
(setq
 tileft (cond (tileft) (1))
 tileftold tileft
 tileft   (getreal (strcat "\nChon ty le <"(rtos tileftold 2 2)">: "))
)
(if (= tileft nil) (setq tileft tileftold))
;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1);    	  rpt4----rpt3
	  rpt1 (nth 0 toadodinh);lay dinh                  |  el1 |
	  rpt2 (nth 1 toadodinh);lay dinh                 rpt1----rpt2
	  rpt3 (nth 2 toadodinh);lay dinh 
	  rpt4 (nth 3 toadodinh);lay dinh
	  dis12 (distance rpt1 rpt2)
	  dis14 (distance rpt1 rpt4));setq
;----- Chia truong hop khung ngang va khung doc
(if (> dis12 dis14)		  
	  (setq caodim (* tileft (/ dis14 150)));T
	  (setq caodim (* tileft (/ dis12 150)));F
) ;if
(setq textgap (/ caodim 2); k/c tu Text den duong Dim
  dimxtend (/ caodim 2);k/c dau dim 
  tilechu (* caodim 1.2); cao Text so voi cao Dim(text)
  ) 
;-----	
(command "ERASE" el1 "");xoa hcn		 
(princ (strcat "\nDim:<" (rtos caodim 2 0) ">. Text:<" (rtos tilechu 2 0) ">. Chon Dim & Text can Fix:"))
;======================= M A I N =============================
(setq ssd (ssget '((0 . "DIMENSION,TEXT")))); loc dim text
(while (< i (sslength ssd))
(setq en (ssname ssd i))
;---- Text -----
(if (= (cdr (assoc 0 (entget en))) "TEXT")
	(moddxf 40 tilechu en)
);if
;-- DIMENSION -----
(if (= (cdr (assoc 0 (entget en))) "DIMENSION")
	(progn 
		(setq el (vlax-ename->vla-object en))
		(vlax-put-property el 'ScaleFactor 1); chinh Scalefactor
		(vlax-put-property el 'textheight caodim); chieu cao text trong dim
		(vlax-put-property el 'textgap textgap); k/c tu Text den duong Dim
		(vlax-put-property el 'ArrowheadSize dimxtend); do lon mui ten
		(vlax-put-property el 'DimensionLineExtend dimxtend);k/c 2 ben duong dim
		(vlax-put-property el 'ExtensionLineExtend dimxtend);k/c duong giong dim -> duong dim
		(vlax-put-property el 'Arrowhead1Block "ArchTick"); loai mui ten
		(vlax-put-property el 'Arrowhead2Block "ArchTick"); loai mui ten			
	);progn						  
);if					  
(setq i (1+ i))	 
);while
;---------------
(command "undo" "e")
(KetThuc)
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
);defun

  • 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 thử cái này nhé. Mình để chiều cao Dim mặc định là bằng 1/150 chiều rộng (ngắn) của blok khung tên. Chiều cao Text cao hơn Dim là 1,2 lần

 

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))
(defun KetThuc() (setvar "osmode" OldOs)(princ))
(defun moddxf (dxf chdxf ss) (entmod (subst (cons dxf chdxf) (assoc dxf (entget ss)) (entget ss))))
;=========== FIX DIM TEXT ===========;
;Chinh chieu cao cua dim & text theo ;
;chieu rong(ngan) cua block khung ten;
;Mac dinh la = 1/150 chieu rong k/ten;
;====================================;
(defun c:ft (/ Rec pt1 pt2 rpt1 rpt2 rpt3 rpt4 dis12 dis14 dis toadodinh 
caodim tilechu textgap dimxtend i el1 el ssd en OldOs OldEcho )
(vl-load-com)
(setq OldEcho (getvar "cmdecho")) 
(setvar "cmdecho" 0)
(command "undo" "be")
(princ "\n      From nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
(setq Rec (acet-ent-geomextents (car (entsel "\nChon block khung ten:")))
	  pt1 (nth 0 Rec);lay dinh               *-----pt2
	  pt2 (nth 1 Rec);lay dinh               | khung |
	  i 0);setq                              pt1-----*	
;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai, ve hcn
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)	
(setq el1 (entlast));el1
;-----lay tile, mac dinh la :1
(setq
 tileft (cond (tileft) (1))
 tileftold tileft
 tileft   (getreal (strcat "\nChon ty le <"(rtos tileftold 2 2)">: "))
)
(if (= tileft nil) (setq tileft tileftold))
;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1);    	  rpt4----rpt3
	  rpt1 (nth 0 toadodinh);lay dinh                  |  el1 |
	  rpt2 (nth 1 toadodinh);lay dinh                 rpt1----rpt2
	  rpt3 (nth 2 toadodinh);lay dinh 
	  rpt4 (nth 3 toadodinh);lay dinh
	  dis12 (distance rpt1 rpt2)
	  dis14 (distance rpt1 rpt4));setq
;----- Chia truong hop khung ngang va khung doc
(if (> dis12 dis14)		  
	  (setq caodim (* tileft (/ dis14 150)));T
	  (setq caodim (* tileft (/ dis12 150)));F
) ;if
(setq textgap (/ caodim 2); k/c tu Text den duong Dim
  dimxtend (/ caodim 2);k/c dau dim 
  tilechu (* caodim 1.2); cao Text so voi cao Dim(text)
  ) 
;-----	
(command "ERASE" el1 "");xoa hcn		 
(princ (strcat "\nDim:<" (rtos caodim 2 0) ">. Text:<" (rtos tilechu 2 0) ">. Chon Dim & Text can Fix:"))
;======================= M A I N =============================
(setq ssd (ssget '((0 . "DIMENSION,TEXT")))); loc dim text
(while (< i (sslength ssd))
(setq en (ssname ssd i))
;---- Text -----
(if (= (cdr (assoc 0 (entget en))) "TEXT")
	(moddxf 40 tilechu en)
);if
;-- DIMENSION -----
(if (= (cdr (assoc 0 (entget en))) "DIMENSION")
	(progn 
		(setq el (vlax-ename->vla-object en))
		(vlax-put-property el 'ScaleFactor 1); chinh Scalefactor
		(vlax-put-property el 'textheight caodim); chieu cao text trong dim
		(vlax-put-property el 'textgap textgap); k/c tu Text den duong Dim
		(vlax-put-property el 'ArrowheadSize dimxtend); do lon mui ten
		(vlax-put-property el 'DimensionLineExtend dimxtend);k/c 2 ben duong dim
		(vlax-put-property el 'ExtensionLineExtend dimxtend);k/c duong giong dim -> duong dim
		(vlax-put-property el 'Arrowhead1Block "ArchTick"); loai mui ten
		(vlax-put-property el 'Arrowhead2Block "ArchTick"); loai mui ten			
	);progn						  
);if					  
(setq i (1+ i))	 
);while
;---------------
(command "undo" "e")
(KetThuc)
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
);defun

Rất hiệu quả.

Xin cảm ơn bác.

Chúc bác nghiên cứu thêm nhiều ứng dụng hơn nữa

  • 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

Cho Em hỏi, trong 1 khung tên của em có 2 loại cỡ chữ, chẳng hạn chiều cao chữ là 250 và 500 thì sau khi sử dụng list trên thì 2 cỡ trên bằng nhau. Vậy có cách nào khác không các 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

Đăng nhập để thực hiện theo  

×