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

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

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

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

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 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!

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 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.

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 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ề.

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
Để 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

  • 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ũ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)

)

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ì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 ^^

93363120.gif

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ũ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 ạ.

  • 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 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 ạ ?

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ì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:

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 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

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á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 (

(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:

Chỉnh sửa theo Tue_NV
Code cập nhật theo ý kiến của anh Duy
  • 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ả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 mà :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.

  • 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

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

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 thích màu xanh lá màu cam mà :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

  • 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á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

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 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.

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
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.com/upfiles/3/1_9.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
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!

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 đồng ý là nếu có lisp thì sẽ nhanh hơn được khoảng 1s.

:undecided: Bạn nói là trong trường hợp chỉ có 1 đối tượng,và dùng mắt thường + mất vài giây để nghĩ ra xem nó bị ngược theo chiều nào..Giả dụ có vài trăm,vài nghìn em bị đảo lộn thì..thôi rồi :bigsmile:

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
Hình như nó vẫn chưa đc

http://www.cadviet.com/upfiles/3/1_9.jpg

Chào bác TrungNgaMy, anh Duy, bạn ketxu

Lisp ở bài viết số 13 chỉ xử lý với những anh Text bị Mirror thôi chứ chưa xử lý các Text bị Rotate ngược.

Muốn xử lý thêm các anh Text bị Rotate ngược nữa như file ảnh mà bác TrungNgaMy đã upload thì thêm 1 chút nữa vào code

(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 ((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))
)
;;;;;;;;;;;;;;
(if (and (/= ROSAVE pi) (> ROSAVE (/ pi 2)) (	(command ".rotate" textent "" diemquay "180")
)

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

Các bác thử nhé

 

@foudremars : Lisp xử lý với nhiều đối tượng sẽ làm tăng hiệu quả công việc. Nếu nhieu thì làm bằng tay cũng được, cũng chẳng ảnh hưởng gì đến hoà bình thế giới :undecided:

  • Vote tăng 4

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
:undecided: Bạn nói là trong trường hợp chỉ có 1 đối tượng,và dùng mắt thường + mất vài giây để nghĩ ra xem nó bị ngược theo chiều nào..Giả dụ có vài trăm,vài nghìn em bị đảo lộn thì..thôi rồi :bigsmile:

 

>> Ketxu: Bạn đưa cho mình 1 bản vẽ có hàng trăm, hàng nghìn đối tượng Text bị đảo ngược chiều lẫn lộn. 3s sau mình sẽ gửi lại cho bạn bản vẽ mà các đối tượng đó đã được sắp sếp lại, tất nhiên mình làm theo cách mình đã nói ở trên.

 

>> Tue_NV: Mình cũng hay vào diễn đàn và thấy rằng bạn là người rất nhiệt tình giúp đỡ các thành viên khác. Mình rất cảm ơn bạn. Mình đã dùng thử Lisp trên của bạn, và mình có một số ý kiến như sau:

1. Với những Text mà bị MIRROR theo cả 2 phương X và Y thì Lisp trên chưa đưa nó về đúng chiều được.

2. Càng nhiều đối tượng TEXT bị ngược chiều thì Lisp của bạn càng chậm hơn cách dùng lệnh MO của AutoCAD.

 

Cảm ơn 2 bạn đã có những ý kiến đóng góp!

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

×