Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 hg_aum

hg_aum

    biết vẽ circle

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

Đã gửi 25 July 2012 - 08:56 PM

Hình đã gửiĐâ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.
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 27 July 2012 - 10:58 AM

Đâ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.

Bài viết đã được chỉnh sửa nội dung bởi phamthanhbinh: 27 July 2012 - 01:26 PM
Bổ sung lisp

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 hg_aum

hg_aum

    biết vẽ circle

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

Đã gửi 28 July 2012 - 10:39 PM

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
  • 0