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

Đưa lệnh của express tool vào Lisp

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

Em viết đoạn Lisp chứa lệnh Tcircle nhưng đến lệnh này thì Cad báo Unknown command "tcircle"

 

Em không hiểu vì sao lại như vậy, vì vẫn đang sử dụng lệnh Tcircle bình thường

 

Các cao thủ giúp em với, em cảm ơn 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 anh! Em đã gọi được hàm TCIRCLE nhưng mà không biết cách điền thêm các đối số phía sau lệnh như thế nào

 

Anh có thể hướng dẫn em đượ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

(bns_tcircle ss rad ent slot offset)

Các hàm sử dụng đều nằm trong file acettxt.lsp, bạn vào đó để biết ý nghĩa và khai thác nhiều hàm hơn nữa.

  • 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

(bns_tcircle ss rad ent slot offset)

Các hàm sử dụng đều nằm trong file acettxt.lsp, bạn vào đó để biết ý nghĩa và khai thác nhiều hàm hơn nữa.

Bổ sung thêm:

Để sử dụng được hàm trên thì:

- Hoặc lệnh TCIRCLE đã được dùng ít nhất 1 lần trước khi dùng hàm.

- Hoặc file "Acettxt.lsp" phải được load.

  • 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

Bổ sung thêm:

Để sử dụng được hàm trên thì:

- Hoặc lệnh TCIRCLE đã được dùng ít nhất 1 lần trước khi dùng hàm.

- Hoặc file "Acettxt.lsp" phải được load.

 

Bổ sung thêm:

Để sử dụng được hàm trên thì:

- Hoặc lệnh TCIRCLE đã được dùng ít nhất 1 lần trước khi dùng hàm.

- Hoặc file "Acettxt.lsp" phải được load.

 

Cảm ơn anh! Lệnh TCIRCLE em đang xài bình thường, giờ muốn rút ngắn lại vì em chỉ muốn vẽ hình chữ nhật bao quanh text với 1 giá trị offset là 0.35 thôi.

 

 

(bns_tcircle ss rad ent slot offset)

Các hàm sử dụng đều nằm trong file acettxt.lsp, bạn vào đó để biết ý nghĩa và khai thác nhiều hàm hơn nữa.

 

Em mày mò mãi mà không biết nhập đối số thế nào cả, nếu mà lệnh cad bình thường thì đoạn mã em cần sẽ như sau:

 

(command "tcircle" 0.35 "r" "v")

 

Em viết được 1 lisp khác như thế này, nhưng lúc xài được, lúc thì trật lấc

 

Không hiểu lý do sao nữa

 

Mọi người giúp em với!

 

 

(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )
 
(defun c:m14 ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
   (setq na (ssname ss n)
              e1 (entget na)
               a (acet-geom-mtxtbox e1 0.35))
    (setq p1 (car a))
    (setq p2 (cadr a))
    (setq p3 (cadr (cdr a)))
    (setq p4 (cadr (cdr (cdr a))))
               
(princ a)
 (setq n (+ n 1))
        )
  ;(command "line" p1 p2 p3 p4 "c")
  (command "rectang" p1 p3)
  )

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ạn phải viết như thế này:

(bns_tcircle ss "Variable" "Rectangles" "Both" 0.35)

Trong đó: ss là tên tập chọn TEXT, MTEXT or ATTDEF.

  • 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

Nếu bạn không quen dùng hàm, hoặc không kiếm được hàm tương ứng với lệnh của express, thì có thể dùng cách này, tuy có vẻ hơi "bá đạo" nhưng kết quả vẫn tốt.


  (sssetfirst nil (ssadd (car (entsel "Chon text:")) (ssadd)))
  (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object))
    "tcircle\nl\n\n0.35\nr\nv\n")

 

Mỗi cái "\n" tương đương với 1 cái Enter.

(defun c:tmp()
  (sssetfirst nil (ssadd (car (entsel "Chon text:")) (ssadd)))
  (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object))
    "tcircle\nl\n\n0.35\nr\nv\n")
)
  • 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

Viết lại lisp trên của bac Tot77 một chút, có thể sử dụng tập chọn

(if (ssget '((0 . "*TEXT,ATTDEF")))

(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object))

    "tcircle\np\n\n0.35\nr\nv\n")

)

(if (ssget '((0 . "*TEXT,ATTDEF")))
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object))
    "tcircle\np\n\n0.35\nr\nv\n"))
)
  • 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

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


×