Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
14 replies to this topic

#1 sam0610

sam0610

    biết pan

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

Đã gửi 06 August 2007 - 07:17 PM

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

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 06 August 2007 - 09:46 PM

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

#3 sam0610

sam0610

    biết pan

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

Đã gửi 09 August 2007 - 06:13 PM

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 đó.
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 09 August 2007 - 08:28 PM

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

#5 sam0610

sam0610

    biết pan

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

Đã gửi 11 August 2007 - 12:27 PM

Đúng rồi.
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 11 August 2007 - 12:42 PM

Đú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 <" (rtos tmp 2 2)">: "))
(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)

  • 1

#7 ccc123

ccc123

    biết vẽ line

  • Advance Member
  • PipPip
  • 26 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 10 April 2009 - 11:35 AM

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

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 10 April 2009 - 12:43 PM

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 (< INDEX QUANT)
(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)
)

  • 1

#9 ccc123

ccc123

    biết vẽ line

  • Advance Member
  • PipPip
  • 26 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 10 April 2009 - 01:19 PM

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

)
  • 0

#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 10 April 2009 - 02:05 PM

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 <" (rtos newo) ">: ")))

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

(while (< i n)

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

  • 2

#11 shinnikel

shinnikel

    biết vẽ line

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

Đã gửi 03 May 2009 - 09:09 PM

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

#12 trioby1

trioby1

    biết pan

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

Đã gửi 15 October 2010 - 03:13 PM

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

#13 thienhoang12

thienhoang12

    Chưa sử dụng CAD

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

Đã gửi 18 October 2010 - 04:52 PM

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

#14 vminh_ct

vminh_ct

    biết lệnh stretch

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

Đã gửi 24 May 2011 - 05:01 PM

làm thế nào để để sửa lisp tren nhân luôn với 1 số cố định mà mình không phai nhập vào số bị nhân nhỉ các bác
  • 0
" Sống trên đời cần có 1 tấm lòng,để gió mãi cuốn đi"

#15 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 May 2011 - 05:25 PM

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