Đế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

#21 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 29 June 2012 - 01:59 PM

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

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

#22 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 - 03:28 PM

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

#23 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 29 June 2012 - 03:39 PM

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)
)
)
)
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#24 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 - 04:08 PM

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 ạ. Hình đã gửiCảm ơn bác nhiều!
  • 0

#25 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 29 June 2012 - 04:15 PM

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???
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#26 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 - 04:21 PM

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

Em thử theo cách 2 của bác thì được rồi. Cảm ơn bác nhiều nhiều ạ!
  • 0

#27 ksdung

ksdung

    biết pan

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

Đã gửi 29 August 2012 - 12:23 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ạn sửa giúp mình kết quả lẻ 2 số thập phân được ko, thanks bạn
  • 0