Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
victor85

[Yêu cầu] Xin lisp cắt ký tự trong text cad

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

victor85    10

Trong quá trình vẽ mình có hay gặp trường hợp xử lý chuỗi ký tự trong text nhưng vượt quá tầm kiểm soát của lệnh FIND trong cad. Mình hy vọng autolisp có thể giải quyết đc trường hợp của mình, mình cũng xin kính nhờ các lisper xuống tay giúp đỡ.

Cụ thể lisp như sau:

 

Mình có 1 bộ các text cad có định dạng các ký tự như sau: Text thứ nhất = "123 xyz abcd" ; Text thứ hai = "346 xyz ab" ; Text thứ ba = "123 xxx bac" ; (Với dấu cách "space" trong text cũng coi là 1 ký tự của text)

Lisp trim_text.lsp

Lệnh đầu vào: trt -> Enter

Chọn các đối tượng text đầu vào: Chọn đối tượng -> Enter

Chọn phương pháp cắt text:   Cắt phần bên trái (T) / Cắt phần bên phải (P) -> nhập T hoặc P -> Enter

Nhập số ký tự text mong muốn cắt đi: Ví dụ nhập số 04 -> Enter

Kết quả: ra các text mong muốn đã cắt đi phần ký tự thừa. Ở VD trên sau khi nhập cắt đi 04 ký tự phần bên trái thì các text kết quả mong muốn nhận đc là: "xyz abcd" ; "xyz ab" ; "xxx bac".

Tương tự cho trường hợp lựa chọn cắt phần bên phải của text ạ.

 

Kính mong các bro giúp mình với. Mình xin cảm ơn các bro trướ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
victor85    10

À bổ xung thêm là nếu 1 kí tự có dấu tiếng Việt thì các bác coi như là 1 ký tự nhé. Nếu lisp không giải quyết được với trường hợp có dấu tiếng việt thì các bác cứ viết lisp xử lý trường hợp bình thường cũ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
TaiNguyen79    24

Dung thử code này xem :

(defun c:trt (/ key pos k ss te text len kq)
(initget 1 "Left Right") (setq key (getkword "\n<L:Left> <R:Right> "))
(initget 7) (setq pos (getint "\nNhap 1 so nguyen : "))
(prompt "\n Chon cac chu de trim : ")(while (null (setq SS (ssget (list (cons 0 "Text"))))) (princ "\nChua chon duoc !"))
(setq k 0)
(repeat (sslength SS)
(setq te (entget (ssname SS k))) (setq text (cdr (assoc 1 te))) (setq len (strlen text))
(if (< pos len)
(progn
(if (eq key "Right") (setq kq (substr text 1 (- (strlen text) pos))) (setq kq (substr text (+ pos 1))))
(entmod (setq te (subst (cons 1 kq) (assoc 1 te) te)))))
(setq k (1+ k)))
(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
victor85    10

Lisp chạy được rồi nhưng không đúng cho số lượng nhiều đối tượng text tiếng Việt ạ. Dù sao cũng cảm ơn bác lắm lắm ạ. Chúc bác vui khỏe, công tác tốt ạ :)

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

Đăng nhập để thực hiện theo  

×