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

Nhờ cao thủ chỉnh lisp

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

Mình có chôm được 1 đoạn lisp dùng để đánh số thự tự liên tục

(defun C:WW ( / dem newtext tename etlist2 ettype2 oldtext FTEXT)
 
  (setq dem (getint "\nNHAP SO BAT DAU: "))
  (setq FTEXT (getstring "\nNHAP first text: "))
   (while dem
    (progn
      (setq newtext (strcat FTEXT (rtos dem 2 2))
        etname2 (car (nentsel))
        etlist2 (entget etname2)
        ettype2 (cdr (assoc 0 etlist2))
            oldtext (assoc 1 etlist2)
         )
           (if (and (or (= ettype2 "TEXT") (= ettype2 "MTEXT") (= ettype2 "ATTRIB")) (< (strlen (cdr oldtext)) 999))
        (progn
          (setq etlist2 (subst (cons 1 newtext) oldtext etlist2))
          (entmod etlist2)
          (entupd etname2)
      (setq dem (+ dem 1))
         )
      
        )
      )      
    )
   (setq dem nil newtext nil tename nil etlist2 nil ettype2 nil oldtext nil)
   (princ)
)
 
 

Các bạn có thể chỉnh dùm mình để sau khi giá trị tăng lên thì cũng đổi màu của đối tượng luôn, mặc định đổi thành màu xanh lá cây luôn cũng được.

Mình có tập tành thì tìm được dòng lệnh :

 (command "change" tenbien "" "P" "C" i "")

với i là giá trị của màu, nhưng vẫn chèn vào khôgn được, mong cao nhân giúp đỡ, cảm ơ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

Mình có chôm được 1 đoạn lisp dùng để đánh số thự tự liên tục

Các bạn có thể chỉnh dùm mình để sau khi giá trị tăng lên thì cũng đổi màu của đối tượng luôn, mặc định đổi thành màu xanh lá cây luôn cũng được.

Mình có tập tành thì tìm được dòng lệnh :

với i là giá trị của màu, nhưng vẫn chèn vào khôgn được, mong cao nhân giúp đỡ, cảm ơn.

Hề hề hề,

Chắc mẻm ông bạn này là em ông Hotanfi rồi, bởi đã "phì" tất phải "fat".

Dòng code của bạn nếu dùng cho các đối tượng text hay mtext thì chắc là không có vấn đề chi. Tất nhiên cái tenbien lúc này bạn phải đổi lại là etname2. Song nếu dùng cho các attribute thì sẽ không ổn bởi các attribute nằm trong block nên nó đã bị block rồi, không thể sử dụng lệnh change với các attribute này. Bạn thử dùng cách entmod xem có được không nhé.

Thêm doạn code sau :

(if (setq olco (assoc 62 elist2)

    (setq elist2 (subst (cons 62 3) olco elst2))

    (setq elst2 (append (list (cons 62 3)) elst2))

)

Vào dưới dòng code:

 (setq etlist2 (subst (cons 1 newtext) oldtext etlist2))

 

Và trên dòng code:

(entmod etlist2)

Sau đó lưu lại file lisp và test thử nhé.

Chúc thành công

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ư trên và code trở thành như sau

(defun C:WW ( / dem newtext tename etlist2 ettype2 oldtext FTEXT)
 
  (setq dem (getint "\nNHAP SO BAT DAU: "))
  (setq FTEXT (getstring "\nNHAP first text: "))
   (while dem
    (progn
      (setq newtext (strcat FTEXT (rtos dem 2 2))
        etname2 (car (nentsel))
        etlist2 (entget etname2)
        ettype2 (cdr (assoc 0 etlist2))
            oldtext (assoc 1 etlist2)
         )           
      (if (and (or (= ettype2 "TEXT") (= ettype2 "MTEXT") (= ettype2 "ATTRIB")) (< (strlen (cdr oldtext)) 999))
        (progn
          (setq etlist2 (subst (cons 1 newtext) oldtext etlist2))
(if (setq olco (assoc 62 elist2)

    (setq elist2 (subst (cons 62 3) olco elst2))

    (setq elst2 (append (list (cons 62 3)) elst2))
)

          (entmod etlist2)
          (entupd etname2)
          (setq dem (+ dem 1))
         )
      
        )
      )      
    )
   (setq dem nil newtext nil tename nil etlist2 nil ettype2 nil oldtext nil)
   (princ)
)
 

sau khi chèn thêm đoạn code thì gõ lệnh ww trong cad lại báo là không hiểu, mình đã load lại lisp 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

Mình đã làm như trên và code trở thành như sau

sau khi chèn thêm đoạn code thì gõ lệnh ww trong cad lại báo là không hiểu, mình đã load lại lisp rồi

Hề hề hề,

Đoạn code trên của mình bị sai biến, bạn hãy đổi lại là etlist2 chứ không phải là elist2 nhé. và code bị thiếu một dấu ngoặc đóng ở cuối dòng 

(if (setq olco (assoc 62 elist2)

  • 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

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  

×