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

[Nhờ chỉnh sửa] lisp xoay text theo pline

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

Do CAD nó chơi đểu (góc 1.5pi nó không chịu sánh) :D

Bạn thay lại hàm này trong lisp:

 

(defun FixTextAngle  (ang)
  (cond ((and (> ang (* 0.5 pi)) (< ang (* 1.5 pi))) (setq ang (+ ang pi)))
        ((equal ang (* 1.5 pi) 1e-6) (setq ang (* 0.5 pi))))
  ang)

  • 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

Do CAD nó chơi đểu (góc 1.5pi nó không chịu sánh) :D

Bạn thay lại hàm này trong lisp:

 

Quá tốt, cảm ơn bạn nhé, cuối tuần vui vẽ nhé bạn quocmanh04tt

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 lại cho bạn:

(defun c:tt (/ FixTextAngle a ang els ent h mid p pte pts spt txt)

(defun FixTextAngle (ang)

(if (and (> ang (* 0.5 pi)) (<= ang (* 1.5 pi)))

(+ ang pi)

ang))

(while (and (setq txt (car (entsel "\nPick Text")))

(wcmatch (cdr (assoc 0 (entget txt))) "TEXT")

(setq ent (entsel "\nPick LINE, PLINE: "))

(setq els (entget (car ent)))

(wcmatch (cdr (assoc 0 els)) "*LINE"))

(setq spt (osnap (cadr ent) "NEA")

mid (osnap (cadr ent) "MID"))

(if (< (car mid) (car spt))

(setq pts mid

pte spt)

(setq pts spt

pte mid))

(setq ang (FixTextAngle (angle pts pte))

els (entget txt))

(setq h (cdr (assoc 40 els))

p (cons 10 (polar spt (+ ang (* 0.5 pi)) (* 0.5 h)))

a (cons 50 ang))

(setq els (subst a (assoc 50 els) els))

(entmod (subst p (assoc 10 els) els)))

(princ))

P/s: Chọn Text trước, Line or Pline sau:

Lsp có thể uốn cong theo spline dc khô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

Do CAD nó chơi đểu (góc 1.5pi nó không chịu sánh) :D

Bạn thay lại hàm này trong lisp:

 

Dear bạn quocamnh04tt, cuối tuần vui vẽ chứ bạn,

Bạn ơi, mình có thể thêm tính năng này được ko

vị trí đặt Text đúng với vị trí khi mình chọ Line (hiện nay sau khi sử dụng lisp phải Move lai Text mất thêm một bước nữa, hihi), cảm ơn 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

- Cần lắm bản vẽ minh họa.

- Lisp hiện tại căn cứ điểm chèn của Text và điểm pick vào Line, 2 điểm này cách nhau (0.5*chiều cao Text) theo phương vuông góc với Line.

- Mình hiểu như lisp ở dưới không biết có đúng không (Chấp nhận sau khi chạy lsp, text sẽ canh lề: BottomCenter​, nếu không lsp sẽ viết dài hơn)

(defun c:tt  (/ FixTextAngle ang ent mid obj spt txt)

 (defun FixTextAngle  (ang)

  (cond ((and (> ang (* 0.5 pi)) (< ang (* 1.5 pi))) (setq ang (+ ang pi)))

        ((equal ang (* 1.5 pi) 1e-6) (setq ang (* 0.5 pi))))

  ang)

​(vl-load-com)

 (while (and (setq txt (car (entsel "\nPick Text")))

             (wcmatch (cdr (assoc 0 (entget txt))) "TEXT")

             (setq ent (entsel "\nPick LINE, PLINE: "))

             (wcmatch (cdr (assoc 0 (entget (car ent)))) "*LINE"))

  (setq spt (osnap (cadr ent) "NEA")

        mid (osnap (cadr ent) "MID")

        ang (FixTextAngle (angle spt mid))

        obj (vlax-ename->vla-object txt))

  (vla-put-Alignment obj acAlignmentBottomCenter)

  (vla-put-TextAlignmentPoint obj (vlax-3d-point spt))

  (vla-put-Rotation obj ang))

 (princ))

  • 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ần lắm bản vẽ minh họa.

- Lisp hiện tại căn cứ điểm chèn của Text và điểm pick vào Line, 2 điểm này cách nhau (0.5*chiều cao Text) theo phương vuông góc với Line.

- Mình hiểu như lisp ở dưới không biết có đúng không (Chấp nhận sau khi chạy lsp, text sẽ canh lề: BottomCenter​, nếu không lsp sẽ viết dài hơn)

BẠN MẠNH ƠI,

Lisp đôi khi bị lỗi, cho ra kết quả khác nhau bạn, cảm ơn bạn

http://www.cadviet.com/upfiles/6/154521_copy.dwg

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 thay (ở cuối lisp) ang thành (FixTextAngle ang)

 

​P/s: Chấp nhận canh lề Text như lisp chứ?

Căn lề Ok rồi bạn quocmanh04tt ơi, nhưng đôi khi Text vẫn chưa song song với line bạn ah

http://www.cadviet.com/upfiles/6/154521_copy_1.dwg

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 post cái lisp bạn đã sửa lên xem nào!

Hoặc gõ lệnh Aperature (lệnh tắt APE) thiết lập giá trị nhỏ xuống.

Đây Lisp mình sửa theo hướng dẫn của bạn, bạn kiểm tra dùm mình nhé

http://www.cadviet.com/upfiles/6/154521_tt.lsp

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

1. Sửa thế này mà (gồm cả dấu "()"):

 ang => (FixTextAngle ang)

​2. Nếu thỉnh thoảng vẫn bị thì làm theo #59 ở trên.

Quá tốt, cảm ơn bạn, đầu tuần vui vẽ nhé quocamnh04tt

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

1. Sửa thế này mà (gồm cả dấu "()"):

 ang => (FixTextAngle ang)

​2. Nếu thỉnh thoảng vẫn bị thì làm theo #59 ở trên.

bạn quocmanh04tt ơi,

mình gặp phải vấn đề này nhờ bạn với, mình hay vẽ Sơ đồ không gian nên phải đổi trục bản vẽ, dùng lệnh UCS đổi trục, khi này Lisp xoay text này ko còn đúng nữa. Mình muốn đính kèm file nhưng cả tuần này ko UP file lên được, giúp mình với nhé thanks 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

- Uh, mấy hôm nay 4R không Up được file (Bạn có thể Up lên trang khác rồi dẫn đường link được mà. Ví dụ: GoogleDriver, Mediafire...)

- Lisp đó nếu đổi UCS thì phải sửa lsp

- Sao bạn không dùng cái của LM mà bác Hạ đã đưa trong bài #65 ở trê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

- Uh, mấy hôm nay 4R không Up được file (Bạn có thể Up lên trang khác rồi dẫn đường link được mà. Ví dụ: GoogleDriver, Mediafire...)

- Lisp đó nếu đổi UCS thì phải sửa lsp

- Sao bạn không dùng cái của LM mà bác Hạ đã đưa trong bài #65 ở trên.

Hi bạn quocmanh,

Mình thấy lisp xoay text của bạn quá tốt chỉ cần sửa lại là Oki rồi.

Trong file mình đính kèm có cái Lisp ở 4R mà mình có nhờ bạn "LISP BẺ CONG LINE GIAO NHAU, LISP CCL, EDR" bị lỗi nhờ bạn sửa lại giúp với nhé, thanks bạn

 

https://drive.google.com/drive/my-drive

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 xem lại cách share link, nếu bấm vào link đó thì người bấm được đưa đến GoogleDriver của chính mình.

gửi lại bạn

xoay text

https://drive.google.com/file/d/0B1TsLvqrTXByNXV5VjJhZXQ3MHc/view?usp=sharing

bẻ cong line

https://drive.google.com/file/d/0B1TsLvqrTXByOU96dzhSdldzZms/view?usp=sharing

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 mình hỏi: Mục đích cuối cùng của bạn là đối tượng trong 3D thật, hay chỉ là 2D mô phỏng 3D?

Mục đích cuối cùng của mình là Cad 2D và 2,5D thui chứ ko xài 3D, vẽ ko gian nên phải đổi trục thôi, nhưng ko phải 3D chỉ là 2,5D hihi

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ục đích cuối cùng của mình là Cad 2D và 2,5D thui chứ ko xài 3D, vẽ ko gian nên phải đổi trục thôi, nhưng ko phải 3D chỉ là 2,5D hihi

 

1. Vậy vẽ trong 3D chi cho phức tạp? Nếu vậy bạn có thể dùng lệnh SNAPANG quay góc tùy ý để vẽ.

2. Nếu theo bản vẽ của bạn thì xác định TEXT tương đối phức tạp:

- Xác định mặt phẳng đặt TEXT (mặt phẳng này quay quanh trục - Chính là đường LINE mà bạn muốn đặt).

- Sau khi có mặt phẳng đó rồi mới xác định góc quay của TEXT trong mặt phẳng đó...

  • 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

1. Vậy vẽ trong 3D chi cho phức tạp? Nếu vậy bạn có thể dùng lệnh SNAPANG quay góc tùy ý để vẽ.

2. Nếu theo bản vẽ của bạn thì xác định TEXT tương đối phức tạp:

- Xác định mặt phẳng đặt TEXT (mặt phẳng này quay quanh trục - Chính là đường LINE mà bạn muốn đặt).

- Sau khi có mặt phẳng đó rồi mới xác định góc quay của TEXT trong mặt phẳng đó...

SNAPANG Chỉ set được có một trục bạn quocmanh mà mình vẽ thì cần tới 3 trục lận.

Còn cái BẺ CONG LINE GIAO NHAU nhờ bạn xử lý dùm mình vớ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

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


×