Đến nội dung


Hình ảnh

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


  • Please log in to reply
76 replies to this topic

#41 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 01 September 2016 - 10:17 AM

Hề hề hề,

Không rõ bạn đã download ra sao nhưng mình thử dowload từ diễn đàn vẫn thấy ngon lành và lisp vẫn chạy phe phé mà. Bạn hãy thử lại xem sao. Nếu không được thì cho địa chỉ mail mình sẽ gửi cho.

Bác Bình ơi sau khi xoay các text của mình bị lộn ngược thế này, bác có thể sửa lại dùm được ko, Lisp này có thêm tính năng như chọn được nhiều Text sau đó chọn được nhiều line và xoay song song theo Line đó nữa thì hay, cảm ơn bác

http://www.cadviet.c...1_xoay_text.dwg


  • 0

#42 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 03 September 2016 - 02:14 PM

Bác Bình ơi sau khi xoay các text của mình bị lộn ngược thế này, bác có thể sửa lại dùm được ko, Lisp này có thêm tính năng như chọn được nhiều Text sau đó chọn được nhiều line và xoay song song theo Line đó nữa thì hay, cảm ơn bác

http://www.cadviet.c...1_xoay_text.dwg

Hề hề hề,

Đơn giản nhất là bạn tạo lại polyline theo hướng ngược lại với hướng của polyline ban đầu là OK. Vì hướng xoay của text phụ thuộc vào hướng của polyline và không rõ các polyline  và các text của bạn ra sao nên khó có thể sửa theo ý bạn đượ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.

#43 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 08 September 2016 - 04:47 PM

Hề hề hề,

Đơn giản nhất là bạn tạo lại polyline theo hướng ngược lại với hướng của polyline ban đầu là OK. Vì hướng xoay của text phụ thuộc vào hướng của polyline và không rõ các polyline  và các text của bạn ra sao nên khó có thể sửa theo ý bạn được.

Hi bạn BÌnh (mode lisp),

Bạn có thể thêm vào Lisp lựa chọn là quay Text theo chiều kim đồng hồ hay ngược chiều kim đồng hồ là giải quyết được bài toán này thôi mà, giúp ae bài toán này với nhé


  • 0

#44 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 08 September 2016 - 04:58 PM

Bạn thử cái này nhé:

1. Chép hàm sau vào trong lisp

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

2. Ở gần cuối lisp thay (cons 50 goc) thành (cons 50 (FixTextAngle goc))

​3. Có gì chưa ổn phản hồi tiếp nhé!


  • 1

#45 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 09 September 2016 - 03:20 PM

Cảm ơn quocmanh,

Mình tìm được lisp đáp ứng đáp ứng được yêu cầu, nhờ các bạn bổ sung thêm tính năng là text sau khi xoay Text sẽ cách Line một khoảng cách nhất định, cảm ơn các bạn

 

http://www.cadviet.c...154521_copy.lsp


  • 0

#46 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 09 September 2016 - 03:25 PM

Bạn thử cái này nhé:

1. Chép hàm sau vào trong lisp

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

2. Ở gần cuối lisp thay (cons 50 goc) thành (cons 50 (FixTextAngle goc))

​3. Có gì chưa ổn phản hồi tiếp nhé!

cảm ơn bạn, giúp mình thêm tính năng này với nhé quocmanh


  • 0

#47 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 09 September 2016 - 04:22 PM

Khoảng nhất định phải nhập vào à?

(Nếu cho text canh lề "Bottom Center" và điểm này nằm giữa đoạn thẳng thì sao?)

P/s: Mà nếu cách Line 1 khoảng nhất định thì khi quét chọn 1 lúc nhiều Text thì các text sẽ bị chồng lên nhau.


  • 1

#48 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 09 September 2016 - 05:28 PM

Khoảng nhất định phải nhập vào à?

(Nếu cho text canh lề "Bottom Center" và điểm này nằm giữa đoạn thẳng thì sao?)

P/s: Mà nếu cách Line 1 khoảng nhất định thì khi quét chọn 1 lúc nhiều Text thì các text sẽ bị chồng lên nhau.

cảm ơn bạn đã quan tâm nhé

- Khoảng cách này mặc định trong lisp luôn bạn, khỏi mất công phải nhập khoảng cách này, nhìn sao thấy đẹp là ok rồi

- Mình ko cần căn lề text bạn, chỉ cần các Text cách đường Line với khoảng cách đều mặc định là được 

Lisp này có thêm tính năng chọn liên tục (multi) nữa là quá hay, chọn Line 1 sau đó chọn Text 1; chọn Line 2 sau đó chọn Text 2.......(ko biết yêu cầu của mình quá cao ko, nhưng mong muốn của con người là vô hạn, hay đòi hỏi, hihi)

http://www.cadviet.c..._deu_text_3.dwg


  • 0

#49 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 09 September 2016 - 08:00 PM

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:
  • 1

#50 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 09 September 2016 - 10:14 PM

Cảm ơn bạn, Lisp quá tốt nhưng ko biết sao đôi khi Lisp bị lỗi như file mình đính kèm, bạn kiểm tra dùm mình với nhé

 

http://www.cadviet.c...ch_deu_text.dwg


  • 0

#51 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 09 September 2016 - 11:16 PM

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)


  • 1

#52 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 10 September 2016 - 12:27 AM

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


  • 0

#53 Huynh Nghia

Huynh Nghia

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: -22 (kém)

Đã gửi 10 September 2016 - 06:15 AM

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 ?


  • 0

#54 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 12 September 2016 - 09:17 AM

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


  • 0

#55 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 12 September 2016 - 09:37 AM

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

  • 1

#56 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 12 September 2016 - 01:30 PM

- 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.c...154521_copy.dwg


  • 0

#57 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 12 September 2016 - 01:53 PM

Bạn thay (ở cuối lisp) ang thành (FixTextAngle ang)

 

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


  • 1

#58 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 12 September 2016 - 02:54 PM

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.c...4521_copy_1.dwg


  • 0

#59 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 673 Bài viết
Điểm đánh giá: 314 (khá)

Đã gửi 12 September 2016 - 03:10 PM

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.


  • 0

#60 lanvientkh

lanvientkh

    biết vẽ ellipse

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

Đã gửi 12 September 2016 - 05:38 PM

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.c...6/154521_tt.lsp


  • 0