Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Nhờ viết lsp thay đổi khoảng cách giữa các chữ trong text


  • Please log in to reply
4 replies to this topic

#1 hantinh

hantinh

    biết lệnh attdef

  • Members
  • PipPipPipPipPipPip
  • 413 Bài viết
Điểm đánh giá: 44 (tàm tạm)

Đã gửi 09 April 2014 - 04:06 AM

Nhờ các cao thủ về lsp viết giúp mình cái lsp thay đổi khoảng cách text(textfit). cái phiên bản cad  asd của mình nó hok cho thay đổi lệnh textfit thành lệnh TF. mà mình thì rất hay dùng đến nó.

- khi cho ngắn khoảng cách text lại mình có thể pick hoặc nhập giá trị

Vd: khoảng cách bạn đầu là 1 thì khi thay đổi mình có thể pick trên bản vẽ hoặc nhập vào từ bàn phím

54284_11_1.png

- khi mình muốn nó có khoảng cách giống ban đầu thì chi cần nhập vao giá trị 1 là nó co giá trin mặc định


  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 April 2014 - 05:00 AM

Phải chăng cái này thay đổi về độ rộng của Text? Vậy thì thay đổi trong Properties (thông số Width factor) là được mà 


  • 0

#3 hantinh

hantinh

    biết lệnh attdef

  • Members
  • PipPipPipPipPipPip
  • 413 Bài viết
Điểm đánh giá: 44 (tàm tạm)

Đã gửi 09 April 2014 - 09:19 AM

!Tue_vn: nếu dùng trong Properties thì lâu nên muốn dùng lsp cho nó nhanh ấy mà. vì mỗi lần lại phải vào đó 1 lần lâu lém. HIk. Nhiều hôm xếp toàn dí việc gấp chạy bở hơi tai luôn.


  • 0

#4 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 09 April 2014 - 10:35 AM

Bạn dùng lisp này, nhập độ rộng hiện tại , chọn text , nó sẽ bắt các text có độ rộng đó, sau đó bạn muốn làm gì thì vào properties.

 

(defun c:test(/ ro)
  (defun ssfrom (sl / ss0) (setq ss0 (ssadd)) (foreach v sl (ssadd v ss0)) ss0)
  (setq ro (getreal "\nChon Text co do rong:"))
  (sssetfirst nil (ssfrom (vl-remove nil (mapcar '(lambda(x) (if (= ro (acet-dxf 41 (entget x))) x nil))
(acet-ss-to-list (ssget '((0 . "TEXT"))))))))
)

(defun c:test(/ ro)
  (defun ssfrom (sl / ss0) (setq ss0 (ssadd)) (foreach v sl (ssadd v ss0)) ss0)
  (setq ro (getreal "\nChon Text co do rong:"))
  (sssetfirst nil (ssfrom (vl-remove nil (mapcar '(lambda(x) (if (= ro (acet-dxf 41 (entget x))) x nil))
(acet-ss-to-list (ssget '((0 . "TEXT"))))))))
)

  • 1

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 April 2014 - 10:42 AM

Còn Lisp này hỏi nhập độ rộng mới -> chọn Text  -> sẽ thay đổi độ rộng cho Text

(defun c:tf(/ ss tw)
(defun Tue-ent-mod (dxf ename newValue / entget-ename)
  ;;;;;Ex: (Tue-ent-mod 1 (ssname (TUE-ss-entsel '((0 . "TEXT")) "\npick chon doi tuong TEXT / An phim bat ki de thoat :")  0)"TUE")
  ;;;;;;;;-->> Thay Text thanh chuoi "TUE"
  ;;;;;;;;dxf = 62 ma mau object; dxf = 6 ma Linetype cuar object
  (setq entget-ename (entget ename))
  (if (and (or (= dxf 62) (= dxf 6)) (null (assoc dxf entget-ename)))
          (setq entget-ename (append entget-ename (list (cons dxf newValue))))
  )
  (setq entget-ename (subst (cons dxf newValue) (assoc dxf entget-ename) entget-ename))
  (entmod entget-ename)
  ename
)
(defun Tue-ss-list (L-ss-vlaobj / n L Lst ssg vlaobj)
 
  (mapcar 'set '(ssg vlaobj) L-ss-vlaobj)
  (setq L (sslength ssg))
  (Repeat L
        (setq ename (ssname ssg (setq L (1- L))))
          (setq Lst (cons (if vlaobj (vlax-ename->vla-object ename) ename) Lst))
  )
)
(if (setq ss (ssget '((0 . "TEXT"))))
  (progn
    (setq tw (getreal "\n Nhap do rong chu :"))
    (foreach x (Tue-ss-list (list ss))
      (Tue-ent-mod 41 x tw)
    )
  )
)
)

  • 3