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

Nhờ giúp viết lại lisp copy text từ cad ra excel

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

MÌnh trước có lisp
copy text từ cad chuyển sang excel nhưng khi save nó save file excel mới
minh muốn nhờ cao thủ sửa lại thành là khi chọn đối tượng trong CAD xong thì nó sẽ copy clip board rồi mình copy excel luôn không muốn tạo thành file mới
vì mình phải copy nhièu đối tượng liên tục tạo file mới thế mất thời gian quá

 

tên củ của lisp là c2e thì phải vì m đổi lại từ lúc down trên mạng cơ

thank các bác trước

  • 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

Nhắc bạn một là copy file đưa lên đây, 2 là cố gắng tìm link của bài viết bạn down. Mình thì đoán ra cáo lisp c2e của bạn rồi nhưng trên mạng có rất nhiều lisp c2e và k thể phân biệt được. Thâ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 sửa lại như thế này, khi nó hỏi có chép đè lên file cũ không thì bạn cứ mạnh dạn ok nhé. :)

 


(defun c:copytext (/ hangdau)
  (defun sosanh (e1 e2 / p1 p2)
    (setq p1 (car e1)
 p2 (car e2)
    )
    (if (equal (cadr p1) (cadr p2) fuzz)
      (< (car p1) (car p2))
      (> (cadr p1) (cadr p2))
    )
  )
  (setq
    ss    (ssget '((0 . "TEXT")))
    lst    (ss2ent ss)
    lst    (mapcar '(lambda (e)
      (cons (cdr (assoc 10 (entget e)))
    (cdr (assoc 1 (entget e)))
      )
    )
   lst
   )
    caotext (cdr (assoc 40 (entget (ssname ss 0))))
    fuzz    (* caotext 1.0)
    lst    (vl-sort lst 'sosanh)
    index   1
    oldy    nil
    fn    (getfiled "Chon file de save" "" "csv" 1)
    fid    (open fn "a")
  )
  (princ "\n" fid)
  
  (foreach e lst
    (if (equal oldy (cadr (car e)) fuzz)
      (progn
(princ "," fid)
(setq index (1+ index))
      )
      (progn
(if hangdau
 (progn
   (setq index 1)
   (princ "\n" fid)
 )
 (setq hangdau t)
)
      )
    )
    (princ (cdr e) fid)
    (setq oldy (cadr (car e)))
  )
  (close fid)
)

 

Cái hàm ss2ent nếu bạn có cài Express thì thay bằng acet-ss-to-list cũng tương đươ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

bạn ơi file lisp của mình vẫn dùng được, mình muốn khi chọn đối tượng xong khi space nó không hiển thị cửa sổ save file mới . mà là copy clip boảd và sang excel pass được luôn ấy

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

Copy vào clipboard là một việc làm khá là nguy hiểm, vì nó đụng tới hệ thống, tức là tùy thuộc vào máy của bạn.

Trên forum cũng có vài bài viết về cái đó nhưng tôi thấy không xài được. Có thể máy họ làm được nhưng máy tôi thì không được?

 

Nếu ban không muốn hiện bảng save file thì cũng được, nó sẽ tự động chèn vào file với tên có sẵn. Còn đưa vào clipboard thì tôi không làm được.

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ái này chỉ hỏi save file 1 lần đầu thôi, các lần sau không hỏi nữa. Nếu bạn muốn save thành file khác thì đánh lệnh "res" trước rồi hãy đánh lệnh copytext. Khi đang xài lệnh copytext thì đừng mở file csv thì mới save đươc. Bạn test thử xem.

 

http://www.cadviet.com/upfiles/3/127168_tmp1_44.lsp

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ái lisp này có thể copy vào clipboard được, nhưng tôi test trên cad 2010 thì ok, cad đời cũ hơn thì không chắc.

Trong đó có hàm setClipText tôi lấy trên mạng .

 

http://www.cadviet.com/upfiles/3/127168_67273_text_acad_sang_text_excel_copytext__save_csv_1.lsp

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  

×