Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
10 replies to this topic

#1 loliloli62

loliloli62

    biết zoom

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

Đã gửi 06 May 2014 - 07:26 PM

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!


  • 0

#2 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 06 May 2014 - 07:34 PM

Bạn phải viết là (C:Tcircle)


  • 1

#3 loliloli62

loliloli62

    biết zoom

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

Đã gửi 07 May 2014 - 07:50 AM

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


  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 May 2014 - 09:29 AM

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


#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 May 2014 - 11:39 AM

(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.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#6 loliloli62

loliloli62

    biết zoom

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

Đã gửi 07 May 2014 - 03:07 PM

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

  • 0

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 May 2014 - 03:24 PM

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.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 muacauvong

muacauvong

    biết pan

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

Đã gửi 07 May 2014 - 03:26 PM

làm sao mình đăng bài nên hè???


  • 0

#9 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 07 May 2014 - 07:23 PM

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

  • 1

#10 loliloli62

loliloli62

    biết zoom

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

Đã gửi 07 May 2014 - 09:01 PM

Đúng là cái em đang cần

 

Nhưng mà chưa hiểu cách làm, ngày mai sẽ nghiên cứu tiếp, giờ này em đang ở công ty vì cay cú nó nè!


  • 0

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 08 May 2014 - 03:55 AM

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

  • 1