Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 nqdattanphat

nqdattanphat

    Chưa sử dụng CAD

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

Đã gửi 27 January 2008 - 05:20 PM

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

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 27 January 2008 - 09:55 PM

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
)

  • 0

#3 acad_mem

acad_mem

    biết zoom

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

Đã gửi 31 January 2008 - 03:05 PM

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