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  
hotanphi

Nhờ Các Anh Chỉnh Sửa Giúp Em Lisp Sau

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

Em có tìm được cái lisp này. Em ko biết lệnh về lisp. Nhờ các anh chỉnh sửa giúp em thêm các nội dung sau:

1. Làm tròn số sau dấu chấm do mình nhập vào và vẫn còn lưu lại ở các lần sau giá trị đó nếu mình không muốn thay đổi (nếu thay đổi thì nhập lại).

2. Tính khoảng cách của 2 điểm pick (điểm số 1 và điểm số 2) theo phương ngang chứ không phải theo đường chéo như hiện tại.

Em cảm ơn các anh.

 

Code:

(defun c:KC (/ p1 p2 txt etxt d)
(setq p1 (getpoint "\n Chon diem thu nhat")
         p2 (getpoint "\n Chon diem thu hai ")
         txt (car (entsel "\n Chon text can thay" ))
         d (distance p1 p2)
         etxt (entget txt)
         etxt (subst (cons 1 (rtos d 2 3)) (assoc 1 etxt) etxt)
)
(entmod etxt)
(command "change" txt "" "p" "c" 1 "")
(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

Gợi ý cho bạn chút thôi.

Muốn tính theo phương X thì thay đoạn:     d (distance p1 p2)     bằng         d (abs  (- (car p1) (car p2)))

Muốn thay đổi số chữ số sau dấu phẩy thì có thể thay:            (rtos d 2 X) với x là số chữ số sau dấu phẩy.

  • 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

Gợi ý cho bạn chút thôi.

Muốn tính theo phương X thì thay đoạn:     d (distance p1 p2)     bằng         d (abs  (- (car p1) (car p2)))

Muốn thay đổi số chữ số sau dấu phẩy thì có thể thay:            (rtos d 2 X) với x là số chữ số sau dấu phẩy.

Cảm ơn anh đã giúp.

Em thay tính khoảng cách thì được rồi nhưng thay đổi sau dấu phẩy thì chưa được như ý.

Ý của em là lựa chọn sau dấu phẩy mấy số thì mình nhập vào và dòng lệnh lưu lại số đó cho các lần thực hiện tiếp theo.

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ử thêm đoạn này ở đầu hàm lisp:

(or (> (getvar 'USERI1) -1) (setvar 'USERI1 2))
  (initget 4)
  (setq stp (cond ((getint (strcat "\nSo chu so thap phan <" (itoa (getvar 'USERI1)) ">: ")))
                  ((getvar 'USERI1))))
  (setvar 'USERI1 stp)

Sau đó thay: (rtos d 2 3)) thành (rtos d 2 stp))

  • 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

Bạn thử thêm đoạn này ở đầu hàm lisp:

(or (> (getvar 'USERI1) -1) (setvar 'USERI1 2))

  (initget 4)

  (setq stp (cond ((getint (strcat "\nSo chu so thap phan <" (itoa (getvar 'USERI1)) ">: ")))

                  ((getvar 'USERI1))))

  (setvar 'USERI1 stp)

Sau đó thay: (rtos d 2 3)) thành (rtos d 2 stp))

Mình làm như bạn hướng dẫn rồi nhưng vẫn chưa được bạn ơi. Nếu bạn pich vào 2 điểm được giá trị khoảng cách là 4 thì khi đó chọn text thay thế hiển thị là 4 chứ không phải 4.00 mặc dù trước đó mình chọn số thập phân là 02 số rồi. Nhở các anh sửa giúp. Em xin cảm ơn

 

Code như sau:

 

(defun c:KC (/ p1 p2 txt etxt d)

(or (> (getvar 'USERI1) -1) (setvar 'USERI1 2))

  (initget 4)

  (setq stp (cond ((getint (strcat "\nSo chu so thap phan <" (itoa (getvar 'USERI1)) ">: ")))

                  ((getvar 'USERI1))))

  (setvar 'USERI1 stp)

 

(setq p1 (getpoint "\n Chon diem thu nhat")

          p2 (getpoint "\n Chon diem thu hai ")

         txt (car (entsel "\n Chon text can thay" ))

          d (distance p1 p2)

         etxt (entget txt)

         etxt (subst (cons 1 (rtos d 2 stp)) (assoc 1 etxt) etxt)

)

(entmod etxt)

(command "change" txt "" "p" "c" 1 "")

(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

Mình làm như bạn hướng dẫn rồi nhưng vẫn chưa được bạn ơi. Nếu bạn pich vào 2 điểm được giá trị khoảng cách là 4 thì khi đó chọn text thay thế hiển thị là 4 chứ không phải 4.00 mặc dù trước đó mình chọn số thập phân là 02 số rồi. Nhở các anh sửa giúp. Em xin cảm ơn

 

Code như sau:

 

(defun c:KC (/ p1 p2 txt etxt d)

(or (> (getvar 'USERI1) -1) (setvar 'USERI1 2))

  (initget 4)

  (setq stp (cond ((getint (strcat "\nSo chu so thap phan <" (itoa (getvar 'USERI1)) ">: ")))

                  ((getvar 'USERI1))))

  (setvar 'USERI1 stp)

 

(setq p1 (getpoint "\n Chon diem thu nhat")

          p2 (getpoint "\n Chon diem thu hai ")

         txt (car (entsel "\n Chon text can thay" ))

          d (distance p1 p2)

         etxt (entget txt)

         etxt (subst (cons 1 (rtos d 2 stp)) (assoc 1 etxt) etxt)

)

(entmod etxt)

(command "change" txt "" "p" "c" 1 "")

(princ)

)

 

 

 A @QuocManh  lỗi cũ kìa  :D  :D  :D

Gõ  DIMZIN , set giá trị 0 rồi thử lại xem.

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

Dạ nhờ các anh vào chỉnh sửa giúp em với ạ. Em xin cảm ơn

Ý là bạn gõ trực tiếp lên cad câu lệnh :  DIMZIN ,  set giá trị 0  rồi thử lại xem.  :) Chứ a @QuocManh từng chữa lỗi này rồ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

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  

×