Đến nội dung


Hình ảnh
- - - - -

[Yêu Cầu] Viết lisp tách text sau dấu cộng "+"


  • Please log in to reply
6 replies to this topic

#1 anpha3

anpha3

    biết vẽ arc

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

Đã gửi 25 August 2013 - 09:07 AM

Nhờ các bác và anh em trên diễn đàn viết hộ em 1 lisp với nội dung sau:

Em có các text nối với nhau bằng dấu "+" bây giờ em muốn tách các text đó ra theo hàng dọc bằng 1 lệnh .

Lisp thực hiện tất cả các chuỗi text sau khi quét hàng loạt như ví dụ sau:http://www.cadviet.c...866_vi_du_3.rar

Cám ơn các Bác nhiều...


  • 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 25 August 2013 - 09:44 AM

Nhờ các bác và anh em trên diễn đàn viết hộ em 1 lisp với nội dung sau:

Em có các text nối với nhau bằng dấu "+" bây giờ em muốn tách các text đó ra theo hàng dọc bằng 1 lệnh .

Lisp thực hiện tất cả các chuỗi text sau khi quét hàng loạt như ví dụ sau:http://www.cadviet.c...866_vi_du_3.rar

Cám ơn các Bác nhiều...

 

Quick code cho bạn:

 

(defun c:tmt (/ ss i ename elast egename)
  (setq i -1)
  (if (setq ss (ssget '((0 . "TEXT"))))
    (while (setq ename (ssname ss (setq i (1+ i))))
      (setq str (cdr(assoc 1 (entget ename))))
      (while (vl-string-search "+" str)
            (setq str (vl-string-subst "\\P" "+" str))
      )
      (command "txt2mtxt" ename "")
      (setq elast (entget (entlast)))
      (setq egename (subst (cons 1 str) (assoc 1 elast) elast))
      (entmod egename)
   )
 )
 )

  • 1

#3 bchung

bchung

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 16 May 2014 - 11:17 AM

Cũng như bạn ở trên, nhưng mình muốn các text đằng sau dấu " " (khoảng cách) đổi sang 1 layer khác có được không?Mong bạn giúp đỡ mình


  • 0

#4 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 16 May 2014 - 02:10 PM

Cũng như bạn ở trên, nhưng mình muốn các text đằng sau dấu " " (khoảng cách) đổi sang 1 layer khác có được không?Mong bạn giúp đỡ mình

Hề hề hề,

Muốn cái gì thì phải có bản vẽ thể hiện cái mình muốn, không thể chỉ nói xuông mà có thể làm đưiợc. Hãy đọc kỹ nội quy về việc post các yêu cầu về lisp.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 bchung

bchung

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 16 May 2014 - 03:38 PM

Sáng nay do vội wá wên mất up file mẫu lên,

Như file mẫu, mình có rất nhiều text màu vàng, và mình muốn text đó tách ra 2 phầm gồm 2 layer như trong hình tròn, mong bạn giúp đỡ          https://www.dropbox....p6dsfk/text.dwg


  • 0

#6 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 25 May 2014 - 11:12 PM

Sáng nay do vội wá wên mất up file mẫu lên,

Như file mẫu, mình có rất nhiều text màu vàng, và mình muốn text đó tách ra 2 phầm gồm 2 layer như trong hình tròn, mong bạn giúp đỡ          https://www.dropbox....p6dsfk/text.dwg

 

Hề hề hề,

Căn cứ vào bản vẽ mẫu của bạn gửi lên, mình thấy có một vài điều cần hỏi lại như sau:

1/- Với yêu cầu của bạn, lisp của bác TueNV chưa thể dùng không phải chỉ bởi ký tự ngăn tách mà còn bởi yêu cầu sắp xếp nữa. Lisp của bác TueNV sau khi tách text còn chuyển nó thành Mtext và sắp xếp lại nó theo trật tự xuống dòng. Còn yêu cầu của bạn chỉ là tách thành hai text và giữ nguyên vị trí cùng dòng.

Vì vậy việc sửa lisp của bác TueNV so với việc viết lisp theo yêu cầu mới bạn muốn cách nào???

2/- Trên bản vẽ không chỉ có các text có khoảng trắng mà còn có cả các text không chứa khoảng trắng, Các text không chứa khoảng trắng đều được chuyển về layer trùng với layer của text được tách ra phía sau của text chứa khoảng trắng. Vậy điều này bạn  cần lisp phải thực hiện hay bạn sẽ tự chuyển theo ý bạn???

3/- Các layer của bạn có cái tên khá khó nhớ, vậy bạn muốn tự nhập tên layer hay bạn muốn lisp tự động chuyển các text vào các layer có sẵn trên bản vẽ???

4/-  Các text của bạn trước và sau khi chuyển có các style khác nhau, vậy bạn muốn chỉ chuyển text sang layer khác hay muốn thay đổi cả các style của text theo ý muốn của bạn ????

 

Nếu bạn vẫn còn nhu cầu về lisp này thì hãy cung cấp thông tin đầy đủ và chi tiết hơn về các yêu cầu của bạn.

Chúc bạn vui.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 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 26 May 2014 - 10:19 PM

Sáng nay do vội wá wên mất up file mẫu lên,

Như file mẫu, mình có rất nhiều text màu vàng, và mình muốn text đó tách ra 2 phầm gồm 2 layer như trong hình tròn, mong bạn giúp đỡ          https://www.dropbox....p6dsfk/text.dwg

Hề hề hề,

Chả biết bạn còn cần nữa hay không, song đây là cái mình đoán mò dựa trên bản vẽ mẫu bạn gửi. Trúng thì tốt mà chưa trúng lại càng tốt hơn.

Lisp này cho phép tách các chuỗi có chứa khoảng trắng thành hai text khác nhau ,  text phía trước khoảng trắng gửi vào một lớp và text phía sau khoảng trắng gửi vào một lớp khác. Việc chọn lớp để gửi có thể bằng cách nhập tên lớp khi lisp hỏi và nếu như không nhớ chính xác tên lớp có thể chọn bằng cách click vào một đối tượng thuộc lớp muốn gửi. 

Sau khi đã xác định được các lớp muốn gửi và lisp sẽ nhắc bạn chọn các đối tượng text cần tách và chuyển layer. Nếu các text được chọn có chứ khoảng trắng thì lisp sẽ thực hiện như đă nói ở trên, còn nếu các text được chọn không chứa khoảng trắng thì lisp sẽ chuyển chúng về layer được xác định sau ở bước chọn layer nói trên.

Lisp chưa xét tới việc thay đổi style của text mà giữ nguyên style vốn có của nó hoặc style đang hiện hành của bản vẽ.

https://www.mediafir...j618o543d3e5kgz


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.