Đến nội dung


Hình ảnh

Giúp em tách text ra khỏi text hàng loạt với!


  • Please log in to reply
32 replies to this topic

#21 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 13 May 2011 - 03:56 PM

Ý bạn trùng khớp với ý mình :rolleyes: mình cũng vừa làm xong y chang như vậy luôn! Mà vẫn ko dc!

"Ý bạn trùng khớp với ý mình :rolleyes: mình cũng vừa làm xong y chang như vậy luôn!"

Kết quả : OK
  • 0

#22 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 13 May 2011 - 04:30 PM

"Ý bạn trùng khớp với ý mình :rolleyes: mình cũng vừa làm xong y chang như vậy luôn!"

Kết quả : OK

Anh gia bach đã OK rồi. Trước khi post lên Tue_NV đã thử chạy rồi.
Cũng có thể do lỗi Tiếng Việt.
Thế này nhé : Truongthanh hãy làm theo ý Ketxu xem. Nó không thể có lỗi Tiếng Việt được nữa vì Tiếng Việt có dấu chuyển thành Tiếng Việt không dấu
Truongthanh đổi cả chữ Þ luôn nhé
Chúc thành công
  • 0

#23 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 13 May 2011 - 09:50 PM

Em bổ sung thêm là đổi cả ở dòng (setq strtachD (vl-string-trim "CÔÛ VAN: ." strtachD)) nữa. Có lẽ lần trước bạn truongthanh mới đổi ở bên trên nên vẫn còn mis phần chạy ra kết quả.
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#24 trannam_hd_87

trannam_hd_87

    Chưa sử dụng CAD

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

Đã gửi 13 May 2011 - 10:02 PM

Làm theo cách của mình xem!!!!!!
B1 : Bôi đen dòng text
B2 : Nhấn x rồi enter
giờ bạn có thể lấy từng số trên dòng text.
được nhớ cảm ơn nha! :)
  • 0

#25 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 14 May 2011 - 12:18 AM

Có một cách hơi chuối nhưng bạn có thể áp dụng để test cái lisp của bác Tue_NV được ngay mà.
1/- Mở bản vẽ của bạn.
2/- Gõ vào dòng command như sau: (entget(car(entsel))) rồi enter.
3/- Chọn cái text mà bạn cần tách nội dung
4/- Nhấn f2 để hiện màn hình text của cad.
5/- Quét nội dung cái text của bạn trong nhóm mã DXF 1 rồi paste vào cái chỗ "*CÔÛ VAN:*Þ##*" trong lisp.
Sau đó load lisp rồi chạy thử coi có ngon không nào. Nếu ngon thì mở lisp ra và xóa bớt những ký tự không cần thiết trong cái text và điền vào các ký tự thay thế như cái lisp mẫu của bác tue_Nv để mà xài tiếp hỉ....

Dạ cách này anh Tuệ đã chỉ em làm rồi vẫn ko dc anh Bình ơi!

Em bổ sung thêm là đổi cả ở dòng (setq strtachD (vl-string-trim "CÔÛ VAN: ." strtachD)) nữa. Có lẽ lần trước bạn truongthanh mới đổi ở bên trên nên vẫn còn mis phần chạy ra kết quả.

Em đổi cả 2 chỗ lận mà vẫn vậy mà!
Em bỏ dấu rồi mà nó cứ ghi là "0 found"!hixx!ko lẽ lại ko dc hả mấy anh?
  • 0

#26 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 May 2011 - 05:50 AM

Dạ cách này anh Tuệ đã chỉ em làm rồi vẫn ko dc anh Bình ơi!

Em đổi cả 2 chỗ lận mà vẫn vậy mà!
Em bỏ dấu rồi mà nó cứ ghi là "0 found"!hixx!ko lẽ lại ko dc hả mấy anh?

Em send file Lisp của anh (em đã sửa) và bản vẽ của em đã sửa lên đây nhé. Anh sẽ góp ý cho :rolleyes:
  • 0

#27 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 14 May 2011 - 11:21 AM

Em send file Lisp của anh (em đã sửa) và bản vẽ của em đã sửa lên đây nhé. Anh sẽ góp ý cho :rolleyes:

Anh Tuệ xem giúp em nhé!
http://www.cadviet.c...iles/3/tthe.lsp
http://www.cadviet.c...es/3/tach_1.dwg
Cảm ơn anh nhiều lắm!
  • 0

#28 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 14 May 2011 - 11:35 AM

Bạn dùng mỗi như thế này xem sao :
(defun c:tthe(/ ss ent str strtachD)
(setq ss (ssget '((0 . "*TEXT") (1 . "*COVAN*"))) i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(command "copy" ent "" '(0 0 0) "@") (setq eL (entlast))
(command "justifytext" ent "" "c")
(setq str (cdr(assoc 1 (entget ent))) )
(setq strtachD (vl-string-trim "." str))
(setq strtachD (vl-string-trim "COVAN: ." strtachD))
(entmod (subst (cons 1 strtachD)
(assoc 1 (entget ent))
(entget ent))
)
(entmod (subst (cons 1 (vl-string-subst "" strtachD str))
(assoc 1 (entget el))
(entget el))
)
)
)
Làm xong thì lại Replace lại
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#29 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 14 May 2011 - 12:51 PM

Anh Tuệ xem giúp em nhé!
http://www.cadviet.c...iles/3/tthe.lsp
http://www.cadviet.c...es/3/tach_1.dwg
Cảm ơn anh nhiều lắm!

Hề hề hề,
Vụ này quả thật khó hiểu. Với cái bản vẽ tach_1 mà bạn post lên thì đúng là thua thiệt. Đề xử nó mình chơi kiểu củ chuối là loại bớt điều kiện lọc trong hàm ssget nghĩa là bỏ cái (1 . "*COVAN:*Þ##*") đi thì líp chạy và Ok liền. Vì sao thì chịu chết.
Cả cái lisp của bạn sửa và của bác Tue_NV, mình thấy rằng khi chạy xong mặc dù có tách được thành 2 text nhưng cái text strtachD lại nằm đè lên cái text str hay là cái thằng cu ent đè ngửa thằng cu el ra. Như vậy không được đẹp mắt lắm. Giá mà ?????
Việc để chúng nó không đè lên nhau thực ra cũng hơi khó vì phải xác định lại cái điểm đặt của các text này, song mình tin là sẽ có giải pháp Ok. Có thể dựa vào cái hàm textbox chẳng hạn.
Do mình hơi bận nên chưa thể thử được, rất mong các bác xem lại và bổ sung thêm tí nữa cho cái lisp nó văn minh hơn hỉ.....
Chúc các bác trên diễn đàn luôn vui vẻ và trẻ trung ......
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#30 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 May 2011 - 02:53 PM

Hề hề hề,
Vụ này quả thật khó hiểu. Với cái bản vẽ tach_1 mà bạn post lên thì đúng là thua thiệt. Đề xử nó mình chơi kiểu củ chuối là loại bớt điều kiện lọc trong hàm ssget nghĩa là bỏ cái (1 . "*COVAN:*Þ##*") đi thì líp chạy và Ok liền. Vì sao thì chịu chết.
Cả cái lisp của bạn sửa và của bác Tue_NV, mình thấy rằng khi chạy xong mặc dù có tách được thành 2 text nhưng cái text strtachD lại nằm đè lên cái text str hay là cái thằng cu ent đè ngửa thằng cu el ra. Như vậy không được đẹp mắt lắm. Giá mà ?????
Việc để chúng nó không đè lên nhau thực ra cũng hơi khó vì phải xác định lại cái điểm đặt của các text này, song mình tin là sẽ có giải pháp Ok. Có thể dựa vào cái hàm textbox chẳng hạn.
Do mình hơi bận nên chưa thể thử được, rất mong các bác xem lại và bổ sung thêm tí nữa cho cái lisp nó văn minh hơn hỉ.....
Chúc các bác trên diễn đàn luôn vui vẻ và trẻ trung ......

@Bác Bình : Ý của bác thì máy cái dấu .... không đè lên Þ200 đấy à? em thấy nó băng qua chứ không đè lên? Yêu cầu của truong thanh không có yêu cầu này, thực hiện với Textbox thì cũng không có vấn đề gì? Chỉ là có thời gian hay không thôi. :) Nhưng nếu là yêu cầu như vậy thì em không sử dụng textbox vì nó hơi rối.

@Truongthanh : Em thử bỏ chữ *Þ##* trong dòng
(setq ss (ssget '((0 . "*TEXT") (1 . "*COVAN:*Þ##*"))) i -1)
như ý của Ketxu thử xem
  • 2

#31 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 14 May 2011 - 04:31 PM

cảm ơn mọi người!em dùng lisp của ketxu thì dc rồi ah! Nhưng có cách nào sau khi tách thì mấy cái đường kính là TEXT và nó có textstyle giống thằng đầu tiên ko ạ?
vì hiện nay tách ra mấy cái đường kính là MTEXT style là "dia danh"!
  • 0

#32 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 May 2011 - 05:25 PM

cảm ơn mọi người!em dùng lisp của ketxu thì dc rồi ah! Nhưng có cách nào sau khi tách thì mấy cái đường kính là TEXT và nó có textstyle giống thằng đầu tiên ko ạ?
vì hiện nay tách ra mấy cái đường kính là MTEXT style là "dia danh"!

Em thay lại chữ COVAN và Þ cho đúng lại nhé.
Code đây :

(defun mod(code n ent)
(entmod (subst (cons code n)
(assoc code (entget ent))
(entget ent))
)
)
;
(defun c:tthe(/ ss ent str strtachD)
;;copy right by Tue_NV
(setq ss (ssget '((0 . "*TEXT") (1 . "*COVAN*"))) i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(command "copy" ent "" '(0 0 0) "@") (setq eL (entlast))
(command "justifytext" ent "" "c")
(setq str (cdr(assoc 1 (entget ent))) )
(setq strtachD (vl-string-trim "." str))
(setq strtachD (vl-string-trim "COVAN: ." strtachD))
(mod 1 strtachD ent)

(mod 7 "text" ent)
(mod 40 1.92 ent)
(mod 1 (vl-string-subst "" strtachD str) el)

)
)

  • 1

#33 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 - 08:42 AM

Nhờ các Anh em trên diễn đàn viết hộ em lisp tách các text sau dấu cộng thành 1, 2, 3, 4 hàng như trong ví dụ sau:http://www.cadviet.c...866_vi_du_2.rar


  • 0