Đến nội dung


Hình ảnh
- - - - -

xin giúp về đổi chỗ 2 text cho nhau


  • Please log in to reply
4 replies to this topic

#1 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 17 December 2014 - 12:37 PM

chao mọi người trên diễn đàn.Hiện e có 1 trục trặc nhỏ như sau, đó là việc sắp xếp lại thứ tự trên dưới của text . Ví dụ e có 2 text 1 text nằm trên 1 text nằm dưới cùng layer và h e cần đổi chỗ 2 text này cho nhau, text trên xuống dưới và text dưới lên trên :) mọi người giúp e với ạ, vì có rất nhiều text cần phải đổi chỗ cho nhau. Thanks all  

file vi du : http://www.cadviet.c...7_new_block.dwg


  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 17 December 2014 - 01:09 PM

chao mọi người trên diễn đàn.Hiện e có 1 trục trặc nhỏ như sau, đó là việc sắp xếp lại thứ tự trên dưới của text . Ví dụ e có 2 text 1 text nằm trên 1 text nằm dưới cùng layer và h e cần đổi chỗ 2 text này cho nhau, text trên xuống dưới và text dưới lên trên :) mọi người giúp e với ạ, vì có rất nhiều text cần phải đổi chỗ cho nhau. Thanks all  

file vi du : http://www.cadviet.c...7_new_block.dwg

Lisp hoán đổi giá trị của hai Text cùng layer :

(defun C:doiTxt(/ obj1 obj2 ss tmp)
  (princ "Chon 2 Text cung layer :")
  (if (and
	(setq ss (ssget (list (cons 0 "TEXT")) ))
	(= 2 (sslength ss))
	(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
	(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
	(eq (vla-get-Layer obj1) (vla-get-Layer obj2)	) )
    (progn      
      (setq tmp (vla-get-TextString obj1))
      (vla-put-TextString obj1 (vla-get-TextString obj2))
      (vla-put-TextString obj2 tmp)))
  (princ))

  • 2

#3 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 17 December 2014 - 05:15 PM

Lisp hoán đổi giá trị của hai Text cùng layer :

(defun C:doiTxt(/ obj1 obj2 ss tmp)
  (princ "Chon 2 Text cung layer :")
  (if (and
	(setq ss (ssget (list (cons 0 "TEXT")) ))
	(= 2 (sslength ss))
	(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
	(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
	(eq (vla-get-Layer obj1) (vla-get-Layer obj2)	) )
    (progn      
      (setq tmp (vla-get-TextString obj1))
      (vla-put-TextString obj1 (vla-get-TextString obj2))
      (vla-put-TextString obj2 tmp)))
  (princ))

Thank bác gia bạch , thế này vẫn phải pick từng cụm text nhỉ, có cách nào quét 1 phát tất cả các cụm text đó mà chúng đổi chỗ cho nhau dc k ạ


  • 0

#4 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 18 December 2014 - 08:40 AM

Bổ sung lsp của bác gia_bach 1 chút để có thể chọn nhiều text 1 lúc, với đk là 2 txt nằm trong 1 polyline kín.

(defun c:dtxt() 
(defun doiTxt(ss / obj1 obj2 tmp) 
 (if (and  (= 2 (sslength ss))
(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
(eq (vla-get-Layer obj1) (vla-get-Layer obj2)))
   (progn      
     (setq tmp (vla-get-TextString obj1))
     (vla-put-TextString obj1 (vla-get-TextString obj2))
     (vla-put-TextString obj2 tmp)))
)
(princ "Chon cac khung bao Text :")
(foreach pl (vl-remove-if-not '(lambda (x) (= :vlax-true (vla-get-Closed (vlax-ename->vla-object x))))
(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget (list (cons 0 "LWPOLYLINE")))))))
(doiTxt (ssget "CP" (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget pl)))
'((0 . "TEXT") )))
)
)

  • 1

#5 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 21 December 2014 - 09:26 AM

Bổ sung lsp của bác gia_bach 1 chút để có thể chọn nhiều text 1 lúc, với đk là 2 txt nằm trong 1 polyline kín.

 

(defun c:dtxt() 
(defun doiTxt(ss / obj1 obj2 tmp) 
 (if (and  (= 2 (sslength ss))
(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
(eq (vla-get-Layer obj1) (vla-get-Layer obj2)))
   (progn      
     (setq tmp (vla-get-TextString obj1))
     (vla-put-TextString obj1 (vla-get-TextString obj2))
     (vla-put-TextString obj2 tmp)))
)
(princ "Chon cac khung bao Text :")
(foreach pl (vl-remove-if-not '(lambda (x) (= :vlax-true (vla-get-Closed (vlax-ename->vla-object x))))
(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget (list (cons 0 "LWPOLYLINE")))))))
(doiTxt (ssget "CP" (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget pl)))
'((0 . "TEXT") )))
)
)

thank bac Tot77 nhé lisp dùng rất hiệu quả :D


  • 0