Đến nội dung


Hình ảnh
- - - - -

[Yêu Cầu] Thay thế text hàng loạt


  • Please log in to reply
6 replies to this topic

#1 oneclicklogin

oneclicklogin

    biết zoom

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

Đã gửi 28 September 2012 - 02:09 PM

Chào tất cả các anh các anh chị trong diễn đàn .
Em có tham gia diễn đàn thời gian khá dài nhưng chỉ vào học hỏi mọi người . Nay xin anh chị chỉ dùm em hay viết dùm em lisp thay thế text hàng loạt như trong fire em gửi kèm ạ. Dạ quy luật thay thế của em là Text ở cột A thay cho text ở B. em có minh họa trong bản vẽ đính kèm
Em cảm ơn anh chị nhiều.
http://www.mediafire...g5t12xmf1q1jowg
  • 0

#2 avi612

avi612

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 28 September 2012 - 03:41 PM

Chào tất cả các anh các anh chị trong diễn đàn .
Em có tham gia diễn đàn thời gian khá dài nhưng chỉ vào học hỏi mọi người . Nay xin anh chị chỉ dùm em hay viết dùm em lisp thay thế text hàng loạt như trong fire em gửi kèm ạ. Dạ quy luật thay thế của em là Text ở cột A thay cho text ở B. em có minh họa trong bản vẽ đính kèm
Em cảm ơn anh chị nhiều.
http://www.mediafire...g5t12xmf1q1jowg


Cái này giải quyết được 60% ý đồ của bạn, còn thao tác chỉ 1 lần quyếtt chuột thì chắc nhờ người khác giúp giùm.

(defun c:tnn(/ os #sset #ssname #str #sset1 #ssname1)
(setvar "CMDECHO" 0)
(command ".undo" "BE")
(command ".UCS" "W" ^C^C)
(Prompt "\n- Ch\U+1ECDn Text góc:")
(setq #sset (ssget ":s" '((0 . "*TEXT,DIMENSION"))))
(setq #ssname (ssname #sset 0))
(setq #str (cdr (assoc 1 (entget #ssname))))
(Prompt "\n- Ch\U+1ECDn Text \U+0111ích:")
(setq #sset1 (ssget ":s" '((0 . "*TEXT,DIMENSION"))))
(setq #ssname1 (ssname #sset1 0))
(entmod (subst (cons 1 #str) (assoc 1 (entget #ssname1)) (entget #ssname1)))
(command ".undo" "E")
(princ)
(princ)
)

  • 2

#3 oneclicklogin

oneclicklogin

    biết zoom

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

Đã gửi 28 September 2012 - 04:12 PM

Cái này giải quyết được 60% ý đồ của bạn, còn thao tác chỉ 1 lần quyếtt chuột thì chắc nhờ người khác giúp giùm.


(defun c:tnn(/ os #sset #ssname #str #sset1 #ssname1)
(setvar "CMDECHO" 0)
(command ".undo" "BE")
(command ".UCS" "W" ^C^C)
(Prompt "\n- Ch\U+1ECDn Text góc:")
(setq #sset (ssget ":s" '((0 . "*TEXT,DIMENSION"))))
(setq #ssname (ssname #sset 0))
(setq #str (cdr (assoc 1 (entget #ssname))))
(Prompt "\n- Ch\U+1ECDn Text \U+0111ích:")
(setq #sset1 (ssget ":s" '((0 . "*TEXT,DIMENSION"))))
(setq #ssname1 (ssname #sset1 0))
(entmod (subst (cons 1 #str) (assoc 1 (entget #ssname1)) (entget #ssname1)))
(command ".undo" "E")
(princ)
(princ)
)

Cảm ơn bạn đã quan tâm nhé . Lisp rất tuyệt nhưng tiếc là không 1 lần quét và thay thế nhiều text được rất mong các anh chỉ giúp vấn đề này ạ.
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 September 2012 - 04:27 PM

Cảm ơn bạn đã quan tâm nhé . Lisp rất tuyệt nhưng tiếc là không 1 lần quét và thay thế nhiều text được rất mong các anh chỉ giúp vấn đề này ạ.

Lisp này mình đã viết từ lâu rồi.
Link : http://www.cadviet.c...ic=13203&st=700
Sửa theo ý bạn đây :


(defun c:cs(/ ss sx lis1 lis2 n i nn mm li li1)
;;write by Tue_NV
(vl-load-com)
(princ "\n Chon chuoi 1 :")
(setq ss (ssget '((0 . "TEXT"))))
(princ "\n Chon chuoi 2 :")
(setq sx (ssget '((0 . "TEXT"))))
(setq lis1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lis2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex sx))))
(setq lis1 (vl-sort lis1 '(lambda (x y)
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
)
)
)
(setq lis2 (vl-sort lis2 '(lambda (x y)
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
)
)
)
(setq n (sslength ss) i 0)

(if (= (length lis1) (length lis2))
(progn
(while (< i (length lis1))

(setq nn (entget (nth i lis1)))
(setq mm (entget (nth i lis2)))

(setq li (cdr (assoc 1 nn)))

(setq li1 (cdr (assoc 1 mm)))


;(setq nn (subst (cons 1 li1) (assoc 1 nn) nn))
(setq mm (subst (cons 1 li) (assoc 1 mm) mm))

(entmod mm)
;(entmod nn)
(setq i (+ i 1))

)
)
(alert "\n Hai chuoi khong bang nhau. Lisp khong thuc hien duoc")
)

(princ)

)

  • 5

#5 oneclicklogin

oneclicklogin

    biết zoom

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

Đã gửi 28 September 2012 - 04:38 PM

Lisp này mình đã viết từ lâu rồi.
Link : http://www.cadviet.c...ic=13203&st=700
Sửa theo ý bạn đây :



(defun c:cs(/ ss sx lis1 lis2 n i nn mm li li1)
;;write by Tue_NV
(vl-load-com)
(princ "\n Chon chuoi 1 :")
(setq ss (ssget '((0 . "TEXT"))))
(princ "\n Chon chuoi 2 :")
(setq sx (ssget '((0 . "TEXT"))))
(setq lis1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lis2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex sx))))
(setq lis1 (vl-sort lis1 '(lambda (x y)
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
)
)
)
(setq lis2 (vl-sort lis2 '(lambda (x y)
(< (caddr (assoc 10 (entget x)))
(caddr (assoc 10 (entget y)))
)
)
)
)
(setq n (sslength ss) i 0)

(if (= (length lis1) (length lis2))
(progn
(while (< i (length lis1))

(setq nn (entget (nth i lis1)))
(setq mm (entget (nth i lis2)))

(setq li (cdr (assoc 1 nn)))

(setq li1 (cdr (assoc 1 mm)))


;(setq nn (subst (cons 1 li1) (assoc 1 nn) nn))
(setq mm (subst (cons 1 li) (assoc 1 mm) mm))

(entmod mm)
;(entmod nn)
(setq i (+ i 1))

)
)
(alert "\n Hai chuoi khong bang nhau. Lisp khong thuc hien duoc")
)

(princ)

)

Lisp của anh thật là tuyệt . Cảm ơn anh Tue_NV nhiều lắm .
  • 1

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 28 September 2012 - 04:48 PM

Tick "Like This" cho họ đi bạn ơi! "Thank" là... tinh thần, "Like This" mới là... vật chất! :lol:
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 oneclicklogin

oneclicklogin

    biết zoom

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

Đã gửi 28 September 2012 - 04:53 PM

Tick "Like This" cho họ đi bạn ơi! "Thank" là... tinh thần, "Like This" mới là... vật chất! :lol:

Em đoảng quá anh ạ :D
  • 0