Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
google123

Lisp Lọc Text Dạng Số Ra Khỏi Chuỗi Text

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

Em có một vấn đề nhờ mọi người giúp ạ, Ví dụ em có chuỗi text "tờ      thứ     1" em muốn tách phần số 1 ra khỏi chuỗi text. Kính nhờ mọi người trợ giúp ạ.

em xin cảm ơn 

em gửi file cad 

lay so tu chuoi text.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

Nếu là như file bạn gửi thì có 2 cách.

1.Bỏ hết cái nội dung "Tờ" và  "thứ" đi là xong.

2.Đọc từ sau đọc tới cứ tới ký tự trống thì nghét dụt.

Bây giờ lại hỏi tách ra rồi làm gì nửa? Nghĩa là viết nó ra thành cái text mới, hay xóa cái text cũ đi còn để lại nội dung là số này thôi hay là làm cái giống gì. thì người ta (có khả năng bao gồm hoặc không bao gồm tui) mới biết đường mà viết cho.

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

Dạ em muốn từ chuỗi text "tờ      thứ     1" thì bỏ hết chữ tờ và thứ và khoảng trắng chỉ lấy số 1 thôi, có thể giữ lại text cũ, hoặc tạo text mới sao cho anh dễ viết là được...

mong muốn của em là từ chuỗi "tờ      thứ     1" sau khi sài lisp ra số 1, vị trí text không thay đổi.... trình diễn tả em còn kém có gì k hiểu mong a chỉ giáo 

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ái này các bạn khác viết thì đâu chừng 5 dòng là xong. Tui thì phải ngàn rưỡi dòng vì viết cả mớ hàm con nên còn ngai chờ xem có bạn nào viết ngắn cho nó gọn. Không có thì thứ 2 tui viế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

Khoảng trắng giữa các chữ lung tung lắm. lúc nhiều, lúc ít.

replace thì phải 3 lần: 

Lần 1 thay "Tờ" thành ""

Lần 2 Thay "thứ" thành ""

Lần 3 thay " " thành ""

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
8 phút trước, Doan Van Ha đã nói:

Xử!

 


(defun C:HA(/ ss x so ed)
 (princ "\nChon cac Text...")
 (setq ss (ssget '((0 . "text"))) x 0)
 (repeat (sslength ss)
  (setq so (itoa (last (read (strcat "(" (cdr (assoc 1 (setq ed (entget (ssname ss x))))) ")")))))
  (entmod (subst (cons 1 so) (assoc 1 ed) ed))
  (setq x (1+ x)))
 (princ))

 

@ bác Ha:

Vì chủ thớt có y/cầu vị trí text không đổi nên chắc là cần thêm căn lề phả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
2 giờ trước, Doan Van Ha đã nói:

Khái niệm "vị trí text" rất mơ hồ (là vị trí của số hay của text ban đầu, hay middle...) nên chỉ viết thế.

Tui e rằng ngoài y/c vị trí text sẽ còn các y/c khác cho mà xem. Hỏi không rõ ràng thì thế thôi.

vị trí là vị trí của text ban đầu ạ, em cảm ơn a đã viết lisp

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
30 phút trước, Doan Van Ha đã nói:

Rứa mới vui!

có nhiều text có dấu bị lỗi thật, với lại khi chọn một vùng lớn thì lisp không chạy... anh giúp em sửa lại nha

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
8 phút trước, Doan Van Ha đã nói:

"vị trí là vị trí của text ban đầu ạ"

"lisp mấy cái có dấu bị lỗi thật"

Nếu không giải thích cặn kẻ 2 câu trên thì tôi không hiểu.

image.png.2d5b5c7af8f38e2484cb01d187fc5625.png

1.điểm này anh 

2. khi em quét một vùng thì nó báo lỗi như thế này

image.thumb.png.755aede40c3d7e2cef56b2b4cd1199b5.png

image.png.d51fb97ef2cafeb96c22d56a643c3efb.png

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 phút trước, Doan Van Ha đã nói:

1. Tôi đã làm đúng rồi mà

2. Tôi dòm mỏi mắt mà không đọc được bản vẽ.

Chấm hết

bản vẽ đây anh, quét chọn vùng lớn không chạy lisp được ạ

file cad.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
12 phút trước, google123 đã nói:

bản vẽ đây anh, quét chọn vùng lớn không chạy lisp được ạ

file cad.dwg

Có mấy dòng, thấy bạn cũng cầu thị nên giúp bạn, bạn thử xem có được ko nhé

(defun C:BVC(/ e ss str)
 (vl-load-com)
 (foreach e (acet-ss-to-list (ssget '((0 . "text"))))
   (setq str (cdr (assoc 1 (entget e))))
   (if(vl-string-search "T\\" str)
     (vla-put-textstring (vlax-ename->vla-object e) (substr str (+ (vl-string-position 32 str nil t) 1)))
     )
   )
  )

 

  • Like 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
3 phút trước, Biet ve CAD đã nói:

Có mấy dòng, thấy bạn cũng cầu thị nên giúp bạn, bạn thử xem có được ko nhé


(defun C:BVC(/ e ss str)
 (foreach e (acet-ss-to-list (ssget '((0 . "text"))))
   (setq str (cdr (assoc 1 (entget e))))
   (if(vl-string-search "T\\" str)
     (vla-put-textstring (vlax-ename->vla-object e) (substr str (+ (vl-string-position 32 str nil t) 1)))
     )
   )
  )

 

em chạy không được anh

image.png.5bfcf48e7d045fd79cbd6ccf3cd22703.png

em có gửi file cad trên a test giúp em

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
2 phút trước, google123 đã nói:

em chạy không được anh

image.png.5bfcf48e7d045fd79cbd6ccf3cd22703.png

em có gửi file cad trên a test giúp em

Lisp vẫn chạy ngon mà, cad phải cài Express ( bạn copy lại dòng lisp trên vào file lisp bạn vừa tải về nhé, thử lại xem )

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
3 phút trước, Biet ve CAD đã nói:

Lisp vẫn chạy ngon mà, cad phải cài Express ( bạn copy lại dòng lisp trên vào file lisp bạn vừa tải về nhé, thử lại xem )

đối với cái file em gửi ban đầu thì được anh, nhưng với cái file em mới gửi thì không được, anh chạy thử với file file cad. dwg xem thử anh...

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
6 phút trước, Biet ve CAD đã nói:

Lisp vẫn chạy ngon mà, cad phải cài Express ( bạn copy lại dòng lisp trên vào file lisp bạn vừa tải về nhé, thử lại xem )

em cảm ơn anh nhiều

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 phút trước, google123 đã nói:

đối với cái file em gửi ban đầu thì được anh, nhưng với cái file em mới gửi thì không được, anh chạy thử với file file cad. dwg xem thử anh...

Vừa thử lại , vẫn được, bạn nhớ copy lại lisp nhé, vừa thêm dòng vl-load-com vào

  • Like 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
Vào lúc 10/7/2019 tại 17:34, Biet ve CAD đã nói:

Vừa thử lại , vẫn được, bạn nhớ copy lại lisp nhé, vừa thêm dòng vl-load-com vào

Anh ơi dữ liệu của em giờ thêm đối tượng này nữa anh có thể sửa thêm vào lisp được không anh..

image.png.9f4440d8a3a715d4c168e904582d241d.png

-tờ    số   x  (tỷ lệ 1:200)

-tờ    số   x  (tỷ lệ 1:500)

-tờ    số    x  (tỷ lệ 1:1000)

- tờ   thứ      x

em gửi lại dữ liệu ạ:

 

19-07-2019_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

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  

×