Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
saukhoai

NHỜ AE SỬA LISP

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

E TÌM TRÊN DIỄN ĐÀN CÓ ĐC 1 LISP NÀY, SAU KHI DÙNG LỆNH THÌ CHIỀU DÀI ĐC CHÈN VÀO BLOCK ATT NÀY HIỆU ,  E MUỐN NHỜ MN BỔ SUNG THÊM LÀ KHI THAY ĐỔI CHIỀU DÀI THÌ GỌI LẠI LỆNH NÀY, CHỌN CÁI CHIỀU DÀI THAY ĐỔI  ẤY RỒI CHỌN BLOCK KIA THÌ LISP THAY SỐ ĐẰNG SAU CÁI L= KIA( TRONG VÍ DỤ LÀ L=11700 THÌ GỌI LỆNH XONG TỰ THAY THÀNH L=2000) 

CD-GHI THEM CHIEU DAI VAO BLOCK ATT.lsp

image.png

  • Vote giảm 3

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 xem thử:

(defun c:cd  (/ att ent len ss str)
  (setvar 'DIMZIN 0)
  (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE"))))
       (setq ent (ssname ss 0))
       (not (redraw ent 3))
       (setq att (car (nentsel "\nPick Att: ")))
       (eq (cdr (assoc 0 (entget att))) "ATTRIB")
       (setq len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)))
       (setq str (vla-get-textstring (vlax-ename->vla-object att)))
       (not
         (vla-put-textstring (vlax-ename->vla-object att)
                             (cond ((wcmatch str "* L= *")
                                    (strcat (vl-string-right-trim "0123456789" str) (rtos len 2 0)))
                                   ((strcat str " L= " (rtos len 2 0))))))
       (redraw ent 4))
  (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
4 giờ trước, NTHAHT đã nói:

Bạn xem thử:

(defun c:cd  (/ att ent len ss str)
  (setvar 'DIMZIN 0)
  (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE"))))
       (setq ent (ssname ss 0))
       (not (redraw ent 3))
       (setq att (car (nentsel "\nPick Att: ")))
       (eq (cdr (assoc 0 (entget att))) "ATTRIB")
       (setq len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)))
       (setq str (vla-get-textstring (vlax-ename->vla-object att)))
       (not
         (vla-put-textstring (vlax-ename->vla-object att)
                             (cond ((wcmatch str "* L= *")
                                    (strcat (vl-string-right-trim "0123456789" str) (rtos len 2 0)))
                                   ((strcat str " L= " (rtos len 2 0))))))
       (redraw ent 4))
  (princ))

cái này là viết thêm vào block này r a, ý e là muốn thay thế giá trị sau chữ l = ấy a

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 giá trị cũ có dạng xxx L= yyy thì yyy sẽ được thay bằng giá trị mới:

Ví dụ:

Chiều dài mới lấy được là 1000

- Giá trị cũ là: 16D14a100 L = 2000 sẽ được thay thành: 16D14a100 L = 1000

- Nếu giá trị cũ là 16D14a100 (không có L =) thì kết quả như lisp cũ.

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
3 giờ trước, NTHAHT đã nói:

Nếu giá trị cũ có dạng xxx L= yyy thì yyy sẽ được thay bằng giá trị mới:

Ví dụ:

Chiều dài mới lấy được là 1000

- Giá trị cũ là: 16D14a100 L = 2000 sẽ được thay thành: 16D14a100 L = 1000

- Nếu giá trị cũ là 16D14a100 (không có L =) thì kết quả như lisp cũ.

ak, đc r bác ơi, vừa e nhìn nhầm số :)) cảm ơn bác nhé

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  

×