Chuyển đến nội dung
Diễn đàn CADViet
vanhoatnguyen

[Yêu cầu] Lisp ghi bước thép với khoảng cách thép đều nhau

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

Chào các anh (Chị)

Em xin nhờ các anh (chị) viết hộ 2 đoạn lisp như sau:

1. Lisp ghi bước thép, Em có một đường kích thước đo khoảng cách giữa các thanh thép. Giả sử là 1500. Bây giờ em muốn ghi bước thép cho đường đó, giả sử bước thép là 150 thì sau ghi bước thép sẽ là 10x150=1500. (Xem hình minh họa).

2. Lisp đổi màu đối tượng từ màu 10 trở lên. Click chọn đối tượng, gõ "10" sao đó gõ màu cần chuyển.

Em có một FIle lisp VLX có thể làm được 2 việc này rồi nhưng trong file đó có nhiều lệnh trùng với các lisp khác của em nên em không kiểm soát được. Nhờ các anh (chị) giúp đỡ.

http://www.cadviet.com/upfiles/3/103883_hinh_minh_hoa_1.dwg

http://www.cadviet.com/upfiles/3/103883_04pc1lsp_2.rar

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ào các anh (Chị)

Em xin nhờ các anh (chị) viết hộ 2 đoạn lisp như sau:

1. Lisp ghi bước thép, Em có một đường kích thước đo khoảng cách giữa các thanh thép. Giả sử là 1500. Bây giờ em muốn ghi bước thép cho đường đó, giả sử bước thép là 150 thì sau ghi bước thép sẽ là 10x150=1500. (Xem hình minh họa).

2. Lisp đổi màu đối tượng từ màu 10 trở lên. Click chọn đối tượng, gõ "10" sao đó gõ màu cần chuyển.

Em có một FIle lisp VLX có thể làm được 2 việc này rồi nhưng trong file đó có nhiều lệnh trùng với các lisp khác của em nên em không kiểm soát được. Nhờ các anh (chị) giúp đỡ.

http://www.cadviet.c..._minh_hoa_1.dwg

http://www.cadviet.c..._04pc1lsp_2.rar

Có quan tâm đấy chứ, nhưng mà đầu óc hạn chế quá nên không hiểu yêu cầu của chủ topic.

 

1. T/hợp đuờng dim lẻ :

- truớc khi sử dụng lệnh : giá trị text dim là 5100

- sau khi sử dụng lệnh nhập buớc 200 : giá trị text dim là 25x200=5010

 

Có sự khác biệt giữa 5100 và 5010 -> qui luật ?

 

2.Lisp đổi màu đối tượng từ màu 10 trở lên :

- nhưng minh họa đối tuợng chọn có màu bằng 4 (cyan) ?

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ó quan tâm đấy chứ, nhưng mà đầu óc hạn chế quá nên không hiểu yêu cầu của chủ topic.

 

1. T/hợp đuờng dim lẻ :

- truớc khi sử dụng lệnh : giá trị text dim là 5100

- sau khi sử dụng lệnh nhập buớc 200 : giá trị text dim là 25x200=5010

 

Có sự khác biệt giữa 5100 và 5010 -> qui luật ?

 

2.Lisp đổi màu đối tượng từ màu 10 trở lên :

- nhưng minh họa đối tuợng chọn có màu bằng 4 (cyan) ?

 

Cảm ơn Bác gia_bach đã quan tâm.

Trước tiên cho em xin lỗi vì hình minh họa có sự nhầm lẫn.

1- Số ở đường dim lẻ vẫn phải là 5100 chứ không phải 5010. Ý của em là thế này.Giả sử mà số đường dim đo được (5000 chẳng hạn) chia hết cho số bước thép (ở đây là 200 chẳng hạn) thì khi mình gõ lệnh BT rồi chọn đường dim thì nó sẽ được 5000/200=25 (và hiện là 25x200=5000) khoảng bước thép. Còn giả sử số trên đường dim (nếu là 5100) không chia hết cho bước thép (bước 200) thì sau khi gõ lệnh BT vẫn chia ra số khoảng bước thép như thường, nhưng thay vì hiện là 25.5x200=5100 thì chỉ hiện phần nguyên của kết quả (ngầm định là 5100/200=25.5, nhưng chỉ hiện là 25x200=5100). Vậy thôi ạ

2- Ở phần lisp này thì ý em là: Một đối tượng có màu bất kỳ, em muốn chuyển nó thành màu khác, ví dụ nếu muốn chuyển màu từ 1-9 thì em gõ tuơng ứng 1,..9 là xong, Còn nếu muốn chuyển nó thành màu 10,11,12..250 chẳng hạn. thì bình thường mình cũng có thể làm đoạn lisp gõ tuơng ứng 10,11,..250 nhưng em muốn là Nếu màu mình muốn chuyển sang là màu 10...250 thì mình gõ lệnh 10 trước, sau đó nó sẽ hỏi mình là mình muốn chuyển sang màu bao nhiêu. Lúc đó giả sử mình muốn sang màu 100 thì mình gõ tiếp 100 đó ạ.

Em dùng quen theo kiểu đó rồi nên không muốn chuyển thành kiểu khác thôi.

Bác thử cái lisp em post lên thì chắc sẽ hiểu ý em muốn nói.

Cảm ơn Bác gia_bach nhiều ạ

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ảm ơn Bác gia_bach đã quan tâm.

Trước tiên cho em xin lỗi vì hình minh họa có sự nhầm lẫn.

1- Số ở đường dim lẻ vẫn phải là 5100 chứ không phải 5010. Ý của em là thế này.Giả sử mà số đường dim đo được (5000 chẳng hạn) chia hết cho số bước thép (ở đây là 200 chẳng hạn) thì khi mình gõ lệnh BT rồi chọn đường dim thì nó sẽ được 5000/200=25 (và hiện là 25x200=5000) khoảng bước thép. Còn giả sử số trên đường dim (nếu là 5100) không chia hết cho bước thép (bước 200) thì sau khi gõ lệnh BT vẫn chia ra số khoảng bước thép như thường, nhưng thay vì hiện là 25.5x200=5100 thì chỉ hiện phần nguyên của kết quả (ngầm định là 5100/200=25.5, nhưng chỉ hiện là 25x200=5100). Vậy thôi ạ

2- Ở phần lisp này thì ý em là: Một đối tượng có màu bất kỳ, em muốn chuyển nó thành màu khác, ví dụ nếu muốn chuyển màu từ 1-9 thì em gõ tuơng ứng 1,..9 là xong, Còn nếu muốn chuyển nó thành màu 10,11,12..250 chẳng hạn. thì bình thường mình cũng có thể làm đoạn lisp gõ tuơng ứng 10,11,..250 nhưng em muốn là Nếu màu mình muốn chuyển sang là màu 10...250 thì mình gõ lệnh 10 trước, sau đó nó sẽ hỏi mình là mình muốn chuyển sang màu bao nhiêu. Lúc đó giả sử mình muốn sang màu 100 thì mình gõ tiếp 100 đó ạ.

Em dùng quen theo kiểu đó rồi nên không muốn chuyển thành kiểu khác thôi.

Bác thử cái lisp em post lên thì chắc sẽ hiểu ý em muốn nói.

Cảm ơn Bác gia_bach nhiều ạ

Cái đổi màu thì như này:

(defun c:10 ()

(command ".chprop" (ssget) "" "color" (acad_colordlg 7) "")

(princ))

  • 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

Chào các anh (Chị)

Em xin nhờ các anh (chị) viết hộ 2 đoạn lisp như sau:

1. Lisp ghi bước thép, Em có một đường kích thước đo khoảng cách giữa các thanh thép. Giả sử là 1500. Bây giờ em muốn ghi bước thép cho đường đó, giả sử bước thép là 150 thì sau ghi bước thép sẽ là 10x150=1500. (Xem hình minh họa).

2. Lisp đổi màu đối tượng từ màu 10 trở lên. Click chọn đối tượng, gõ "10" sao đó gõ màu cần chuyển.

Em có một FIle lisp VLX có thể làm được 2 việc này rồi nhưng trong file đó có nhiều lệnh trùng với các lisp khác của em nên em không kiểm soát được. Nhờ các anh (chị) giúp đỡ.

http://www.cadviet.c..._minh_hoa_1.dwg

http://www.cadviet.c..._04pc1lsp_2.rar

Quick code cho Câu 1 :


(defun c:BT(/ ss i ename bthep)
(setq bthep (getreal "\nNhap buoc thep :"))
 (princ "\n Chon DIMENSION :")
 (if (setq ss (ssget '((0 . "DIMENSION"))))
   (progn (setq i -1) 
   (while (setq ename (ssname ss (setq i (1+ i))))
     (command "dimedit"  "n" (strcat (itoa (fix (/ (atoi (rtos (cdr(assoc 42 (entget ename))) 2 0)) bthep)) )
	"x" (rtos bthep 2 0) "=<>") ename "" )
   )
 )))

  • Vote tăng 2

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 này không khó, nhưng khó là nằm ở chỗ bạn muốn "tách" nó ra từ file .vlx người chuyển lisp thành file này có 2 mục đích là đóng gói các lisp lại cho gọn, thứ 2 là ko để ai chỉnh sữa hay xem gì trong đó được.

Nếu bạn yêu cầu viết lisp mới thì có lẽ đã có nhiều cao thủ nhảy vào 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

Cảm ơn các bác nhiều nhé. Có một vài chỗ em nhờ các bác sửa giúp như sau:

1- Lisp chuyển màu đối tượng. bác duy782006 có thể sửa giúp em là khi mình gõ 10 thì nó chỉ hiện lên dòng "Chon mau can chuyen:" rồi gõ tiếp số để chuyển màu thôi chứ không hiện lên cái bảng màu được không ạ?

2-Lisp bước thép thì em nhờ bác Tue_NV thế này:

- Lisp sẽ hỏi bước thép là bao nhiêu trước rồi chọn đường dim sau

- Bác kiểm tra lại giúp em, khi em thử lệnh BT(giả sử với đường dim có text dim là 4500, bước thép 500 thì sau khi bt lúc nó ra là 9x500=4500, lúc khác lại ra 8x4500=4500).

http://www.cadviet.com/upfiles/3/103883_hinh_minh_hoa_2.dwg

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ảm ơn các bác nhiều nhé. Có một vài chỗ em nhờ các bác sửa giúp như sau:

.......

2-Lisp bước thép thì em nhờ bác Tue_NV thế này:

- Lisp sẽ hỏi bước thép là bao nhiêu trước rồi chọn đường dim sau

- Bác kiểm tra lại giúp em, khi em thử lệnh BT(giả sử với đường dim có text dim là 4500, bước thép 500 thì sau khi bt lúc nó ra là 9x500=4500, lúc khác lại ra 8x4500=4500).

http://www.cadviet.c..._minh_hoa_2.dwg

Đã sửa code Lisp ở bài viết trên của Tue_NV

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

Đã sửa code Lisp ở bài viết trên của Tue_NV

- Bác có thể sửa giúp em thành nhập bước thép trước, rồi chọn dimension sau với ạ

- Bác có thể sửa luôn đoạn lisp đổi màu giống ý em nói được không ạ, chắc bác duy782006 lại bận đi đâu đó rồi.

Cảm ơn các bác nhiều ạ!

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ác có thể sửa giúp em thành nhập bước thép trước, rồi chọn dimension sau với ạ

- Bác có thể sửa luôn đoạn lisp đổi màu giống ý em nói được không ạ, chắc bác duy782006 lại bận đi đâu đó rồi.

Cảm ơn các bác nhiều ạ!

Thêm 1 phương án :

(defun C:bt(/ ctc ss)
 (or *ctc* (setq *ctc* 200))
 (initget 6)
 (setq ctc (getint (strcat"\nNhap buoc thep <" (itoa *ctc*) ">:")) )
 (if ctc (setq *ctc* ctc))
 (if (setq ss (ssget"_:L" (list (cons 0 "DIMENSION")) ))
(progn
 	(command "_.undo" "_begin")     
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-TextOverride (vlax-ename->vla-object ent)
  (strcat (itoa (fix(/ (cdr (assoc 42 (entget ent))) *ctc*)))
"x" (itoa *ctc*) "=<>"))	)
 	(command "_.undo" "_end") (princ)  )))
(defun C:10(/ num ss)
 (if (setq ss (ssget"_:L"))
(progn
 	(command "_.undo" "_begin")
 	(or *num* (setq *num* 15))
 	(initget 4)
 	(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) )
 	(while (not (if num (<= num 256)T) )
(princ "\nGia tri <=256.")
(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) ))
 	(if num (setq *num* num))
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-Color (vlax-ename->vla-object ent)*num* )	)
 	(command "_.undo" "_end") (princ)  )))

  • Vote tăng 2

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

Thêm 1 phương án :

(defun C:bt(/ ctc ss)
 (or *ctc* (setq *ctc* 200))
 (initget 6)
 (setq ctc (getint (strcat"\nNhap buoc thep <" (itoa *ctc*) ">:")) )
 (if ctc (setq *ctc* ctc))
 (if (setq ss (ssget"_:L" (list (cons 0 "DIMENSION")) ))
(progn
 	(command "_.undo" "_begin")    
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-TextOverride (vlax-ename->vla-object ent)
  (strcat (itoa (fix(/ (cdr (assoc 42 (entget ent))) *ctc*)))
"x" (itoa *ctc*) "=<>"))	)
 	(command "_.undo" "_end") (princ)  )))
(defun C:10(/ num ss)
 (if (setq ss (ssget"_:L"))
(progn
 	(command "_.undo" "_begin")
 	(or *num* (setq *num* 15))
 	(initget 4)
 	(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) )
 	(while (not (if num (<= num 256)T) )
(princ "\nGia tri <=256.")
(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) ))
 	(if num (setq *num* num))
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-Color (vlax-ename->vla-object ent)*num* )	)
 	(command "_.undo" "_end") (princ)  )))

 

Đoạn lisp chuyển màu của bác gia_bach như thế là đúng ý em rồi.

Đoạn lisp BT của bác gia_bach em thử thì cũng bị giống như đoạn lisp BT của bác Tue_NV trước khi sửa thì phải, bác gia_bach xem lại có phải thế không giúp em nhé. Đoạn lisp BT của bác Tue_NV sau khi sửa em thấy ổn rồi ạ. nhưng nếu có thể bác sửa giúp em thêm thành:

- Lưu giá trị của bước thép lần lệnh trước để nếu lần sau vẫn là bước đó mình đỡ phải gõ lại.

- Khi click vào đường kích thước thì sẽ tự chuyển sang dạng "5x500=2500" luôn chứ không cần Enter lần nữa

Cảm ơn tất cả các bác đã quan tâm giúp đỡ.

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ảm ơn các bác nhiều nhé. Có một vài chỗ em nhờ các bác sửa giúp như sau:

1- Lisp chuyển màu đối tượng. bác duy782006 có thể sửa giúp em là khi mình gõ 10 thì nó chỉ hiện lên dòng "Chon mau can chuyen:" rồi gõ tiếp số để chuyển màu thôi chứ không hiện lên cái bảng màu được không ạ?

2-Lisp bước thép thì em nhờ bác Tue_NV thế này:

- Lisp sẽ hỏi bước thép là bao nhiêu trước rồi chọn đường dim sau

- Bác kiểm tra lại giúp em, khi em thử lệnh BT(giả sử với đường dim có text dim là 4500, bước thép 500 thì sau khi bt lúc nó ra là 9x500=4500, lúc khác lại ra 8x4500=4500).

http://www.cadviet.c..._minh_hoa_2.dwg

Sửa thì các bác khác sửa rồi nhưng mình thấy bạn quá chăm bẳm vào ý cứng nhắc mà ko biết rằng nó hiện cái bảng cho chuyên nghiệp chơi chứ bạn cứ gỏ số rồi enter như thường là nó đã được 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

Sửa thì các bác khác sửa rồi nhưng mình thấy bạn quá chăm bẳm vào ý cứng nhắc mà ko biết rằng nó hiện cái bảng cho chuyên nghiệp chơi chứ bạn cứ gỏ số rồi enter như thường là nó đã được rồi.

Chào bác duy782006

Em viết cái đoạn đó không có ý gì đâu mà. Chẳng qua là vì em dùng theo kiểu kia quen rồi thôi chứ không có gì cả. Đoạn lisp của bác ngắn gọn, dễ dùng nhưng em lại chưa quen kiểu đó thôi.

Cảm ơn bác đã nhắ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

Thêm 1 phương án :

(defun C:bt(/ ctc ss)
 (or *ctc* (setq *ctc* 200))
 (initget 6)
 (setq ctc (getint (strcat"\nNhap buoc thep <" (itoa *ctc*) ">:")) )
 (if ctc (setq *ctc* ctc))
 (if (setq ss (ssget"_:L" (list (cons 0 "DIMENSION")) ))
(progn
 	(command "_.undo" "_begin")    
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-TextOverride (vlax-ename->vla-object ent)
  (strcat (itoa (fix(/ (cdr (assoc 42 (entget ent))) *ctc*)))
"x" (itoa *ctc*) "=<>"))	)
 	(command "_.undo" "_end") (princ)  )))
(defun C:10(/ num ss)
 (if (setq ss (ssget"_:L"))
(progn
 	(command "_.undo" "_begin")
 	(or *num* (setq *num* 15))
 	(initget 4)
 	(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) )
 	(while (not (if num (<= num 256)T) )
(princ "\nGia tri <=256.")
(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) ))
 	(if num (setq *num* num))
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-Color (vlax-ename->vla-object ent)*num* )	)
 	(command "_.undo" "_end") (princ)  )))

 

Chào bác giabach, bác có thể thêm phần lựa chọn "thêm 1 thanh, bớt 1 thanh hoặc giữ nguyên giá trị" trước khi tính toán được không?

- Khi tính toán thêm hàm làm tròn (Round) giống như excel được không vậy, Lisp rất tiện lợi, thanks bác nhiều

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

Thêm 1 phương án :

(defun C:bt(/ ctc ss)
 (or *ctc* (setq *ctc* 200))
 (initget 6)
 (setq ctc (getint (strcat"\nNhap buoc thep <" (itoa *ctc*) ">:")) )
 (if ctc (setq *ctc* ctc))
 (if (setq ss (ssget"_:L" (list (cons 0 "DIMENSION")) ))
(progn
 	(command "_.undo" "_begin")    
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-TextOverride (vlax-ename->vla-object ent)
  (strcat (itoa (fix(/ (cdr (assoc 42 (entget ent))) *ctc*)))
"x" (itoa *ctc*) "=<>"))	)
 	(command "_.undo" "_end") (princ)  )))
(defun C:10(/ num ss)
 (if (setq ss (ssget"_:L"))
(progn
 	(command "_.undo" "_begin")
 	(or *num* (setq *num* 15))
 	(initget 4)
 	(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) )
 	(while (not (if num (<= num 256)T) )
(princ "\nGia tri <=256.")
(setq num (getint (strcat"\nNhap color <" (itoa *num*) ">:")) ))
 	(if num (setq *num* num))
 	(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-put-Color (vlax-ename->vla-object ent)*num* )	)
 	(command "_.undo" "_end") (princ)  )))

Bác gia_bach ơi bác có thể xem giúp em đoạn lisp trên với. Em mới cài Cad 2008 và khi ghi bước thép cũng như khi đổi màu đối tượng thì nó báo lỗi. Kiểu như sau:

 

Command: bt

 

Nhap buoc thep <200>:

 

Select objects: 1 found

 

Select objects: _.undo Current settings: Auto = On, Control = All, Combine =

Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: _begin

Command: ; error: no function definition: VLAX-ENAME->VLA-OBJECT

Em không biết nó là lỗi gì. Bác xem giúp em với nhé.

Thanks bác nhiều.

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ào bác giabach, bác có thể thêm phần lựa chọn "thêm 1 thanh, bớt 1 thanh hoặc giữ nguyên giá trị" trước khi tính toán được không?

- Khi tính toán thêm hàm làm tròn (Round) giống như excel được không vậy, Lisp rất tiện lợi, thanks bác nhiều

Bác nào ra tay giúp e với, e đang cần chương trình này, thanks các 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

bước thép: http://www.cadviet.c...pic=205&st=1940

color: http://www.cadviet.c...32649_color.lsp

Bạn tìm đi, chứ có sẵn thì dùng, đủ yêu cầu của bạn đó, lisp kia bỏ đi!!!

Em chào các bác. Sau khi download và thử các đoạn lisp mà các bác giúp đỡ. Em thấy đoạn lisp sau đây của bác Tue_NV (đã viết từ lâu mà nhờ ý kiến của bác Amatuerday em mới tìm ra) là phù hợp với em nhất. Có điều là cứ thi thoảng em lại phải dùng lại lệnh này một lần, và bước thép thì cũng rất hay giống nhau. Vậy nên em nhờ các bác bổ sung giúp em thành có lưu bước thép của lần lệnh trước để lần sau nếu giống thì chỉ cần Enter tiếp là xong, đỡ phải mất công gõ lại lần nữa ạ. Em xin cảm ơn các bác nhiều!

Đây là đoạn lisp của bác Tue_NV:

http://www.cadviet.com/upfiles/3/110072_bu.lsp

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 chào các bác. Sau khi download và thử các đoạn lisp mà các bác giúp đỡ. Em thấy đoạn lisp sau đây của bác Tue_NV (đã viết từ lâu mà nhờ ý kiến của bác Amatuerday em mới tìm ra) là phù hợp với em nhất. Có điều là cứ thi thoảng em lại phải dùng lại lệnh này một lần, và bước thép thì cũng rất hay giống nhau. Vậy nên em nhờ các bác bổ sung giúp em thành có lưu bước thép của lần lệnh trước để lần sau nếu giống thì chỉ cần Enter tiếp là xong, đỡ phải mất công gõ lại lần nữa ạ. Em xin cảm ơn các bác nhiều! Đây là đoạn lisp của bác Tue_NV: http://www.cadviet.com/upfiles/3/110072_bu.lsp

Hề hề hề,

Bạn hãy tự chỉnh như sau, thay dòng code (setq BT (getint "\n Buoc @:") ) thành doạn code sau:

 

(if (not BT)

(setq BT (getint "\n Buoc @:") )

(progn

(setq ans (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: "))

(if (= (strcase ans) "Y")

(setq BT (getint "\n Buoc @:") )

)

)

)

 

Chúc bạn 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

Hề hề hề,

Bạn hãy tự chỉnh như sau, thay dòng code (setq BT (getint "\n Buoc @:") ) thành doạn code sau:

 

(if (not BT)

(setq BT (getint "\n Buoc @:") )

(progn

(setq ans (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: "))

(if (= (strcase ans) "Y")

(setq BT (getint "\n Buoc @:") )

)

)

)

 

Chúc bạn thành công.

Cảm ơn bác Phamthanhbinh.Em làm được theo cách bác gợi ý rồi nhưng ý em muốn là thế này ạ: Lần một mình gõ BU, lisp hỏi bước @: và mình gõ 150 (ví dụ bước 150). Lần 2 mình gõ Bu, Lisp hỏi bước@: nhưng trong "cái ô trắng trắng" để mình gõ bước thép mới vào ấy, nó hiện lên cái số 150 của lần lệnh trước. Nếu lần 2 mình vẫn ghi bước 150 thì mình Enter là xong, nếu bước khác thì mình gõ bước mới vào thay chỗ đó. bác giúp em với nhé. Cảm ơn bác một lần nữ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ảm ơn bác Phamthanhbinh.Em làm được theo cách bác gợi ý rồi nhưng ý em muốn là thế này ạ: Lần một mình gõ BU, lisp hỏi bước @: và mình gõ 150 (ví dụ bước 150). Lần 2 mình gõ Bu, Lisp hỏi bước@: nhưng trong "cái ô trắng trắng" để mình gõ bước thép mới vào ấy, nó hiện lên cái số 150 của lần lệnh trước. Nếu lần 2 mình vẫn ghi bước 150 thì mình Enter là xong, nếu bước khác thì mình gõ bước mới vào thay chỗ đó. bác giúp em với nhé. Cảm ơn bác một lần nữa ạ.

Hề hề hề,

Sorry, bạn sửa (setq ans (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: ")) thành

(setq ans (getstring (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: "))) hoặc sửa cả đoạn code trên thành:

(if (not BT)

(setq BT (getint "\n Buoc @:") )

(progn

(setq ans (getint (strcat "\n < " (itoa BT) ">: ")))

(if (/= ans nil)

(setq BT ans)

)

)

)

  • 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

Hề hề hề,

Sorry, bạn sửa (setq ans (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: ")) thành

(setq ans (getstring (strcat "\n Buoc thep hien tai là " (itoa BT) ". Ban co muon thay doi hay khong <Y or N>: "))) hoặc sửa cả đoạn code trên thành:

(if (not BT)

(setq BT (getint "\n Buoc @:") )

(progn

(setq ans (getint (strcat "\n < " (itoa BT) ">: ")))

(if (/= ans nil)

(setq BT ans)

)

)

)

Bác xem file ảnh em gửi kèm sau đây xem ý em như thế thì phải viết lệnh thế nào nhé. chỉ cần gõ bước mới hoặc Enter thôi chứ không cần hỏi thêm gì nữa ạ. 110072_bt.jpgCảm ơn bác nhiều!

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ác xem file ảnh em gửi kèm sau đây xem ý em như thế thì phải viết lệnh thế nào nhé. chỉ cần gõ bước mới hoặc Enter thôi chứ không cần hỏi thêm gì nữa ạ. Cảm ơn bác nhiều!

Hề hề hề, Mình dùng CAD cùi nên không có cái ô trắng trắng như bạn để test. bạn dùng phương án 2 mình đưa coi có được khô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

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


×