Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
victor85

[Yêu cầu] lisp tính tổng các số (VERY EASY)

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

victor85    10

lisp tc.lsp

Lệnh tc:

Các bro viết dùm em:

select object: các text cần cộng -> enter

select object: các text cần trừ -> enter

Xuất kết quả thành 1 text mới là tổng tất cả các text vừa chọn.

 

Tiện thể các bro có lisp ngược của copy smart: nhảy số ngược từ n -> (n-1) -> ... -> 1 viết dùm em luôn với ạ!

Em cảm ơn các bro nhiều nhiều (biểu tượng cụng ly ăn mừ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
victor85    10

Sao cực dễ mà bạn hiền không mần :">

Select các text cần trừ tức là sao :o

 

Mình ko biết ngôn ngữ lập trình viết lisp. hic hic.

Còn các text cần trừ là mình chọn thêm các đối tượng text một lần nữa thì các số trong các text ý sẽ trừ đi trong cái phép tính tổng cộ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
ketxu    2.649

Lisp đầu :

;free lisp from CadViet.com @ketxu
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(defun wtxt_l(txt p / sty d h1 h2 wf h) ;;;Write txt on graphic screen at p
(setq    sty (getvar "textstyle")    
d (tblsearch "style" sty)    
h1 (cdr (assoc 40 d))    
h2 (cdr (assoc 42 d))    
wf (cdr (assoc 41 d)))
(if (> h1 0) (setq h h1) (setq h h2))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 40 h) (cons 41 wf)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
(defun c:ct(/ sum ssc sst)
(setq ssc (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sst (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sum 0)
(foreach x ssc
(setq sum (+ sum (atof (dxf 1 x))))
)
(foreach x sst
(setq sum (- sum (atof (dxf 1 x))))
)
(wtxt_l (rtos sum 2 2) (getpoint "\n Diem chen ket qua"))	
)

  • Vote tăng 2

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
Doan Van Ha    2.676

Lisp đầu :

;free lisp from CadViet.com @ketxu
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(defun wtxt_l(txt p / sty d h1 h2 wf h) ;;;Write txt on graphic screen at p
(setq    sty (getvar "textstyle")    
d (tblsearch "style" sty)    
h1 (cdr (assoc 40 d))    
h2 (cdr (assoc 42 d))    
wf (cdr (assoc 41 d)))
(if (> h1 0) (setq h h1) (setq h h2))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 40 h) (cons 41 wf)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
(defun c:ct(/ sum ssc sst)
(setq ssc (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sst (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sum 0)
(foreach x ssc
(setq sum (+ sum (atof (dxf 1 x))))
)
(foreach x sst
(setq sum (- sum (atof (dxf 1 x))))
)
(wtxt_l (rtos sum 2 2) (getpoint "\n Diem chen ket qua"))	
)

Biến và hàm trung tên liệu có sao không hè (cùng dxf)?

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
ketxu    2.649

Không sao đâu bác hè, vì lisp nhận nó là hàm khi ngay trước tên hàm là dấu (. Nếu ở code trên mình viết là assoc (dxf...) thì toi ngay ^^.^^ Dù sao thì như vậy cũng rất tránh, rất cảm ơn bác đã phát hiện ^^

  • 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
Doan Van Ha    2.676

Không sao đâu bạn.

Bác Tue_NV cho hỏi xíu: trong trường hợp này của bác ketxu thì có lẽ không sao, nhưng tôi đã từng "chết" vì vụ này rồi (biến trùng hàm). Bác trả lời "không sao đâu bạn" khiến tôi hơi ngại nên muốn hỏi bác: trường hợp nào thì "không sao" còn trường hợp nào thì "có sao". Bác biết xin chỉ giùm.

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
Tue_NV    3.841

Bác Tue_NV cho hỏi xíu: trong trường hợp này của bác ketxu thì có lẽ không sao, nhưng tôi đã từng "chết" vì vụ này rồi (biến trùng hàm). Bác trả lời "không sao đâu bạn" khiến tôi hơi ngại nên muốn hỏi bác: trường hợp nào thì "không sao" còn trường hợp nào thì "có sao". Bác biết xin chỉ giùm.

Hề, hề, mình trả lời bạn không có sao vì bạn hỏi là : có sao không? Như bạn đã thấy đấy code của Ketxu có vấn đề chi đâu, phải không hè?

Và nếu bạn hỏi là Có tránh không? thì mình trả lời là : Nên tránh :rolleyes: Để tránh được sự nhầm lẫn.

Hề, hề, phải không bạn?

 

PS: Nên sử dụng Visual Lisp Editor để viết code thay vì sử dụng Notepat

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
Doan Van Ha    2.676

Hề, hề, mình trả lời bạn không có sao vì bạn hỏi là : có sao không? Như bạn đã thấy đấy code của Ketxu có vấn đề chi đâu, phải không hè?

Và nếu bạn hỏi là Có tránh không? thì mình trả lời là : Nên tránh :rolleyes: Để tránh được sự nhầm lẫn.

Hề, hề, phải không bạn?

 

PS: Nên sử dụng Visual Lisp Editor để viết code thay vì sử dụng Notepat

Hề, hề. Không sao đâu bá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
victor85    10

Bác ketxu ơi, sao load lisp về đánh lệnh ct hay tc đều ko nhận lệnh. ko hiểu tại sao. bác bắt đc bệnh dùm ko 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
ketxu    2.649

Bạn reply bài viết đó của mình để lấy code, hoặc down ở đây. Lệnh ct, srr vì quên mất đặt ngược lại, bạn có thể tự sửa.

ct

 

P/S : Bác Hoành lâu sửa lỗi download lisp của diễn đàn quá :|

  • 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
victor85    10

Cảm ơn bác ketxu nhé. lisp chạy ngon. Thanks bác cho bác thành dân chơi cái nào! :)

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

Lisp đầu :

;free lisp from CadViet.com @ketxu
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(defun wtxt_l(txt p / sty d h1 h2 wf h) ;;;Write txt on graphic screen at p
(setq    sty (getvar "textstyle")    
d (tblsearch "style" sty)    
h1 (cdr (assoc 40 d))    
h2 (cdr (assoc 42 d))    
wf (cdr (assoc 41 d)))
(if (> h1 0) (setq h h1) (setq h h2))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 40 h) (cons 41 wf)(cons 72 1)(cons 11 p) (cons 1 txt) (cons 10 p))))
(defun c:ct(/ sum ssc sst)
(setq ssc (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sst (acet-ss-to-list (ssget '((0 . "*TEXT"))))
	sum 0)
(foreach x ssc
(setq sum (+ sum (atof (dxf 1 x))))
)
(foreach x sst
(setq sum (- sum (atof (dxf 1 x))))
)
(wtxt_l (rtos sum 2 2) (getpoint "\n Diem chen ket qua"))	
)

Tuyệt vời. cảm ơn bạn. Qua nhiều lisp hay !!!

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
thanhduan2407    226

Không biết Cadviet dạo này thế nào mà nhiều lần vào toàn bị lỗi. Thứ 2 là lisp post lên chẳng có theo dòng gì cả. Viết theo kiểu hỗn độn như thế khó kiểm soát và không logic lắm. Mong Admin xem lại dùm.

  • 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

chào mọi người.minh thấy lisp này hay nhưng khi tính khối lượng người ta yêu cầu phải có cả công thức.mong mọi người kiểm tra xem có sửa được không

vd : 4.3+4.3=8.6. thì lisp này chỉ hiển thị được kết quả.mình muốn nó hiển thị cả công thức.mong mọi người giúp đỡ.

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


×