Đến nội dung


Hình ảnh
- - - - -

Nhờ cao thủ chỉnh lisp


  • Please log in to reply
4 replies to this topic

#1 hotanfat

hotanfat

    biết pan

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

Đã gửi 17 December 2013 - 10:02 AM

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.


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 December 2013 - 10:24 AM

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


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 hotanfat

hotanfat

    biết pan

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

Đã gửi 17 December 2013 - 10:41 AM

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


  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 17 December 2013 - 11:02 AM

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)


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 hotanfat

hotanfat

    biết pan

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

Đã gửi 17 December 2013 - 11:11 AM

tks bạn, mình đã chỉnh được rồi :D


  • 0