Rated 5/5 based on 240179 internet user reviews

Đến nội dung


Hình ảnh
- - - - -

Cho xin lisp chỉnh chữ bị ngược khi MI


  • Please log in to reply
34 replies to this topic

#1 hung1608

hung1608

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 09 September 2010 - 03:39 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks
  • 0

#2 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 6 (bình thường)

Đã gửi 09 September 2010 - 04:59 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks

Bạn gửi file lên thử xem!
  • 0

#3 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 09 September 2010 - 05:12 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks

Để viết đc lisp này cần làm sao để biết trong bản vẽ text nào bị ngược. Còn các vần đề khác thì giải quyết đơn giản.
  • 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 :-cool.png


#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 5833 Bài viết
Điểm đánh giá: 3034 (tuyệt vời)

Đã gửi 09 September 2010 - 05:24 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks

Chào bạn hung1608,
1/- Việc đổi text bị miror ngược về như cũ có thể làm được xong vị trí của text sẽ bị thay đổi hay nói chính xác hơn là nó sẽ không nằm đúng với vị trí của lệnh miror nữa. Vậy bạn muốn sao???
2/- Cái vụ này bạn phải hỏi thằng Autodesk vì nó đã cố tình làm như vậy. Tại sao thì là vì bố nó bảo nó thế. Nếu bạn muốn miror block mà các text không bị lộn phèo thì phải tự mình viết cái lệnh mirror khác. Điều này cũng có thể nhưng không phải dễ như ăn kẹo đâu vì cái block này nó lắm chuyện lắm. Nếu bạn chưa đủ năng lực để làm thì hãy tạm chấp nhận nó đi đã. hề hề hề.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 September 2010 - 06:38 PM

Để viết đc lisp này cần làm sao để biết trong bản vẽ text nào bị ngược. Còn các vần đề khác thì giải quyết đơn giản.

Cũng không thành vấn đề đâu, anh ạ. Dựa vaof mã dxf 71 của Text
Nếu mã dxf71 = 0 thì text không bị ngược
Nếu mã dxf71 = 2 thì text ngược theo phương X
Nếu mã dxf71 = 4 thì text ngược theo phương Y
Như vậy, căn cứ vào mã dxf71 và cái Textbox của Text sẽ giải quyết trọn vấn đề

1. Thiết lập biến mirtext = 1. Chọn tập chọn Text
2. Duyệt qua từng Text
-> Nếu dxf71 của Text = 2 -> Xử lý cho Text không bị ngược theo phương X (dựa vào cái Textbox của Text và lệnh Mirror)
-> Nếu dxf71 của Text = 4 -> Xử lý cho Text không bị ngược theo phương Y (dựa vào cái Textbox của Text và lệnh Mirro)

Chào bạn hung1608,
1/- Việc đổi text bị miror ngược về như cũ có thể làm được xong vị trí của text sẽ bị thay đổi hay nói chính xác hơn là nó sẽ không nằm đúng với vị trí của lệnh miror nữa. Vậy bạn muốn sao???
....

Với việc xử lý Text như ý kiến của Tue_NV thì vị trí Text sẽ không bị thay đổi vị trí (Ta lấy trung điểm mà mirror -> sau khi lấy được điểm max và min của Textbox -> Lấy được 4 điểm bao xung quanh Text)
Chúc bác vui
  • 1

#6 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 09 September 2010 - 08:28 PM

Cũng không thành vấn đề đâu, anh ạ. Dựa vaof mã dxf 71 của Text
Nếu mã dxf71 = 0 thì text không bị ngược
Nếu mã dxf71 = 2 thì text ngược theo phương X
Nếu mã dxf71 = 4 thì text ngược theo phương Y
Như vậy, căn cứ vào mã dxf71 và cái Textbox của Text sẽ giải quyết trọn vấn đề

Thử líp sau xem sao:

(Defun c:mit ( )
(command "undo" "be")
(setq luulattext (getvar "mirrtext"))
(setvar "mirrtext" 1)
(Princ "\nHay chon doi tuong :")
(setq SS (ssget '((0 . "TEXT"))))
(setq i 0)
(setq N (sslength ss))
(while (< i N)
(setq TEXTENT (ssname SS i))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(command "ucs" "object" textent)
(setq tbTB (textbox (list (cons -1 textent)))
ll (car tbTB)
ur (cadr tbTB)
ul (list (car ll) (cadr ur))
lr (list (car ur) (cadr ll))
)

(setq daitext (distance ul lr))
(setq goctext(angle ul lr))
(setq dainuatext (/ daitext 2))
(setq diemquay (polar ul goctext dainuatext))
(setq diemlatx (list (car diemquay) (+ (cadr diemquay) 100)))
(setq diemlaty (list (- (car diemquay) 100) (cadr diemquay)))


(setq DTT (entget TEXTENT))
(setq TEXT (cdr (assoc 71 DTT)))
(cond
((= TEXT 2) (command ".mirror" textent "" diemquay diemlatx "y"))
((= TEXT 4) (command ".mirror" textent "" diemquay diemlaty "y"))
)


(command "ucs" "p")
(setq i (1+ i))
(setvar "osmode"luubatdiem)
)
(setvar "mirrtext" luulattext)
(command "undo" "end")
(Princ)
)

  • 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 :-cool.png


#7 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5483 Bài viết
Điểm đánh giá: 2508 (tuyệt vời)

Đã gửi 09 September 2010 - 09:10 PM

Mìn vừa test thử,thấy kết quả như này,có lẽ vẫn cần chỉnh lại 1 tí bác ơi ^^
Hình đã gửi
  • 0

Thành viên nhóm CadMagic.

Mời bạn ghé thăm facebook nhóm  :

CAD MAGIC


#8 TRUNGNGAMY

TRUNGNGAMY

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 394 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 10 September 2010 - 01:47 AM

Mìn vừa test thử,thấy kết quả như này,có lẽ vẫn cần chỉnh lại 1 tí bác ơi ^^
Hình đã gửi

Bạn có thể cho xem bản vẽ đc kg
  • 0

#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 5833 Bài viết
Điểm đánh giá: 3034 (tuyệt vời)

Đã gửi 10 September 2010 - 12:06 PM

Cũng không thành vấn đề đâu, anh ạ. Dựa vaof mã dxf 71 của Text
Nếu mã dxf71 = 0 thì text không bị ngược
Nếu mã dxf71 = 2 thì text ngược theo phương X
Nếu mã dxf71 = 4 thì text ngược theo phương Y
Như vậy, căn cứ vào mã dxf71 và cái Textbox của Text sẽ giải quyết trọn vấn đề

1. Thiết lập biến mirtext = 1. Chọn tập chọn Text
2. Duyệt qua từng Text
-> Nếu dxf71 của Text = 2 -> Xử lý cho Text không bị ngược theo phương X (dựa vào cái Textbox của Text và lệnh Mirror)
-> Nếu dxf71 của Text = 4 -> Xử lý cho Text không bị ngược theo phương Y (dựa vào cái Textbox của Text và lệnh Mirro)
Với việc xử lý Text như ý kiến của Tue_NV thì vị trí Text sẽ không bị thay đổi vị trí (Ta lấy trung điểm mà mirror -> sau khi lấy được điểm max và min của Textbox -> Lấy được 4 điểm bao xung quanh Text)
Chúc bác vui

Chào bác Tue_NV,
Thực ra không phải chỉ có mã 71 đâu bác ạ, còn cả mã 50 nữa. Trường hợp text bị lộn tu thì mã 71 vẫn là 2 nhưng mã 50 sẽ là 3.14..... (pi) Bác ạ.
Với block thì sau miror, mã 41 sẽ là -1, nếu lộn tu thì thêm mã 50 là pi.
Với text đơn thuần thì việc xác định textbox để cho nó không bị lệch vị trí là có thể, còn các text trong bolck thì sẽ không làm thế được bác ạ, nhất là với các text có trong dim mà lại nằm trong block nữa. Có nhẽ lại phải dùng thằng tblserch rồi duyệt qua từng đối tượng trong block chăng???
Bác thử nghiên cứu xem bác nhé.
Chúc bác khỏe và vui.
À mà có nhẽ cũng không cần phải thiết lập lại biến mirrtext đâu bác ạ.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5483 Bài viết
Điểm đánh giá: 2508 (tuyệt vời)

Đã gửi 10 September 2010 - 06:46 PM

Bạn có thể cho xem bản vẽ đc kg

E chỉ thử block 1 hình rồi mi theo 2 phương x,y để test lisp thôi mà :undecided:

Chào bác Tue_NV,
Thực ra không phải chỉ có mã 71 đâu bác ạ, còn cả mã 50 nữa. Trường hợp text bị lộn tu thì mã 71 vẫn là 2 nhưng mã 50 sẽ là 3.14..... (pi) Bác ạ.
Với block thì sau miror, mã 41 sẽ là -1, nếu lộn tu thì thêm mã 50 là pi.
Với text đơn thuần thì việc xác định textbox để cho nó không bị lệch vị trí là có thể, còn các text trong bolck thì sẽ không làm thế được bác ạ, nhất là với các text có trong dim mà lại nằm trong block nữa. Có nhẽ lại phải dùng thằng tblserch rồi duyệt qua từng đối tượng trong block chăng???
Bác thử nghiên cứu xem bác nhé.
Chúc bác khỏe và vui.
À mà có nhẽ cũng không cần phải thiết lập lại biến mirrtext đâu bác ạ.


Những thông tin này làm sao tìm được ạ ?
  • 0

Thành viên nhóm CadMagic.

Mời bạn ghé thăm facebook nhóm  :

CAD MAGIC


#11 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 10 September 2010 - 07:50 PM

Mìn vừa test thử,thấy kết quả như này,có lẽ vẫn cần chỉnh lại 1 tí bác ơi ^^

-Mình thử kiểm tra thì đúng là Tuệ và sách nói như nhau nhưng trong bản vẽ của mình thì cả text bị mi theo x và y điều báo dxf 71 = 2 cả nên bị như trên. Không có hướng khắc phục được.
-Mình cũng thử đoạn lisp thay tất cả dxf 71 của các text thành 0 thì lại bị di chuyển vị trí.
*Giải pháp cuối cùng cho tình thế này của mình là cứ dùng lisp trên sau đó thèn nào nằm ngửa thì dùng lisp quay nó 180 quanh tâm chính nó là được. Có điều các text nằm ngửa này phải chọn bằng mắt và tay :undecided:
  • 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 :-cool.png


#12 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2389 Bài viết
Điểm đánh giá: 758 (tốt)

Đã gửi 10 September 2010 - 08:05 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks

Trong lúc chờ Lisp, anh có thể làm thủ công bằng cách:
- Tắt hết các lớp khác chỉ để lại lớp có rất nhiều chữ bị ngược
- Copy khung bản vẽ có chứa lớp chữ ngược ra ngoài
- Mi theo cạch khung bản vẽ
- Chỉnh biến MirrText
-Mi tiếp
- Cop vào bản vẽ nguyên thuỷ sau khi đã xoá các layer chữ ngược
  • 0

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 September 2010 - 09:53 PM

Chào bác Tue_NV,
Thực ra không phải chỉ có mã 71 đâu bác ạ, còn cả mã 50 nữa. Trường hợp text bị lộn tu thì mã 71 vẫn là 2 nhưng mã 50 sẽ là 3.14..... (pi) Bác ạ.
Với block thì sau miror, mã 41 sẽ là -1, nếu lộn tu thì thêm mã 50 là pi.
Với text đơn thuần thì việc xác định textbox để cho nó không bị lệch vị trí là có thể, còn các text trong bolck thì sẽ không làm thế được bác ạ, nhất là với các text có trong dim mà lại nằm trong block nữa. Có nhẽ lại phải dùng thằng tblserch rồi duyệt qua từng đối tượng trong block chăng???
Bác thử nghiên cứu xem bác nhé.
Chúc bác khỏe và vui.
À mà có nhẽ cũng không cần phải thiết lập lại biến mirrtext đâu bác ạ.

Cảm ơn bác Bình. Em quên mất mã 50. Thiết lập thêm mã 50 nữa là được. Nhưng có 1 điều mà Tue_NV không hiểu tại sao các mã dxf71 của Text bị mirror theo phương X và bị mirror theo phương Y đều bằng 2???
Em chưa có thời gian để nghiên cứu bác ạ. Nếu có thời gian em mới nâm cứu được bác ạ. Cảm ơn bác nhiều ạ :undecided:

-Mình thử kiểm tra thì đúng là Tuệ và sách nói như nhau nhưng trong bản vẽ của mình thì cả text bị mi theo x và y điều báo dxf 71 = 2 cả nên bị như trên. Không có hướng khắc phục được.
-Mình cũng thử đoạn lisp thay tất cả dxf 71 của các text thành 0 thì lại bị di chuyển vị trí.
*Giải pháp cuối cùng cho tình thế này của mình là cứ dùng lisp trên sau đó thèn nào nằm ngửa thì dùng lisp quay nó 180 quanh tâm chính nó là được. Có điều các text nằm ngửa này phải chọn bằng mắt và tay :bigsmile:

Cảm ơn anh Duy nhiều. Xin mạn phép anh, Tue_NV xin sửa lại code của anh cho phù hợp

(Defun c:mit (/ luulattext ss i n textent luubatdiem tbTB ll ur ul lr daitext ROSAVE
goctext dainuatext diemquay diemlatx diemlaty DTT TEXT ROTEXT)
(command "undo" "be")
(setq luulattext (getvar "mirrtext"))
(setvar "mirrtext" 1)
(Princ "\nHay chon doi tuong :")
(setq SS (ssget '((0 . "TEXT"))))
(setq i 0)
(setq N (sslength ss))
(while (< i N)
(setq TEXTENT (ssname SS i))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)

(setq DTT (entget TEXTENT))
(setq TEXT (cdr (assoc 71 DTT)))
(setq ROSAVE (cdr (assoc 50 DTT)))
(command "ucs" "object" textent)

(setq tbTB (textbox (list (cons -1 textent)))
ll (car tbTB)
ur (cadr tbTB)
ul (list (car ll) (cadr ur))
lr (list (car ur) (cadr ll))
)

(setq daitext (distance ul lr))
(setq goctext(angle ul lr))
(setq dainuatext (/ daitext 2))
(setq diemquay (polar ul goctext dainuatext))

(if (and (/= ROSAVE 0) (/= ROSAVE pi))
(progn
(command "rotate" textent "" diemquay (/ (* ROSAVE -180) pi))
(command "ucs" "W")
(command "ucs" "object" textent)
)
)
(setq diemlatx (list (car diemquay) (+ (cadr diemquay) 100)))
(setq diemlaty (list (- (car diemquay) 100) (cadr diemquay)))
(setq DTT (entget TEXTENT))
(setq ROTEXT (cdr (assoc 50 DTT)))
(cond
((and (= TEXT 2) (= ROTEXT 0)) (command ".mirror" textent "" diemquay diemlatx "y"))
((and (= TEXT 0) (= ROTEXT pi)) (command ".rotate" textent "" diemquay "180"))

((and (= TEXT 2) (= ROTEXT pi))
(progn (command ".mirror" textent "" diemquay diemlatx "y")
(command ".rotate" textent "" diemquay "180")
)
)
)
(if (and (/= ROSAVE 0) (/= ROSAVE pi))
(command "rotate" textent "" diemquay (/ (* ROSAVE 180) pi))
)

(command "ucs" "p")
(setq i (1+ i))
(setvar "osmode"luubatdiem)
)
(setvar "mirrtext" luulattext)
(command "undo" "end")
(Princ)
)

Anh Duy thích màu sắc đặc biệt quá :bigsmile:

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 11 September 2010 - 06:52 AM
Code cập nhật theo ý kiến của anh Duy

  • 1

#14 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 10 September 2010 - 10:10 PM

Cảm ơn bác Bình. Em quên mất mã 50. Thiết lập thêm mã 50 nữa là được. Nhưng có 1 điều mà Tue_NV không hiểu tại sao các mã dxf71 của Text bị mirror theo phương X và bị mirror theo phương Y đều bằng 2???
Em chưa có thời gian để nghiên cứu bác ạ. Nếu có thời gian em mới nâm cứu được bác ạ. Cảm ơn bác nhiều ạ :bigsmile:

Cảm ơn anh Duy nhiều. Xin mạn phép anh, Tue_NV xin sửa lại code của anh cho phù hợp

((setq ROTEXT (cdr (assoc 50 DTT)))
(cond
((and (= TEXT 2) (= ROTEXT 0)) (command ".mirror" textent "" diemquay diemlatx "y"))
((and (= TEXT 0) (= ROTEXT pi)) (command ".rotate" textent "" diemquay "180"))

((and (= TEXT 2) (= ROTEXT pi))
(progn (command ".mirror" textent "" diemquay diemlatx "y")
(command ".rotate" textent "" diemquay "180")

Anh Duy thích màu sắc đặc biệt quá :bigsmile:

Mình thích màu xanh lá màu cam:undecided: .
-Lisp vẩn chưa ok Tuệ à vì tính tổng quát thì có khi text còn bị mi đi 1 góc bất kỳ nửa lúc này thì bọn chúng không nhúc nhích luôn.
  • 1

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 :-cool.png


#15 TRUNGNGAMY

TRUNGNGAMY

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 394 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 11 September 2010 - 12:43 AM

Mình kg thấy bv nên kg biết cụ thể TH này phức tạp như thế nào. Mình xin góp ý tý thôi. Trong lisp chỉ cần đặt mã 71 =0, còn góc quay cần kiểm tra góc hiện tại của text xem nó có bị ngược kg để chỉnh quay đầu lại. TH nếu biết cụ thể text đã quay góc bao nhiêu so với ban đầu thì dễ hơn. Mình nghĩ việc quay text về góc củ hay quay đầu lên còn phụ thuộc vào mục đích của người làm.
Việc này nói chung có thể thực hiện đc trên thanh properties
  • 0

#16 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 September 2010 - 06:43 AM

Mình thích màu xanh lá màu cam:undecided: .
-Lisp vẩn chưa ok Tuệ à vì tính tổng quát thì có khi text còn bị mi đi 1 góc bất kỳ nửa lúc này thì bọn chúng không nhúc nhích luôn.

Cảm ơn anh. Tue_NV đã làm cho mấy anh đó "nhúc nhích" được rồi. Code được cập nhật ở bài số 13
  • 1

#17 TRUNGNGAMY

TRUNGNGAMY

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 394 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 11 September 2010 - 10:04 AM

Chào bác Tue_NV,
Thực ra không phải chỉ có mã 71 đâu bác ạ, còn cả mã 50 nữa. Trường hợp text bị lộn tu thì mã 71 vẫn là 2 nhưng mã 50 sẽ là 3.14..... (pi) Bác ạ.
Với block thì sau miror, mã 41 sẽ là -1, nếu lộn tu thì thêm mã 50 là pi.
Với text đơn thuần thì việc xác định textbox để cho nó không bị lệch vị trí là có thể, còn các text trong bolck thì sẽ không làm thế được bác ạ, nhất là với các text có trong dim mà lại nằm trong block nữa. Có nhẽ lại phải dùng thằng tblserch rồi duyệt qua từng đối tượng trong block chăng???
Bác thử nghiên cứu xem bác nhé.
Chúc bác khỏe và vui.
À mà có nhẽ cũng không cần phải thiết lập lại biến mirrtext đâu bác ạ.

Mình thấy vđ này giải quyết đơn giản bằng cách thiết lập mã 71=0 và mã 50 = hàm gocve mà trước đây bác tdvn cung cấp.
Còn một vđ nữa là các text sau khi xử lý sẽ nhảy một khoảng nếu kiểu định vị của chúng khác mid.

Mình đưa lisp để các bạn tham khảo chơi xem có đc kg
* ham doi goc tu radian thanh deg
(defun deg( so)
(/ (* 180 so) pi)
)
;Ham doi goc tu do ra radial
(defun ra( g)
(/ (* g pi) 180)
)
;Ham xu ly goc am
(defun gocam( goc)
(if (< goc 0.0) (+ 360.0 goc) goc)
)
(defun gocve( goc)
(if (and (> goc 90.0) (< goc 270)) (+ goc 180.0) goc)
)
(defun dxf( name n)
(cdr (assoc n (entget name)))
)

(defun c:cmir( / ss i name goc m71)
(setq ss (ssget '((0 . "text"))))
(setq i 0)
(while (< i (sslength ss))
(setq name (ssname ss i))
(setq goc (dxf name 50) m71 (dxf name 71))
(setq goc (ra (gocve (gocam (deg goc)))))
(entmod (subst (cons 71 0) (assoc 71 (entget name)) (entget name)))
(entmod (subst (cons 50 goc) (assoc 50 (entget name)) (entget name)))
(setq i (1+ i))
)
)

Riêng dòng
(entmod (subst (cons 50 goc) (assoc 50 (entget name)) (entget name)))
có thể sd lệnh "rotate" tại vị trí quay do bác TUE viết bên dưới để text khỏi bị nhảy
  • 0

#18 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 11 September 2010 - 10:46 AM

Cảm ơn anh. Tue_NV đã làm cho mấy anh đó "nhúc nhích" được rồi. Code được cập nhật ở bài số 13

Ok ngon rồi! Ko biết chủ thớt ném yêu cầu rồi vân du phương nào mất tiêu. Riêng mình thì thấy đã giải quyết xong thèn text (text ko bị mi mà bị ngả ngửa cũng đã khuyến mãi sửa luôn). Còn thèn text trong block thì chắc là ráng chịu vậy.
  • 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 :-cool.png


#19 TRUNGNGAMY

TRUNGNGAMY

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 394 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 11 September 2010 - 11:05 AM

Ok ngon rồi! Ko biết chủ thớt ném yêu cầu rồi vân du phương nào mất tiêu. Riêng mình thì thấy đã giải quyết xong thèn text (text ko bị mi mà bị ngả ngửa cũng đã khuyến mãi sửa luôn). Còn thèn text trong block thì chắc là ráng chịu vậy.

Hình như nó vẫn chưa đc
http://www.cadviet.c...files/3/1_9.jpg
  • 0

#20 foudremars

foudremars

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 11 September 2010 - 01:14 PM

Bản vẽ của mình có rất nhiều chữ bị ngược. Minh nghe nói có lisp Siron.vlx khi dùng thì tất cả các text bị ngược sẽ trở về bình thường.Bạn nào có lisp cho mình xin nhé.
Mình tìm trên diễn đàn mà không có. Cho mình hỏi luôn nhé. Khi mình Mi block trong block đó có text thì chữ chủa block khi Mi xong thi bị ngược.
Mình dùng biến MirrText để chỉnh cũng không được. Thanks


Mình nghĩ không cần phải dùng đến Lisp đâu. AutoCAD đã có sẵn rồi mà:
1. Nếu muốn Mirror mà không bị ngược chữ thì bạn gõ lệnh MIRRTEXT, rồi nhập giá trị la 0.
2. Còn các chữ đã trót bị Mirror ngược rồi, thì bạn chọn các chữ đó, gõ lệnh MO, tại thẻ Misc (lăn chuột xuống dưới cùng) bạn chọn NO ở Upside downBackward, tương ứng với chữ bị ngược theo phương X và Y.
Hi vọng đã đúng ý bạn!
  • 0