Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
9 replies to this topic

#1 friendship293a

friendship293a

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 01 April 2011 - 06:14 PM

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))
)

  • 1

#2 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 01 April 2011 - 08:42 PM

(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
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 April 2011 - 10:37 PM

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))
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 friendship293a

friendship293a

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 02 April 2011 - 04:20 PM

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

#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 April 2011 - 05:03 PM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 friendship293a

friendship293a

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 02 April 2011 - 06:35 PM

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

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 April 2011 - 10:26 PM

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ả
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 02 April 2011 - 10:51 PM

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.c...g_binh_nhan.lsp
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 April 2011 - 11:42 PM

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)))

  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#10 friendship293a

friendship293a

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 03 April 2011 - 08:47 AM

Cảm ơn tất cả mọi nguời em làm được rùi đặc biệt cảm ơn anh ketxu phải dùng bàn fím ảo để coding, thật vô cùng vất vả. hihi
  • 0