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.
Đăng nhập để thực hiện theo  
friendship293a

Nhờ các anh sửa hộ em lisp trung bình nhân này với

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

Tình hình là em có cái lisp tinh giá trị trung bình của các số sau đó nó cho chọn text để ghi kết quả nhưng bây giờ em muốn nó thế này ạ

sau khi đánh lệnh thì chọn các giá trị để lấy trung bình xong enter rùi chọn số cần nhân vào giá trị trung bình rùi chọn số để điền kết quả

tức là nó sẽ thêm tính năng là nhân thêm một số được chọn trên màn hình rùi mới điền kết quả. Cảm ơn các anh.

(defun c:tb ()
(prompt "\nChon text de tinh trung binh cong:")
(setq ss (ssget '((0 . "TEXT")))
sl (sslength ss)
kqua 0
)
(while (and ss (> (sslength ss) 0))
(setq
kqua (+ kqua
(atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))
)
)
(ssdel ent ss)
)
(setq kqua (/ kqua sl))
(princ kqua)

(setq obj (vlax-ename->vla-object
(car (entsel "\nChon text de ghi ket qua:"))
)
)
(vla-put-TextString obj (rtos kqua 2 2))
)

  • 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
(defun c:tb ()
(prompt "\nChon text de tinh trung binh cong:")
(setq ss (ssget '((0 . "TEXT")))
sl (sslength ss)
kqua 0
)
(while (and ss (> (sslength ss) 0))
(setq
kqua (+ kqua
(atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))
)
)
(ssdel ent ss)
)
(prompt (strcat "Trung binh cong = " (rtos (setq kqua (/ kqua sl)) 2)))
(setq kqua (* kqua (getreal "\nNhap so muon nhan them:")))
(princ kqua)

(setq obj (vlax-ename->vla-object
(car (entsel "\nChon text de ghi ket qua:"))
)
)
(vla-put-TextString obj (rtos kqua 2 2))
)

d

  • 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

Hoặc :

(defun c:tbn(/)
(setq S 0)
(foreach x (setq ss (acet-ss-to-list (ssget '((0 . "*TEXT")))))
(setq S (+ S (atof(acet-dxf 1 (entget x)))))
)
(setq S (/ (* S (atof (acet-dxf 1 (entget (car(entsel "\nChon so nhan :")))))) (length ss)))
(vla-put-TextString 
(vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:"))) 
(rtos S 2 1))
)

  • 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

Cảm ơn mọi người đã quan tâm. Lisp của anh Thaistreetz thì gần đúng ý em. ý em là text nhân thêm là text chọn trên màn hình chứ không phải nhập từ bàn phím. còn lisp của anh ketxu không hiểu sao sau khi chọn các text để lấy giá trị trung bình thì nó ko hỏi chọn text để nhân gì cả cũng không cho kết quả. các anh xem lại cho em 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

Bạn thử kiểm tra xem máy đã cài Express Tool chưa? Nếu chưa thì mình chuyển sang VL hoặc autolisp thuần thôi ^^ (trong lisp xài các hàm acet của Express)

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ủa bạn đây

(defun c:tbn(/ s ss)
(defun DXF (code en) (cdr (assoc code (entget en))))
(setq S 0)
(foreach x (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT")))))))
(setq S (+ S (atof(dxf 1 x))))
)
(setq S (/ (* S (atof (dxf 1 (car(entsel "\nChon so nhan :"))))) (length ss)))
(vla-put-TextString 
(vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:"))) 
(rtos S 2 1))
)

PS;máy mình vừa bị thằng ku em lật hết bàn phím lên.phải dùng bàn fím ảo để coding, thật vô cùng vất vả

  • 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

Anh có thể dùng các hàm bình thường mà không cần cái Xpress tool được không? em muốn ghép vào file lisp chung của e. ko phải cài xpress thì tiện hơn. thanks!!

Hy vọng cái này xài được (cả Acad R14)

http://www.cadviet.com/upfiles/3/trung_binh_nhan.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ảm ơn mọi người đã quan tâm. Lisp của anh Thaistreetz thì gần đúng ý em. ý em là text nhân thêm là text chọn trên màn hình chứ không phải nhập từ bàn phím. còn lisp của anh ketxu không hiểu sao sau khi chọn các text để lấy giá trị trung bình thì nó ko hỏi chọn text để nhân gì cả cũng không cho kết quả. các anh xem lại cho em với ạ

Uh, tại mình đọc không kỹ. code moi cho bạn đây

(defun c:tbc (/ I KQUA LSTTBC OBJ SS TBC)
(prompt "Chon cac so tinh trung binh")
(setq ss (ssget (list (cons 0 "*Text"))) i 0)
(repeat (sslength ss)(setq lsttbc (cons (atof (cdr(assoc 1 (entget(ssname SS i))))) lsttbc) i (1+ i)))
(prompt (strcat "\n Trung Binh Cong = "(rtos (setq tbc (/ (apply '+ lsttbc) (sslength ss))) 2)))
(prompt (strcat"\ket qua = " (rtos (setq kqua (* tbc (atof(cdr(assoc 1 (entget(car(entsel "\nchon so muon nhan them")))))))) 2)))
(setq obj (vlax-ename->vla-object (car (entsel "\nChon text de ghi ket qua:"))))
(vla-put-TextString obj (rtos kqua 2 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

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  

×