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

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

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

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:

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

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.com/upfiles/3/tthe.lsp

http://www.cadviet.com/upfiles/3/tach_1.dwg

Cảm ơn anh nhiều lắm!

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

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

  • 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

Anh Tuệ xem giúp em nhé!

http://www.cadviet.com/upfiles/3/tthe.lsp

http://www.cadviet.com/upfiles/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 ......

  • 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

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

  • Vote tăng 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

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"!

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ả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)

 )
)

  • 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

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  

×