Đến nội dung


Hình ảnh

Làm cân đối lại Text khi Scale 1 chiều ??


  • Please log in to reply
8 replies to this topic

#1 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 28 April 2010 - 12:22 AM

Mình dùng phần mềm Nova để chạy ra trắc dọc tuyến nhưng lại để tỉ lệ cao/dài =2/1.Bây giờ mình muốn để lại tỉ lệ 1/1 mà không muốn chạy lại Nova vì rất mất công(phải vạch tuyến, chạy td, vẽ đường đỏ, đường cong,....) nên mình Block cái trắc dọc đó rồi Scale theo một chiều y với tỉ lệ 0.5 => Kích thước cao thì đã ok nhưng phát sinh vấn đề là text và số không còn cân đối nữa do đã bị scale chỉ theo một chiều nên trông rất xấu.
Hình đã gửi
Bạn nào có cách giải quyết giúp mình cho chữ cân đối trở lại.Thanks!!
File Cad của mình đây:http://www.cadviet.com/upfiles/2/tdham.dwg
  • 0

#2 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 28 April 2010 - 07:26 AM

Mình dùng phần mềm Nova để chạy ra trắc dọc tuyến nhưng lại để tỉ lệ cao/dài =2/1.Bây giờ mình muốn để lại tỉ lệ 1/1 mà không muốn chạy lại Nova vì rất mất công(phải vạch tuyến, chạy td, vẽ đường đỏ, đường cong,....) nên mình Block cái trắc dọc đó rồi Scale theo một chiều y với tỉ lệ 0.5 => Kích thước cao thì đã ok nhưng phát sinh vấn đề là text và số không còn cân đối nữa do đã bị scale chỉ theo một chiều nên trông rất xấu.
Bạn nào có cách giải quyết giúp mình cho chữ cân đối trở lại.Thanks!!
File Cad của mình đây:http://www.cadviet.com/upfiles/2/tdham.dwg

Chọn tất cả các text vào bảng PROPERTIES chỉnh width factor bằng 1 là ok.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 28 April 2010 - 10:25 AM

Chọn tất cả các text vào bảng PROPERTIES chỉnh width factor bằng 1 là ok.

Nếu làm như bạn nói thì chữ sẽ to trở lại trong khi khung hình bao chữ đã được thu bé lại nên chữ sẽ chèn lên cả khung hình.Mình muốn scale text lại cho nó thu nhỏ nốt chiều kia lại, tức là đã scale chiều rộng chữ với tỉ số 0.5 rồi bh muốn scale chiều cao với tỉ số 0.5 nữa.Với lại chỉnh từng chữ như thế lâu quá tại vì rất nhiều text, có cách nào chỉnh luôn trong Text Style không? Mình vào đó chỉnh lại nhưng không có tác dụng!
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 28 April 2010 - 11:25 AM

Nếu làm như bạn nói thì chữ sẽ to trở lại trong khi khung hình bao chữ đã được thu bé lại nên chữ sẽ chèn lên cả khung hình.Mình muốn scale text lại cho nó thu nhỏ nốt chiều kia lại, tức là đã scale chiều rộng chữ với tỉ số 0.5 rồi bh muốn scale chiều cao với tỉ số 0.5 nữa.Với lại chỉnh từng chữ như thế lâu quá tại vì rất nhiều text, có cách nào chỉnh luôn trong Text Style không? Mình vào đó chỉnh lại nhưng không có tác dụng!

Các chữ của bạn viết theo phương X :
-> Chiều cao chữ tăng 2 lần -> độ rộng chữ giảm 2 lần

Các chữ của bạn viết theo phương Y :
-> Chiều cao chữ giảm 2 lần -> độ rộng chữ tăng 2 lần

Cái này do bạn đã scale 1 chiều theo phương Y với tỉ lệ 0.5

Nếu thấy chiều cao chữ hơi nhỏ -> Bạn có thể tăng lên 1 chút cho phù hợp
  • 0

#5 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 29 April 2010 - 12:57 AM

Nhưng mà tăng thế nào bạn?mình chỉnh trong text manager nhưng mà không có tác dụng.
  • 0

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 30 April 2010 - 04:50 PM

Nhưng mà tăng thế nào bạn?mình chỉnh trong text manager nhưng mà không có tác dụng.

Bạn có thể sử dụng lệnh MO -> Bảng Properties để chỉnh. Nhưng nếu quá nhiều thì có thể sử dụng code Lisp sau :

(defun c:thw(/ as doc schx scwx schy scwy)
(vl-load-com)
(setq ss (ssget '((0 . "*TEXT"))))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq schx (getreal "\n he so tang chieu cao cua chu theo phuong X :"))
(setq scwx (getreal "\n he so tang do rong cua chu theo phuong X :"))
(setq schy (getreal "\n he so tang chieu cao cua chu theo phuong Y :"))
(setq scwy (getreal "\n he so tang do rong cua chu theo phuong Y :"))
(vlax-for x (setq as (vla-get-activeselectionset doc))
(if (= (vla-get-Rotation x) 0)
(progn
(vlax-put x 'height (* (vla-get-height x) schx))
(vlax-put x 'scalefactor (* (vla-get-scalefactor x) scwx))
)
)
(if (= (vla-get-Rotation x) (/ pi 2))
(progn
(vlax-put x 'height (* (vla-get-height x) schy))
(vlax-put x 'scalefactor (* (vla-get-scalefactor x) scwy))
)
)
)
(vla-delete as)
(princ)
)

Của bạn sử dụng như sau :

Command: thw -> gõ lệnh thw
Select objects: Specify opposite corner: 425 found -> Quét chọn toàn bộ đối tượng và khai báo các hệ số như dưới đây

Select objects:
he so tang chieu cao cua chu theo phuong X :2

he so tang do rong cua chu theo phuong X :0.5

he so tang chieu cao cua chu theo phuong Y :0.5

he so tang do rong cua chu theo phuong Y :2

Chúc thành công
  • 1

#7 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 30 April 2010 - 05:31 PM

Bạn có thể sử dụng lệnh MO -> Bảng Properties để chỉnh. Nhưng nếu quá nhiều thì có thể sử dụng code Lisp sau :


(defun c:thw(/ as doc schx scwx schy scwy)
(vl-load-com)
(setq ss (ssget '((0 . "*TEXT"))))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq schx (getreal "\n he so tang chieu cao cua chu theo phuong X :"))
(setq scwx (getreal "\n he so tang do rong cua chu theo phuong X :"))
(setq schy (getreal "\n he so tang chieu cao cua chu theo phuong Y :"))
(setq scwy (getreal "\n he so tang do rong cua chu theo phuong Y :"))
(vlax-for x (setq as (vla-get-activeselectionset doc))
(if (= (vla-get-Rotation x) 0)
(progn
(vlax-put x 'height (* (vla-get-height x) schx))
(vlax-put x 'scalefactor (* (vla-get-scalefactor x) scwx))
)
)
(if (= (vla-get-Rotation x) (/ pi 2))
(progn
(vlax-put x 'height (* (vla-get-height x) schy))
(vlax-put x 'scalefactor (* (vla-get-scalefactor x) scwy))
)
)
)
(vla-delete as)
(princ)
)

Của bạn sử dụng như sau :

Command: thw -> gõ lệnh thw
Select objects: Specify opposite corner: 425 found -> Quét chọn toàn bộ đối tượng và khai báo các hệ số như dưới đây

Select objects:
he so tang chieu cao cua chu theo phuong X :2

he so tang do rong cua chu theo phuong X :0.5

he so tang chieu cao cua chu theo phuong Y :0.5

he so tang do rong cua chu theo phuong Y :2

Chúc thành công

lisp rất tuyệt vời, kết quả như ý muốn.Cảm ơn bạn !Nhưng mình cho mình hỏi là chữ theo phương x , phương y là phương nào hả bạn?theo trục tọa độ của cad à?bạn giải thik dùm mấy dòng lệnh
he so tang chieu cao cua chu theo phuong X :2

he so tang do rong cua chu theo phuong X :0.5

he so tang chieu cao cua chu theo phuong Y :0.5

he so tang do rong cua chu theo phuong Y :2
  • 0

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 30 April 2010 - 05:58 PM

lisp rất tuyệt vời, kết quả như ý muốn.Cảm ơn bạn !Nhưng mình cho mình hỏi là chữ theo phương x , phương y là phương nào hả bạn?theo trục tọa độ của cad à?bạn giải thik dùm mấy dòng lệnh
he so tang chieu cao cua chu theo phuong X :2

he so tang do rong cua chu theo phuong X :0.5

he so tang chieu cao cua chu theo phuong Y :0.5

he so tang do rong cua chu theo phuong Y :2

Giải thích :
Chữ theo phương X là chữ song song với trục OX
Chữ theo phương Y là chữ song song với trục OY

- Khi bạn Scale 1 chiều theo phương OY theo 1 tỉ lệ K. Ví dụ ở đây bạn Scale 1 chiều theo phương OY theo tỉ lệ =0,5
Suy ra
=> chiều cao của chữ // OX giảm 2 lần -> trong khi đó độ rộng của chữ // OX giữ nguyên
=> độ rộng của chữ // OY giảm 2 lần -> trong khi đó chiều cao của chữ // OY giữ nguyên

Do đó : để cân đối lại thì :
=> chiều cao của chữ // OX giảm 2 lần -> trong khi đó độ rộng của chữ // OX giữ nguyên
--->>>> Phải tăng chiều cao chữ // OX lên 2 lần, nhưng khi tăng chiều cao chữ lên 2 lần thì độ rộng cũng theo đó mà tăng lên 2 lần -> do đó phải giảm độ rộng của chữ // OX 2 lần để đưa nó lại về vị trí "cân đối.

Lập luận tương tự như chữ // OY

Hãy ngẫm nghĩ thật kĩ và thật sâu đi bạn -> sẽ thấy được điều mà Tue_NV đang nói và code Lisp chạy trên đó là 1 minh chứng.
  • 0

#9 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 30 April 2010 - 06:52 PM

Cảm ơn bạn!Tăng kích thước chữ theo chiều cao thì chiều rộng sẽ tăng theo còn tăng kích thước chữ theo chiều rộng thì chiều cao lại không tăng à bạn?lisp này do bạn viết à?pro quá :cheers:
  • 0