Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
26 replies to this topic

#1 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 14 June 2012 - 12:11 PM

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
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 June 2012 - 03:41 PM

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) ?
  • 0

#3 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 14 June 2012 - 04:21 PM

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 ạ
  • 0

#4 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 14 June 2012 - 04:47 PM


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))
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 14 June 2012 - 04:48 PM

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 "" )
)
)))

  • 2

#6 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 June 2012 - 04:53 PM

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
  • 0
Hình đã gửi

#7 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 14 June 2012 - 05:10 PM

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
  • 0

#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 14 June 2012 - 05:18 PM

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
  • 0

#9 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 14 June 2012 - 05:36 PM

Đã 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 ạ!
  • 0

#10 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 14 June 2012 - 05:44 PM

- 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) )))

  • 2

#11 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 14 June 2012 - 05:57 PM

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 đỡ.
  • 0

#12 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 14 June 2012 - 08:37 PM

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.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#13 vanhoatnguyen

vanhoatnguyen

    biết zoom

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

Đã gửi 15 June 2012 - 10:11 AM

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ở
  • 0

#14 amateurday

amateurday

    biết lệnh break

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

Đã gửi 15 June 2012 - 01:12 PM

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!!!
  • 1

#15 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 June 2012 - 03:07 PM

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!!!


:angry2:
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 vtd_xd

vtd_xd

    biết vẽ circle

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

Đã gửi 15 June 2012 - 06:08 PM

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
  • 0
Chuc vui ve

#17 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 23 June 2012 - 11:34 AM

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.
  • 0

#18 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 23 June 2012 - 11:51 AM

Bạn thêm dòng (vl-load-com) vào đầu lisp
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#19 vtd_xd

vtd_xd

    biết vẽ circle

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

Đã gửi 24 June 2012 - 11:15 PM


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
  • 0
Chuc vui ve

#20 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 29 June 2012 - 11:42 AM

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.c...3/110072_bu.lsp
  • 0