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

[ Yêu cầu] lisp up txt lên bản vẽ.

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

63415_untitled.jpgĐây là phần phụ trong công tác tính khối lượng,em không phải tính nhưng lại phải điền số liệu vào bản vẽ nên có ý tưởng viết lisp này nhưng vì em mới tìm hiểu lisp nên chưa viết được rất mong bác nào pro về lisp giúp đỡ em.em xin cám ơn rất nhiều.em có một bản vẽ cad có tên ô vuông và em phải điền khối lượng vào đó.Em đã có file excell có tên ô vuông và khối lượng tương ứng.Ý tưởng của em là trên cad ta chọn tên ô vuông(txt),chương trình sẽ đọc txt được chọn rồi tìm trong file đầu vào excell(ta có thể chuyển về dạng txt) tên ô vuông tương ứng,nếu tìm thấy sẽ đọc khối lượng tương ứng của nó rồi viết lên ,màm hình cad,nếu không thấy báo lỗi trong file số liệu.

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

Đây là phần phụ trong công tác tính khối lượng,em không phải tính nhưng lại phải điền số liệu vào bản vẽ nên có ý tưởng viết lisp này nhưng vì em mới tìm hiểu lisp nên chưa viết được rất mong bác nào pro về lisp giúp đỡ em.em xin cám ơn rất nhiều.em có một bản vẽ cad có tên ô vuông và em phải điền khối lượng vào đó.Em đã có file excell có tên ô vuông và khối lượng tương ứng.Ý tưởng của em là trên cad ta chọn tên ô vuông(txt),chương trình sẽ đọc txt được chọn rồi tìm trong file đầu vào excell(ta có thể chuyển về dạng txt) tên ô vuông tương ứng,nếu tìm thấy sẽ đọc khối lượng tương ứng của nó rồi viết lên ,màm hình cad,nếu không thấy báo lỗi trong file số liệu.

Hề hề hề,

Bạn hãy post cả file bản vẽ drawing và file excel lên để mọi người tiện kiểm tra bạn ạ.

Hình ảnh bạn post quá nhỏ, khó đọc quá, Tuy mình có thể hiểu chút chút nhưng thực sự chưa biết cấu tạo các text của bạn trong bản vẽ là gì để làm lisp.

Vì bạn chưa có file excel nên mình làm tạm cái này để bạn test. nếu cần gì sẽ bổ sung sau

Chú ý file excel phải được save as lại dưới dạng file csv. Các text trên bản vẽ phải đúng với các text trên file csv cả về chữ hoa và chữ thường. File csv chỉ có hai cột dữ liệu như hình ảnh bạn đã post.


(defun c:uptxt (/ fn f datlst txt etxt str L a)
(setq  fn (getfiled "Select Data File" "" "csv" 0)
           f (open fn "r")
           datlst (list)
)
(while (setq txt (read-line f))
     (setq datlst (append datlst (list txt)))
)
(close f)
(while  (setq etxt (car (entsel "\n Chon text can update")))
   (setq str (cdr (assoc 1 (entget etxt))) a nil )
   (foreach txt datlst
       (separate txt ",")
       (if (= str (car L))
           (progn
               (command "text" (getpoint "\n Chon diem dat text") 2 0 (cadr L))
               (setq a T)
           )           
       )
   )
   (if (= a nil)
        (alert "\n Khong co doi tuong cap nhat cho text ban chon")
   )
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Separate (S sym / i ch)
(setq i 0 L nil)
(while (< i (strlen S))
     (setq i (1+ i) ch (substr S i 1))
     (if (= ch sym) (progn
(setq
    L (append L (list (substr S 1 (- i 1))))
    S (substr S (1+ i) (- (strlen S) i))
    i 0
)
     )) 
)
(setq L (append L (list S)))
L
)

Chúc bạn vui.

Chỉnh sửa theo phamthanhbinh
Bổ sung lisp
  • Vote tăng 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

Hề hề hề,

Bạn hãy post cả file bản vẽ drawing và file excel lên để mọi người tiện kiểm tra bạn ạ.

Hình ảnh bạn post quá nhỏ, khó đọc quá, Tuy mình có thể hiểu chút chút nhưng thực sự chưa biết cấu tạo các text của bạn trong bản vẽ là gì để làm lisp.

Vì bạn chưa có file excel nên mình làm tạm cái này để bạn test. nếu cần gì sẽ bổ sung sau

Chú ý file excel phải được save as lại dưới dạng file csv. Các text trên bản vẽ phải đúng với các text trên file csv cả về chữ hoa và chữ thường. File csv chỉ có hai cột dữ liệu như hình ảnh bạn đã post.


(defun c:uptxt (/ fn f datlst txt etxt str L a)
(setq  fn (getfiled "Select Data File" "" "csv" 0)
           f (open fn "r")
           datlst (list)
)
(while (setq txt (read-line f))
     (setq datlst (append datlst (list txt)))
)
(close f)
(while  (setq etxt (car (entsel "\n Chon text can update")))
   (setq str (cdr (assoc 1 (entget etxt))) a nil )
   (foreach txt datlst
       (separate txt ",")
       (if (= str (car L))
           (progn
               (command "text" (getpoint "\n Chon diem dat text") 2 0 (cadr L))
               (setq a T)
           )          
       )
   )
   (if (= a nil)
    	(alert "\n Khong co doi tuong cap nhat cho text ban chon")
   )
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun Separate (S sym / i ch)
(setq i 0 L nil)
(while (< i (strlen S))
     (setq i (1+ i) ch (substr S i 1))
     (if (= ch sym) (progn
(setq
	L (append L (list (substr S 1 (- i 1))))
	S (substr S (1+ i) (- (strlen S) i))
	i 0
)
     ))
)
(setq L (append L (list S)))
L
)

Chúc bạn vui.

Cảm ơn anh nhiều nhiều nhé,em kiểm tra rồi thấy ok anh ạ.hihi hehe

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  

×