Đến nội dung


Hình ảnh
- - - - -

[Xin trợ giúp lisp] Gán nội dung từ text này sang text


  • Please log in to reply
8 replies to this topic

#1 luongtienlanh

luongtienlanh

    biết zoom

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

Đã gửi 03 February 2015 - 09:47 PM

Các bác viết giúp em lisp gán nội dung của text này sang text kia mà không làm thay đổi các định dạng của text gốc được không ạ. giả sử text gốc là A, text kia là B, giờ muốn nội dung của A giống của B. Sau khi gán thì tự động xóa B đi. Xin cám ơn!

http://www.cadviet.c...dung_text_1.dwg


  • -1

#2 trinhhoanghieu090

trinhhoanghieu090

    Edu level: li8

  • Members
  • PipPipPipPipPip
  • 309 Bài viết
Điểm đánh giá: 29 (tàm tạm)

Đã gửi 03 February 2015 - 10:07 PM

Tặng bạn, mình mới viết hôm trước, lệnh CPT nhé:

(defun c:cpt ( / doithuoctinh cptext1 a b)

(defun doithuoctinh( ename dxfcode listvalue )
(entmod (subst (cons dxfcode listvalue) (assoc dxfcode (entget ename)) (entget ename)))
)
(defun cptext1 ( e_nguon e_dich / text_nguon)
    (setq    text_nguon (cdr(assoc 1 (entget e_nguon)))
    )
    (doithuoctinh e_dich 1 text_nguon)
)
    (prompt "Chon Text Nguon:")
    (while    (not
                (setq    a (ssget "_+.:E:S" '((0 . "TEXT,MTEXT"))) )
                )
        )
    (while
        (progn
            (setvar    'errno 0)
            (setq    b  (entsel "\nChon Text Dich:") )
        
            (cond
                ( (= (getvar 'errno) 7) (princ "\nBan Pick Truot, Hay Pick Lai ") )
                ( (and     b
                         (/= (cdr(assoc 0 (entget (car b)))) "TEXT")
                         (/= (cdr(assoc 0 (entget (car b)))) "MTEXT")
                        
                    )
                         (princ "\nBan Pick Nham, Hay Pick Lai ")
                )
                ( (and b
                       (OR
                        (= (cdr(assoc 0 (entget (car b)))) "TEXT")
                        (= (cdr(assoc 0 (entget (car b)))) "MTEXT")
                        )
                        (cptext1 (SSNAME a 0) (car b))
                    )
                )
                ( (not b) nil)
            )
        )
    )
)

  • 1

#3 luongtienlanh

luongtienlanh

    biết zoom

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

Đã gửi 03 February 2015 - 10:19 PM

Cám ơn anh trinhhoanghieu090 1 lần nữa !


  • 0

#4 luongtienlanh

luongtienlanh

    biết zoom

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

Đã gửi 03 February 2015 - 10:22 PM

nhưng bác ơi bác có thể chỉnh sửa 1 chút là thêm cái lệnh xóa text nguồn sau khi copy nội dung xong không?


  • 0

#5 trinhhoanghieu090

trinhhoanghieu090

    Edu level: li8

  • Members
  • PipPipPipPipPip
  • 309 Bài viết
Điểm đánh giá: 29 (tàm tạm)

Đã gửi 03 February 2015 - 10:26 PM

Đã thêm phần xoá text nguồn cho bạn, cái này dùng được cả với text và Mtext nhé

(defun c:cpt ( / doithuoctinh cptext1 a b)

(defun doithuoctinh( ename dxfcode listvalue )
(entmod (subst (cons dxfcode listvalue) (assoc dxfcode (entget ename)) (entget ename)))
)
(defun cptext1 ( e_nguon e_dich / text_nguon)
	(setq	text_nguon (cdr(assoc 1 (entget e_nguon)))
	)
	(doithuoctinh e_dich 1 text_nguon)
)
	(prompt "Chon Text Nguon:")
	(while	(not 
				(setq	a (ssget "_+.:E:S" '((0 . "TEXT,MTEXT"))) )
				)
		)
	(while
		(progn
			(setvar	'errno 0)
			(setq	b  (entsel "\nChon Text Dich:") )
		
			(cond
				( (= (getvar 'errno) 7) (princ "\nBan Pick Truot, Hay Pick Lai ") )
				( (and	 b 
						 (/= (cdr(assoc 0 (entget (car b)))) "TEXT")
						 (/= (cdr(assoc 0 (entget (car b)))) "MTEXT")
						
					)
						 (princ "\nBan Pick Nham, Hay Pick Lai ")
				)
				( (and b 
					   (OR 
						(= (cdr(assoc 0 (entget (car b)))) "TEXT")
						(= (cdr(assoc 0 (entget (car b)))) "MTEXT")
						)
						(cptext1 (SSNAME a 0) (car b)) 
					)
				)
				( (not b) nil)
			)
		)
	)
	(command ".erase" a "")
)

  • 0

#6 luongtienlanh

luongtienlanh

    biết zoom

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

Đã gửi 03 February 2015 - 10:57 PM

vâng, em cám ơn bác :)


  • 0

#7 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 04 February 2015 - 07:24 AM

- có 1 trường hợp cắt cớ nếu người dùng ko để ý copy nội dung của mtext mà có dạng multiline gán cho dtext thì kết quả trả về ko đẹp lắm ^^,Hieu thử xử nó xem ^^
  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#8 trinhhoanghieu090

trinhhoanghieu090

    Edu level: li8

  • Members
  • PipPipPipPipPip
  • 309 Bài viết
Điểm đánh giá: 29 (tàm tạm)

Đã gửi 04 February 2015 - 08:28 AM

Thanks nhóc nha, cái này tớ xử lý được, nhưng hơi tốn thời gian xíu. :D.


  • 0

#9 pawuta

pawuta

    biết lệnh move

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

Đã gửi 21 April 2015 - 11:29 PM

 

Tặng bạn, mình mới viết hôm trước, lệnh CPT nhé:

(defun c:cpt ( / doithuoctinh cptext1 a b)

(defun doithuoctinh( ename dxfcode listvalue )
(entmod (subst (cons dxfcode listvalue) (assoc dxfcode (entget ename)) (entget ename)))
)
(defun cptext1 ( e_nguon e_dich / text_nguon)
    (setq    text_nguon (cdr(assoc 1 (entget e_nguon)))
    )
    (doithuoctinh e_dich 1 text_nguon)
)
    (prompt "Chon Text Nguon:")
    (while    (not
                (setq    a (ssget "_+.:E:S" '((0 . "TEXT,MTEXT"))) )
                )
        )
    (while
        (progn
            (setvar    'errno 0)
            (setq    b  (entsel "\nChon Text Dich:") )
        
            (cond
                ( (= (getvar 'errno) 7) (princ "\nBan Pick Truot, Hay Pick Lai ") )
                ( (and     b
                         (/= (cdr(assoc 0 (entget (car b)))) "TEXT")
                         (/= (cdr(assoc 0 (entget (car b)))) "MTEXT")
                        
                    )
                         (princ "\nBan Pick Nham, Hay Pick Lai ")
                )
                ( (and b
                       (OR
                        (= (cdr(assoc 0 (entget (car b)))) "TEXT")
                        (= (cdr(assoc 0 (entget (car b)))) "MTEXT")
                        )
                        (cptext1 (SSNAME a 0) (car b))
                    )
                )
                ( (not b) nil)
            )
        )
    )
)

thanks


  • 0