Chuyển đến nội dung
Diễn đàn CADViet
sam0610

Lisp nhân giá trị text với 1 hệ số

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

Các bác có thể giúp em líp này không:

- Chọn đối tượng 1 là số dạng text.

- Chọn đối tượng 2 là số dạng text.

- . . . . . . .

- Chọn đối tượng n là số dạng text.

- Chọn đối tượng n+1 là số dạng text.

 

Cad sẽ thực hiện các công thức với n đối tượng được chọn và cho kết quả vào đối tượng thứ n+1.

- Các bác có thể chỉ em cách lập công thức không, như +, -, *, /, lấy căn, . . . các đối tượ được chọn ấy.

Thanks

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ác bác có thể giúp em líp này không:

- Chọn đối tượng 1 là số dạng text.

- Chọn đối tượng 2 là số dạng text.

- . . . . . . .

- Chọn đối tượng n là số dạng text.

- Chọn đối tượng n+1 là số dạng text.

 

Cad sẽ thực hiện các công thức với n đối tượng được chọn và cho kết quả vào đối tượng thứ n+1.

- Các bác có thể chỉ em cách lập công thức không, như +, -, *, /, lấy căn, . . . các đối tượ được chọn ấy.

Thanks

Nhập công thức bằng cách nào và vào lúc nào hả bạn?

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ác bứơc như sau:

- Nhập hệ số tuỳ ý.

- Chọn đối tượng số dạng text A

- Chọn đối tượng text B

- CAD sẽ lấy A*"hệ số" và ghi kết quả vào B.

 

Nếu mình gọi lại lệnh lần 2 thì giá trị của hệ số vẫn được giữ nguyên giống bán kính của lệnh circle vậy đó.

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ác bứơc như sau:

- Nhập hệ số tuỳ ý.

- Chọn đối tượng số dạng text A

- Chọn đối tượng text B

- CAD sẽ lấy A*"hệ số" và ghi kết quả vào B.

 

Nếu mình gọi lại lệnh lần 2 thì giá trị của hệ số vẫn được giữ nguyên giống bán kính của lệnh circle vậy đó.

 

Nghĩa là mỗi lần gọi lệnh chỉ nhập 2 số (không kể hệ số) đúng không bạn?

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
Đúng rồi.

lệnh là NHAN!

Lệnh sẽ yêu cầu bạn nhập:

- hệ số, nếu trước đó đã nhập rồi, bạn không muốn thay đổi thì chỉ việc enter.

- Pick vào text chứa giá trị.

- Pick vào text chứa kết quả của phép nhân giá trị với hệ số.

Nếu 2 lần pick đều pick vào 1 text, text đó sẽ được nhân lên theo hệ số.

 

(defun c:nhan( / tmp)
 (princ "\nNHAN © CADViet.com")
 (while (not tmp)
   (setq tmp heso
  tmp (getreal (cond (tmp (strcat "\nHay nhap he so : "))
		     (t "\nChua co he so, hay nhap he so: ")
		)
       )
  )
   (if tmp (setq heso tmp)
     (if heso (setq tmp heso))
   )
 )
 (entmod (subst (cons 1 (vl-string-trim "." (vl-string-trim "0" (rtos (* heso (atof (cdr (assoc 1 (entget (car (entsel "\nHay pick vao gia tri can nhan: "))))))))))) (assoc 1 (setq tt (entget (car (entsel "\nHay pick vao so can sua: "))))) tt))
 (princ)
)
(princ "\nsu dung lenh NHAN de bat dau. Day la freelisp tu  www.cadviet.com")
(princ)

  • 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 Hoành chỉnh lại mã lisp để nhân chính text đó với hệ số bất kỳ và thay thế chính text đó không cần chọn text chọn text cần chỉnh sửa ko?

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 Hoành chỉnh lại mã lisp để nhân chính text đó với hệ số bất kỳ và thay thế chính text đó không cần chọn text chọn text cần chỉnh sửa ko?

Bạn chạy đoạn Lisp này thử xem :

(defun c:nhan()
(setvar "CMDECHO" 0)
(setq olddim (getvar "dimzin"))
(setvar "DimZin" 0)
	(setq pre (getint "\nSo chu so sau dau phay : "))
	(command "luprec" pre)  
 (setq co (getreal "\nGia tri can so nhan:"))
 (SETQ TH (ssget)
	QUANT (if TH (SSLENGTH TH))
 	INDEX 0
)
 (WHILE (			   (setq s (entget (SSNAME TH INDEX))
		   otext (assoc 1 s)
		   ot (cdr otext)
		   ot (atof ot)
		   nt (cons 1 (rtos (* ot co) 2 pre)) 
		   s (subst nt otext s)
		)
		   (entmod s)
 		  (setq index (+ index 1))
			 )
(setvar "dimzin" olddim)
(princ) 
)

  • 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

Thank nhiều! bạn sửa luôn đoạn code này hộ mình với

 

(defun c:te()

(defun new (/ onew1)

(if (null new1) (setq new1 1))

(setq onew1 new1)

(setq new1 (getint (strcat "\nNhap so can chia <" (itoa new1) ">: ")))

(if (null new1) (setq new1 onew1))

)

(setq en (ssget))

(setq n (sslength en) i 0)

(while (< i n)

(setq li (cdr (assoc 1 (setq ename (entget (ssname en i))))))

(setq lis (/ (atof li) (new)))

(entmod (subst (cons 1 (rtos lis 2 2)) (assoc 1 ename) ename))

(setq i (+ i 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
Thank nhiều! bạn sửa luôn đoạn code này hộ mình với

Thay vì Thanks nhiều -> bạn hãy tick thanks nhiều nhiều. Tue_NV thích được tick thanks nhiều nhiều lắm. :cheers:

Đây bạn. Code của bạn được sửa xong. Đây là Lisp chia số Tue_NV bổ sung thêm vào số lẻ thập phân do user nhập vào

(defun c:chia()
(setq olddim (getvar "dimzin"))
(setvar "DimZin" 0)

(setq en (ssget))
(setq tp (getint "\n So chu so thap phan :"))

(setq n (sslength en) i 0)

(if (null newo) (setq newo 1))

(setq new1 (getreal (strcat "\nNhap so can chia : ")))

(if (null new1) (setq new1 newo) (setq newo new1))

(while (
(setq ename (entget (ssname en i)))

(setq li (cdr (assoc 1 ename)))
(setq lis (/ (atof li) new1))

(setq ename (subst (cons 1 (rtos lis 2 tp)) (assoc 1 ename) ename))

(entmod ename)
(setq i (+ i 1))
)
(setvar "dimzin" olddim)
(princ)
)
;;;;

  • 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

Các bạn có thể gộp 2 lệnh nhân chia lại được ko và cách thực hiện như sau: Chọn đối tượng thứ 1 làm đối tượng gốc sau đó chọn đối tượng thứ 2 hoặc nhập cad hỏi sẽ hỏi tiếp * hoặc / mặc định là Nhân tiếp đó ta se chọn đối tượng để cho kết quả mong nhận được phản hồi cùa các bạn.

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

Cho mình ý kiến tí nha:

Sao các bạn không làm 1 cái lisp như vậy nè: Cộng, trừ, nhân, chia cho 1 hệ số khai báo

- Bước 1: Khai báo hệ số

- Bước 2: Khai báo phép tính với hệ số đã khai báo

- Bước 3: chọn các đối tượng mình muốn làm phép tính với hệ số đã khai báo, khi chọn xong thì nhấn enter

- Bước 4: chọn vị trí để xuất ra kết quả mình muốn

**** Nâng cao hơn là các bạn có thể làm 1 bảng thống kê gồm: STT, Các số đã chọn, Hệ số và 1 ô xuất ra kết quả)

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

Nếu thêm các tính năng cộng và trừ vào thì sao nhỉ. Mình mún các huynh gìúp luôn cả hai phép tính đó. Còn khả năng chọn nhiều đối Text nữa

B1: chọn text là số cần thực hiện phép tính( chonj nhieeuf soos)

B2: nhập số để làm phép tinh(số bị trừ, số cộng, số bị chia, số nhân)

B3: cho xuất kết quả vào một text khác( hoặc cho kết quả vào đúng text đã chọn ban đầu)

Mình cám ơn rất nhiề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

Bạn đang nói đến lisp nào thế nhỉ ??

- Với lisp bài #8 : sửa đoạn :

(setq co (getreal "\nGia tri can so nhan:")) thành (setq co 8) (ví dụ nhân với 8).

- Với lisp bài #6 :

Bỏ cả đoạn này đi :

(while (not tmp)

(setq tmp heso

tmp (getreal (cond (tmp (strcat "\nHay nhap he so <" (rtos tmp 2 2)">: "))

(t "\nChua co he so, hay nhap he so: ")

)

)

)

(if tmp (setq heso tmp)

(if heso (setq tmp heso))

)

)

và thay bằng (setq heso 8)

Gluck!

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


×