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

[yêu cầu] Em cần gấp - nhờ các a viết dùm e lisp chỉnh sửa text như thế này

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

1.input : có những text (dạng Text hoặc Mtext ) với nội dung, vị trí tùy ý

Ví dụ : A B C D E F

 

 

2. Đánh lệnh chạy lisp

 

 

3. Lisp yêu cầu : chọn các text cần sửa

 

4. Người dùng click chọn lần lượt các text cần sửa. { ví dụ e click chọn từ A -> F }

 

5. Lisp sẽ hỏi : Nhập prefix : Người dùng sẽ nhập bất kỳ gì mình muốn. { Ví dụ e nhập A }

 

6. Lisp sẽ tự động thay đổi giá trị các text : A B C D E F thành : A1 A2 A3 A4 A5 A6

 

( các giá trị số phía sau prefix 1 -> 6 theo đúng thứ tự click của người dùng )

( nếu cick chọn n text thì nó sẽ thay đổi từ 1 -> n )

 

======================== Em xin cảm ơn nhiều các a nhé !

E cần gấp mong các anh cho e xin !

 

========================= E không sửa lại tên topic được nên post bài mới ... mong mod thông cảm

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

Lệnh Tcount (express)

 

... Thanks a ketxu ... e biết lệnh này ...

 

Nhưng cần nó kết hợp được 2 cái 1 lần luôn thì mới làm mau được ...

 

Vì e có tới cả 100 cái text cần sửa như thế này .

 

Nếu tcount cho nó thì nó chỉ đổi được số .....

 

Còn cái ký tự phía trước mình phải edit tay lâu quá anh ?

 

A có cách nào xin chỉ e vớ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

Thank a ketxu ...

 

Làm như cách của a em cũng biết rồi ...

 

... Nhưng vẫn tốn thời gian lâu a à ...

 

Vì cái e làm nó thường theo 1 cụng thế này :

 

A1 -> A6

B1 -> B4

C1 -> C5 ...

...

M...

N...

...

 

Chứ nếu nó chỉ có 1 cái là A1 -> An cũng đỡ ...

.... nội chỉ việc click chọn hoài theo thứ tự cũng đủ phờ râu ...

mà nó nhiều quá ... lại làm đi làm lại 2 lần ...

============ Dù sao e cũng thank a nhé. Do e gà ko biết viết lisp định tình cách cho rút ngắn thời gian làm lại thô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

Lisp thì cũng đơn giản thôi :

(defun c:at(/ a i)(vl-load-com)
(princ "\nSelect text objects :")
(while (not (ssget '((0 . "*TEXT")))))
(setq a (getstring "\nPrefix :") i 0)
(vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vla-put-textstring obj (strcat a " " (rtos (setq i (1+ i)) 2 0)))
)
)

  • Vote tăng 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

itoa :"> lâu lắm r ket mới viết được 1 code dài vậy đó bác ^^

Hề hề hề,

Bác Ketxu cho hỏi thêm một tí tác dụng của dòng code:

(while (not (ssget '((0 . "*TEXT")))))

Phải chăng nó có tác dụng thoát khỏi lisp khi không có bộ chọn text nào??? Mình còn lơ mơ về vấn đề này nên rất mong được giải thích kỹ hơn.

Hề hề hề,...

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 người dùng k chọn đc text nào thì hàm not thỏa mãn, nó lại quay lại phần kiểm tra tiếp bá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

Nếu người dùng k chọn đc text nào thì hàm not thỏa mãn, nó lại quay lại phần kiểm tra tiếp bác ạ

Hề hề hề,

Vậy có nghĩa là nó chờ bắt buộc người dùng phải chọn được text, nếu không nó sẽ không chơi tiếp hử???

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

Vâng ạ. Nếu k chọn nó sẽ lặp vô tận, đến khi nào có mới chịu thôi. Hàm not cừa làm điều kiện, cũng vô tình là công việc mình cần làm

  • 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

Em xin thank bác ..

 

Lisp tuy ngắn nhưng vẫn hay mà ...

 

Mà các hàm a kết hợp khó hiểu quá ... em chưa hiểu ra ...

 

... gà quá

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

Chưa hiểu cũng k sao, cứ từ từ mà ^^ lần sau bạn cứ bỏ từ "em cần gấp" đi là được ^^

  • 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

Em cần gấp thiệt mà anh .... hix hix

 

- em đã làm tay cho xong lúc đó rồi ...

 

- Mà giờ e test lại nó như thế này :

 

Nó ra kết quả là : A 1 A 2 A 3 ... ( có khoảng trắng ở giữa )

 

- E biết dùng lệnh find -> là giải quyết được ...

 

Nhưng muốn hỏi a để mở rộng thêm về lisp : là trong lisp này a sửa lại cho nó dính liền luôn không có khoảng trắng nhé 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

Cái đó là mình cố tìn, bạn bỏ dòng " " trong code đi. đọnh viết lisp thì bạn fai vận động đi một tẹo, bị động quá lâu thành lắm. hi.

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  

×