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

Chèn block có tên tương ứng với text

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

Chào bạn !

Bạn có thể giúp mình tạo một file autolisp với các tính năng sau:

Đọc một đoạn text trong bản vẽ và trèn vào bản vẽ các block với tên mô tả như trong đoạn text.

ví dụ. Mình có các block sau "TREE" là block của một cái cây, "CHAIR" là block của một cái ghế

 

vậy nếu nhập vào một đoạn text là "TREE CHAIR" thì nó insert 2 block tương ứng vơi khoảng cách có sẵn trong file autolisp

 

Cám ơn bạ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
Chào bạn !

Bạn có thể giúp mình tạo một file autolisp với các tính năng sau:

Đọc một đoạn text trong bản vẽ và trèn vào bản vẽ các block với tên mô tả như trong đoạn text.

ví dụ. Mình có các block sau "TREE" là block của một cái cây, "CHAIR" là block của một cái ghế

 

vậy nếu nhập vào một đoạn text là "TREE CHAIR" thì nó insert 2 block tương ứng vơi khoảng cách có sẵn trong file autolisp

 

Cám ơn bạn nhiều

 

Lệnh là T2B (text to block)

 

(defun c:T2B()
 (sudung chen (ssget '((0 . "TEXT"))))
 (princ)
)
(defun chen(ent)
 (setq
   tt (entget ent)
   gt (cdr (assoc 1 tt))
   p  (cdr (assoc 10 tt))
   gtht (strcat " " gt)
   len (strlen gtht)
   i  len    
   tt (vl-remove (assoc 1 tt) tt)
   tt (vl-remove (assoc -1 tt) tt)
   tt (vl-remove (assoc 330 tt) tt)
 )
 (repeat len
   (if (= " " (substr gtht i 1))
     (progn
       (setq
  cst (substr gtht (1+ i))
  gtht (substr gtht 1 (1- i))	  
)
(if (tblsearch "block" cst)
  (progn
    (setq
      box (textbox (cons (cons 1 (strcat gtht " ")) tt))
      pc  (mapcar '+ (cadr box) p)	      
    )
    (entmake (list (cons 0 "INSERT") (cons 10 pc) (cons 2 cst)))
  )
)  
     )
   )
   (setq i (1- i))
 )
)
(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (cond
	(ss (sslength ss))
	(t 0)
      )
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)

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

Bạn có thể giúp mình tạo một file autolisp với các tính năng sau:

Đọc một đoạn text trong bản vẽ và trèn vào bản vẽ các block với tên mô tả như trong đoạn text.

ví dụ. Mình có các block sau "TREE" là block của một cái cây, "CHAIR" là block của một cái ghế

 

vậy nếu nhập vào một đoạn text là "TREE CHAIR" thì nó insert 2 block tương ứng vơi khoảng cách có sẵn trong file autolisp

 

Cám ơn bạn nhiều

 

Cái này fải có block có sắn thì mới dùng đc: chúc ngon miệng

(defun c:xxx ()

(setq ss (ssget '((0 . "TEXT"))))

(setq n 0)

(repeat (sslength ss)

(setq value (cdr (assoc 1 (entget (ssname ss n)))))

(command "-insert" value (getpoint) "" "" "")

(setq n (1+ n))

)

)

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


×