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

Lisp thay thế 1 cột Text trong Excel thay Thế các Text theo thứ tự được chọn trong Cad

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

Nhờ Các Bác giúp em Viết  Lisp thay thế 1 cột Text trong Excel thay Thế các Text theo thứ tự được chọn trong Cad; Giữ Nguyên Định Dạng Của Text Trên File Cad

  • Vote giảm 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

Nghĩa là: E sẽ có số liệu khối lượng của 100 ô lưới bình đồ được thống kê trên bảng excel. Trên Bản autocad đã có bình đồ khối lượng của 100 ô lưới. E cần viết 1 lisp để thay thế khối lượng của 100 ô lưới trên excell vào bình đồ 100 ô lưới trên cad theo thứ tự lựa chọn. E cám ơn ạ!

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 nên làm "đúng kiểu" cho các tính huống giống như thế này, như sau:

1. Tạo Block Atribute thay vì các text

2. DÙng lệnh ATTOUT, xuất Attribute ra thành file text

3. Dùng Excel mở file ở bước 2 ra

4. Sửa trong excel, rồi lưu lại

5. Dùng lệnh ATTIN để nhập Text vào Attribute.

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

huunhantvxdts

Vâng cái này cũng tạm được. Bác cho em xin lips với ạ.

Nhưng đây là điền text mới trên cad. Có cách nào mà điền vào text đã có trên cad ko ạ?

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

Gửi bạn xem đã ok chưa????

(defun C:layt (/ oldos s text ndtext)
 (command "undo" "be")
 (setq oldos (getvar "OSMODE")) 
 (setvar "cmdecho" 0)
 (setvar "osmode" 512)
 (setq s (GetClipBoardText))
 (setq ndtext nil)
 (while (vl-string-search "\n" s)
 (setq text (substr s 1 (vl-string-search "\n" s)))
 (setq ndtext (cons (substr text 1 (- (strlen text) 1)) ndtext))
 (setq s (substr s (+ 2 (vl-string-search "\n" s))))
 )
 (setq ndtext (reverse ndtext))
 (foreach lst ndtext
 (thaythe lst)
 )
 (setvar "osmode" oldos)
 (setvar "cmdecho" 1)
 (command "undo" "end")	
 (princ )
 )
(defun thaythe(s / giatrimoi giatricu thongtin)
(setq giatriold (entsel "\nGia tri can thay the"))
	(while
 	 (or
   	 (null giatriold)
   	 (/= "TEXT" (cdr (assoc 0 (entget (car giatriold)))))
	 )
	(princ "\nDoi tuong khong phai la text! Chon lai")
 	(setq giatriold (entsel "\nGia tri can thay the"))
	)
(setq thongtin (entget (car giatriold)))
(setq giatricu (assoc 1 thongtin))
(setq giatrimoi (cons 1  s))
(setq thongtin (subst giatrimoi giatricu thongtin))
(entmod thongtin)
(command "_change" giatriold "" "p" "c" "1" "")
)
(defun GetClipBoardText( / htmlfile result ) ; By Patrick_35
 (setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'GetData "Text" ) )
 (vlax-release-object htmlfile)
 result
)

 

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
Vào lúc 3/31/2018 tại 17:01, huunhantvxdts đã nói:

Gửi bạn xem đã ok chưa????


(defun C:layt (/ oldos s text ndtext)
 (command "undo" "be")
 (setq oldos (getvar "OSMODE")) 
 (setvar "cmdecho" 0)
 (setvar "osmode" 512)
 (setq s (GetClipBoardText))
 (setq ndtext nil)
 (while (vl-string-search "\n" s)
 (setq text (substr s 1 (vl-string-search "\n" s)))
 (setq ndtext (cons (substr text 1 (- (strlen text) 1)) ndtext))
 (setq s (substr s (+ 2 (vl-string-search "\n" s))))
 )
 (setq ndtext (reverse ndtext))
 (foreach lst ndtext
 (thaythe lst)
 )
 (setvar "osmode" oldos)
 (setvar "cmdecho" 1)
 (command "undo" "end")	
 (princ )
 )
(defun thaythe(s / giatrimoi giatricu thongtin)
(setq giatriold (entsel "\nGia tri can thay the"))
	(while
 	 (or
   	 (null giatriold)
   	 (/= "TEXT" (cdr (assoc 0 (entget (car giatriold)))))
	 )
	(princ "\nDoi tuong khong phai la text! Chon lai")
 	(setq giatriold (entsel "\nGia tri can thay the"))
	)
(setq thongtin (entget (car giatriold)))
(setq giatricu (assoc 1 thongtin))
(setq giatrimoi (cons 1  s))
(setq thongtin (subst giatrimoi giatricu thongtin))
(entmod thongtin)
(command "_change" giatriold "" "p" "c" "1" "")
)
(defun GetClipBoardText( / htmlfile result ) ; By Patrick_35
 (setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'GetData "Text" ) )
 (vlax-release-object htmlfile)
 result
)

 

E download về nhưng ko dùng dc ạ. E đánh lệnh LAYT thì cad báo lỗi: "error: bad argument type: (or stringp symbolp): nil" . Bác giúp e với ạ

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
2 giờ trước, lunapvt đã nói:

E download về nhưng ko dùng dc ạ. E đánh lệnh LAYT thì cad báo lỗi: "error: bad argument type: (or stringp symbolp): nil" . Bác giúp e với ạ

Copy cot excell trước đã rồi đánh lệnh

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
4 giờ trước, huunhantvxdts đã nói:

Copy cot excell trước đã rồi đánh lệnh

Cám ơn bác. Chúc Bác luôn mạnh khỏe và công tác tốt!

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
Vào lúc 31/3/2018 tại 17:01, huunhantvxdts đã nói:

Gửi bạn xem đã ok chưa????


(defun C:layt (/ oldos s text ndtext)
 (command "undo" "be")
 (setq oldos (getvar "OSMODE")) 
 (setvar "cmdecho" 0)
 (setvar "osmode" 512)
 (setq s (GetClipBoardText))
 (setq ndtext nil)
 (while (vl-string-search "\n" s)
 (setq text (substr s 1 (vl-string-search "\n" s)))
 (setq ndtext (cons (substr text 1 (- (strlen text) 1)) ndtext))
 (setq s (substr s (+ 2 (vl-string-search "\n" s))))
 )
 (setq ndtext (reverse ndtext))
 (foreach lst ndtext
 (thaythe lst)
 )
 (setvar "osmode" oldos)
 (setvar "cmdecho" 1)
 (command "undo" "end")	
 (princ )
 )
(defun thaythe(s / giatrimoi giatricu thongtin)
(setq giatriold (entsel "\nGia tri can thay the"))
	(while
 	 (or
   	 (null giatriold)
   	 (/= "TEXT" (cdr (assoc 0 (entget (car giatriold)))))
	 )
	(princ "\nDoi tuong khong phai la text! Chon lai")
 	(setq giatriold (entsel "\nGia tri can thay the"))
	)
(setq thongtin (entget (car giatriold)))
(setq giatricu (assoc 1 thongtin))
(setq giatrimoi (cons 1  s))
(setq thongtin (subst giatrimoi giatricu thongtin))
(entmod thongtin)
(command "_change" giatriold "" "p" "c" "1" "")
)
(defun GetClipBoardText( / htmlfile result ) ; By Patrick_35
 (setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'GetData "Text" ) )
 (vlax-release-object htmlfile)
 result
)

 

Bạn có thể giúp mình chỉnh lisp dùng được cho text, mtext, text attributes được không

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  

×