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  
hhhhgggg

Giúp em Thêm dòng lệnh ?

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

hhhhgggg    30

Dưới đây là Lisp cộng thêm 1 giá trị vào Text rùi ghi kết quả sang 1 text khác trên bản vẽ. Em muốn thêm dòng lệnh hiển thị giá trị mình thêm của lần trước khi mình thực hiện lệnh lần sau vào để khi mình lặp lại lệnh thì ko phải đánh lại giá trị lần trước mình thêm vào nữa.

dạng như sau :

chạy lần 1

 

Command: add

select text number: (Chọn text cộng thêm)

value add<0>: 50

Select Text to results: (Chọn text gán kết quả)

 

chạy lần 2

Command: add

select text number: (Chọn text cộng thêm)

value add<50>: (Ấn enter, ko phải nhập lại giá trị 50)

Select Text to results: (Chọn text gán kết quả)

 

CODE

 

;;;=========== Cong Text voi so =======

(defun c:add()

(setvar "CMDECHO" 0)

 

;Lay gia tri cua text thu nhat:

(setq s (entget (car (entsel "\n Select Text number: "))))

(setq otext (assoc 1 s))

(setq ot (cdr otext))

(setq ot (read (substr ot 1 )))

 

;Lay gia tri cua text thu hai:

(command "luprec" pre)

(setq ot1 (getreal "\nValue Add:"))

 

(setq giatri (entget (car (entsel "\n Select Text to results: "))))

(command "luprec" "2")

(setq gia (assoc 1 giatri))

;(setq gia (rtos gia 2 2))

(setq nt1 (cons 1 (rtos (+ ot ot1) )))

(setq giatri (subst nt1 gia giatri))

(entmod giatri)

(princ)

)

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
q288    164
Dưới đây là Lisp cộng thêm 1 giá trị vào Text rùi ghi kết quả sang 1 text khác trên bản vẽ. Em muốn thêm dòng lệnh hiển thị giá trị mình thêm của lần trước khi mình thực hiện lệnh lần sau vào để khi mình lặp lại lệnh thì ko phải đánh lại giá trị lần trước mình thêm vào nữa.

dạng như sau :

Sửa lại như sau: Bạn copy trực tiếp các dòng dưới đây vì hình như download file add.lsp thiếu mất vài chữ.

Nhờ mod sửa dùm cái vụ thiếu chữ này.

(defun c:add ()
 (setvar "CMDECHO" 0)
				;Lay gia tri cua text thu nhat:
 (setq s (entget (car (entsel "\n Select Text number: "))))
 (setq otext (assoc 1 s))
 (setq ot (cdr otext))
 (setq ot (read (substr ot 1))
          ot2 nil)

				;Lay gia tri cua text thu hai:
 (command "luprec" pre)
 (if ot1 (setq ot2 (getreal (strcat "\nValue Add <" (rtos ot1) ">:")))
   (setq ot1 (getreal "\nValue Add :" )))
 (if ot2 (setq ot1 ot2))

 (setq giatri (entget (car (entsel "\n Select Text to results: "))))
 (command "luprec" "2")
 (setq gia (assoc 1 giatri))
				;(setq gia (rtos gia 2 2))
 (setq nt1 (cons 1 (rtos (+ ot ot1))))
 (setq giatri (subst nt1 gia giatri))
 (entmod giatri)
 (princ)
)

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
hhhhgggg    30
Sửa lại như sau: Bạn copy trực tiếp các dòng dưới đây vì hình như download file add.lsp thiếu mất vài chữ.

Nhờ mod sửa dùm cái vụ thiếu chữ này.

(defun c:add ()
 (setvar "CMDECHO" 0)
				;Lay gia tri cua text thu nhat:
 (setq s (entget (car (entsel "\n Select Text number: "))))
 (setq otext (assoc 1 s))
 (setq ot (cdr otext))
 (setq ot (read (substr ot 1))
          ot2 nil)

				;Lay gia tri cua text thu hai:
 (command "luprec" pre)
 (if ot1 (setq ot2 (getreal (strcat "\nValue Add <" (rtos ot1) ">:")))
   (setq ot1 (getreal "\nValue Add :" )))
 (if ot2 (setq ot1 ot2))

 (setq giatri (entget (car (entsel "\n Select Text to results: "))))
 (command "luprec" "2")
 (setq gia (assoc 1 giatri))
				;(setq gia (rtos gia 2 2))
 (setq nt1 (cons 1 (rtos (+ ot ot1))))
 (setq giatri (subst nt1 gia giatri))
 (entmod giatri)
 (princ)
)

ok ! 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
Tue_NV    3.841
Dưới đây là Lisp cộng thêm 1 giá trị vào Text rùi ghi kết quả sang 1 text khác trên bản vẽ. Em muốn thêm dòng lệnh hiển thị giá trị mình thêm của lần trước khi mình thực hiện lệnh lần sau vào để khi mình lặp lại lệnh thì ko phải đánh lại giá trị lần trước mình thêm vào nữa.

Đây là kỹ thuật mang tính "kinh điển"

Bạn có thể đọc bài viết này của bác ssg để có thể tự thêm mã lệnh cho mình trong những trường hợp khác.

Mong rằng bạn hiểu và có thể tự tay xây dựng được cái này trong những bài toán khác

Bài viết đó nằm ở đây : Nghệ thuật lập trình Lisp. Bài viết số 14

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  

×