Chuyển đến nội dung
Diễn đàn CADViet
Nguyên Khải

Tạo lisp thay thế và đánh số thứ tự tăng/giảm của mtext trong multi leader

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

Các bác có thể giúp em tạo cái lisp có chức năng giống như "tcount" - thay thế và đánh số thứ tự cho mtext trong multi leader không. Vì bản vẽ có 500-1000 mtext, mà đánh thủ công thì vừa lâu vừa dễ bị nhầm lẫn và trùng lặp.

example.dwg

Chỉnh sửa theo Nguyên Khải
Bổ sung file minh họa

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
16 giờ trước, Nguyên Khải đã nói:

Các bác có thể giúp em tạo cái lisp có chức năng giống như "tcount" - thay thế và đánh số thứ tự cho mtext trong multi leader không. Vì bản vẽ có 500-1000 mtext, mà đánh thủ công thì vừa lâu vừa dễ bị nhầm lẫn và trùng lặp.

Bạn gửi bản vẽ vài ví dụ xem có giúp được không? 

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
4 giờ trước, Nguyên Khải đã nói:

Bạn xem file minh họa mình vừa đính kèm ở trên nhé.

Cái này viết được thôi nhưng mình không rõ chữ "k" ở bản vẽ này có thay bằng chữ khác ở bản vẽ khác không 

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
14 giờ trước, Doan Nguyen Van đã nói:

Cái này viết được thôi nhưng mình không rõ chữ "k" ở bản vẽ này có thay bằng chữ khác ở bản vẽ khác không

 

"k" là trường hợp cụ thể ở bản vẽ của mình, để hay hơn bạn viết code cho trường hợp tổng quát cho kí tự bất kì nhập từ bàn phím mà người dùng muốn thay thế (không phân biệt chữ hoa hay thường)

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
Vào lúc 1/1/2020 tại 07:22, Nguyên Khải đã nói:

 

"k" là trường hợp cụ thể ở bản vẽ của mình, để hay hơn bạn viết code cho trường hợp tổng quát cho kí tự bất kì nhập từ bàn phím mà người dùng muốn thay thế (không phân biệt chữ hoa hay thường)

(Defun c:te (/ x xt xh ss key ent num k n)
(while (or (not x) (= x ""))	(setq x (getstring (strcat "\nNhap ky tu the hien so:"))))
  (setq xt (strcase x T) xh (strcase x nil)) 
  (setq ss (acet-ss-to-list (ssget (list (cons 0 "MULTILEADER") (cons 304 (strcat "*" xt "*,*" xh "*")) ))))
(setq key (keyword (list "Select-Order" "Left-right" "Top-bottom") "Select-Order" "Kieu sap xep?"))
  (if (= key "Left-right")(setq ss (vl-sort ss '(lambda (x y) (< (cadr (assoc 10 (entget x))) (cadr (assoc 10 (entget y))))))))
  (if (= key "Top-bottom")(setq ss (vl-sort ss '(lambda (x y) (> (caddr (assoc 10 (entget x))) (caddr (assoc 10 (entget y))))))))
  
(setq n (getint "\nNhap so bat dau:"))
  (setq k (getint "\nNhap so ky tu muon hien thi:"))
  (if (and ss n k) (progn
(foreach ent ss
  (setq num (itoa n))
  (if (< (strlen num) k) (setq num (repeat (- k (strlen num)) (setq num (strcat "0" num)))) )
(if (vl-string-search xt (dxf 304 ent))
  (vla-put-textstring (vlax-ename->vla-object ent) (vl-string-subst num xt (dxf 304 ent)))
  (vla-put-textstring (vlax-ename->vla-object ent) (vl-string-subst num xh (dxf 304 ent))))
  (setq n (1+ n))
  )
) (alert "Khong du du lieu, ket thuc!")) 
  )
(defun keyword (key default promp / str1 str2 str3 str4)
  (setq str1 (apply 'strcat (mapcar (function (lambda (x) (strcat x " "))) key)))
  (setq str2 (apply 'strcat (mapcar (function (lambda (x) (strcat x "/"))) key)))
  (setq str1 (substr str1 1 (1- (strlen str1))))
  (setq str2 (substr str2 1 (1- (strlen str2))))
  (initget str1)
  (setq str3 (strcat "\n" promp " [" str2 "] <" default "> "))
  (if (not (setq str4 (getkword str3)))
    default
    str4
    )
  )
(defun Dxf (Id Obj)
    (cdr (assoc Id (entget Obj)))
  )

Trường hợp này đánh số theo mình thấy khó khả thi, bởi sau khi đánh 1 lần, nhỡ đâu đánh sai thì lisp không chọn lại được nữa, có lẽ bạn nên thay ký tự số vào đầu hoặc cuối để dễ sửa chữa sau này. 

  • Like 2

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

×