Jump to content
InfoFile
Tác giả: thiep
Bài viết gốc: 75637
Tên lệnh: chattcsv
Edit trực tiếp text Attribute trong block

Trong khi chờ đợi Thaistreet, các bạn dùng ví dụ về file *.csv này thử:
http://www.cadviet.com/upfiles/2/ttattribute.zip
trong file *.csv này có 6 hàng dữ liệu tương ứng với 6 blockref, các bạn copy block khungten thêm 5 nữa,
Khi lisp yêu cầu: Select objects, các bạn dùng chế độ chọn là fence "f", làm như vậy để đối tượng nào dính fence trước sẽ được lisp xử lý trước,
Còn đây là...
>>

Trong khi chờ đợi Thaistreet, các bạn dùng ví dụ về file *.csv này thử:
http://www.cadviet.com/upfiles/2/ttattribute.zip
trong file *.csv này có 6 hàng dữ liệu tương ứng với 6 blockref, các bạn copy block khungten thêm 5 nữa,
Khi lisp yêu cầu: Select objects, các bạn dùng chế độ chọn là fence "f", làm như vậy để đối tượng nào dính fence trước sẽ được lisp xử lý trước,
Còn đây là file lisp:
Chúc các bạn thành công!!!
<<

Filename: 75637_chattcsv.lsp
Tác giả: pdle
Bài viết gốc: 196056
Tên lệnh: kt
Lưu file

Cảm ơn anh ketxu. Dùng findfile được lisp như sau:

(defun c:kt ( / link fina)
(
setq fina (vl-filename-base (getvar "dwgname"))
link "C:\\Users\\pdle\\Desktop\\Technoinox\\Corrected\\"
link (strcat link fina ".dwg")
)
(while (findfile link) (setq link (strcat (substr link 1 (- (strlen link) 4)) "-x.dwg")))
(command "saveas" "2004" link)
(princ)
)

Filename: 196056_kt.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196095
Tên lệnh: ha
(yêu cầu) lisp vẽ cung tròn với diện tích biết trước
Cái này muốn tính đến sai số bao nhiêu cũng được (/=0), chỉ tích tắc:

Filename: 196095_ha.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 49919
Tên lệnh: scc
Viết Lisp theo yêu cầu

Chào bạn Ui_troi_2005,
Bạn thử xài cái này xem nhé.

Đoạn lisp trên sẽ scale tất cả các đối tượng có trên bản vẽ của bạn với tâm scale là 0,0 và tỉ lệ scale là 0.5.
Nếu bạn muốn scale không phải tất cả các đối tượng trên bản vẽ thì có thể sử dụng hàm ssget với các tham số khác nhau của nó tùy theo ý bạn.
Nếu muốn chọn tâm scale khác bạn sử dụng hàm...
>>

Chào bạn Ui_troi_2005,
Bạn thử xài cái này xem nhé.

Đoạn lisp trên sẽ scale tất cả các đối tượng có trên bản vẽ của bạn với tâm scale là 0,0 và tỉ lệ scale là 0.5.
Nếu bạn muốn scale không phải tất cả các đối tượng trên bản vẽ thì có thể sử dụng hàm ssget với các tham số khác nhau của nó tùy theo ý bạn.
Nếu muốn chọn tâm scale khác bạn sử dụng hàm '( x y) với x ,y là tọa độ điểm bạn muốn hoặc sử dụng hàm (getpoint) để nhập điểm bạn muốn.
Nếu muốn thay đổi tỷ lệ scale, bạn nhập tỷ lệ đó vào vị trí của số 0.5 trong lisp.

Chúc bạn thành công.
<<

Filename: 49919_scc.lsp
Tác giả: pdle
Bài viết gốc: 196199
Tên lệnh: lbl
Không explode toàn bộ chọn được một lúc
Em có lisp sau:

(defun c:lbl (/ ss)
(
setq ss(ssget "_X" (list (cons 0 "INSERT") (cons 8 "0,ff" )))
)
(command "explode" ss )
(princ)
)


Nhưng khi thực hiện lệnh, mặc dù ss có bao nhiêu object đi nữa thì kết quả cũng chỉ có 1 block bị explode.

Lỗi ở đâu?

http://www.cadviet.com/upfiles/3/64291_drawing1.dwg

Filename: 196199_lbl.lsp
Tác giả: ketxu
Bài viết gốc: 196217
Tên lệnh: ch
Chỉnh sửa nhanh Scale Hatch, đổi nhanh nhiều góc cho hàng loạt hatch
Chỉnh scale hay chỉnh góc bạn :) ?

P/s :

(defun c:ch(/ a c)
(vl-load-com)
(if (and
(ssget (list (cons 0 "HATCH")))
(setq a (getangle "\nGoc cong them :"))
(setq c (getreal "\nScale moi :"))
)
(vlax-for object (vla-get-ActiveSelectionSet (vla-get-ActiveDocument...
>>
Chỉnh scale hay chỉnh góc bạn :) ?

P/s :

(defun c:ch(/ a c)
(vl-load-com)
(if (and
(ssget (list (cons 0 "HATCH")))
(setq a (getangle "\nGoc cong them :"))
(setq c (getreal "\nScale moi :"))
)
(vlax-for object (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (wcmatch (vla-get-ObjectName object) "AcDbHatch")
(or
(vla-put-PatternAngle object (+ (vla-get-PatternAngle object) a))
(vla-put-PatternScale object c)
)
)
)
)
)

<<

Filename: 196217_ch.lsp
Tác giả: Tue_NV
Bài viết gốc: 45139
Tên lệnh: dtl
Viết Lisp theo yêu cầu


Hy vọng đoạn Code này chạy theo đúng ý của bạn :
Tên lệnh là DTL

Chúc thành công. :cheers:

Filename: 45139_dtl.lsp
Tác giả: ketxu
Bài viết gốc: 196224
Tên lệnh: ch
Chỉnh sửa nhanh Scale Hatch, đổi nhanh nhiều góc cho hàng loạt hatch

À quên. lúc đầu mình để chọn tạp nham nên phải kiểm tra nó là Hatch hay không, cho vào Filter của ssget rồi thì thôi k kiểm tra nữa, bạn sửa lại như này cho gọn :

(defun c:ch(/ a c)
(vl-load-com)
(if (and
(ssget (list (cons 0 "HATCH")))
(setq a (getangle "\nGoc cong them :"))
(setq c (getreal "\nScale moi :"))
)
(vlax-for object (vla-get-ActiveSelectionSet...
>>
À quên. lúc đầu mình để chọn tạp nham nên phải kiểm tra nó là Hatch hay không, cho vào Filter của ssget rồi thì thôi k kiểm tra nữa, bạn sửa lại như này cho gọn :

(defun c:ch(/ a c)
(vl-load-com)
(if (and
(ssget (list (cons 0 "HATCH")))
(setq a (getangle "\nGoc cong them :"))
(setq c (getreal "\nScale moi :"))
)
(vlax-for object (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-put-PatternAngle object (+ (vla-get-PatternAngle object) a))
(vla-put-PatternScale object c)
)
)
)

Nên kết hợp Fi hoặc Qs để chọn ra Hatch mình cần trước rồi dùng lệnh cũng đc :)
<<

Filename: 196224_ch.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196243
Tên lệnh: ha
thay đổi chiều cao text

Nếu thích lisp thì thử cái này xem!

Filename: 196243_ha.lsp
Tác giả: pdle
Bài viết gốc: 196253
Tên lệnh: lbl
Không explode toàn bộ chọn được một lúc


1.Hay quá. Mà sao em tìm trong system variables của help không có biến qaflags nhỉ :D

2.Em đã sửa lại lisp như sau:

(defun c:lbl (/ ss oldqa)

(
setq ss(ssget "_X" (list (cons 0 "INSERT") (cons 8 "0,ff" )))
oldqa (getvar "qaflags")
)
(setvar...
>>


1.Hay quá. Mà sao em tìm trong system variables của help không có biến qaflags nhỉ :D

2.Em đã sửa lại lisp như sau:

(defun c:lbl (/ ss oldqa)

(
setq ss(ssget "_X" (list (cons 0 "INSERT") (cons 8 "0,ff" )))
oldqa (getvar "qaflags")
)
(setvar "qaflags" 1)
(command "explode" ss "")
(setvar "qaflags" oldqa)
(princ)
)

Nhưng không hiểu sao, tất cả các exploded objects đều nằm về trên layer "0", không liên quan đến việc layer nào đang là current cả! Tại sao lại như thế?
<<

Filename: 196253_lbl.lsp
Tác giả: Tue_NV
Bài viết gốc: 196524
Tên lệnh: andim
Xin lisp chọn dim

Cái này dùng acet viết rất nhanh
Vài dòng là xong thôi

Filename: 196524_andim.lsp
Tác giả: Tue_NV
Bài viết gốc: 196544
Tên lệnh: hdim
Xin lisp chọn dim

Thì thêm 1 lệnh nữa :rolleyes:

Filename: 196544_hdim.lsp
Tác giả: bach1212
Bài viết gốc: 196552
Tên lệnh: tgr
Lisp lọc các số sau chữ L, rồi tính tổng.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=62723&pid=193865&st=0&#entry193865
(defun C:tgr( / entlst dialst)
(princ "\nChon tat ca doi tuong can thong ke...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT") (1 . "B*#*`,L#*")))))))
(foreach ent entlst
(setq dialst (cons (atoi (phai_str (trai_str (cdr (assoc 1...
>>

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=62723&pid=193865&st=0&#entry193865
(defun C:tgr( / entlst dialst)
(princ "\nChon tat ca doi tuong can thong ke...")
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT") (1 . "B*#*`,L#*")))))))
(foreach ent entlst
(setq dialst (cons (atoi (phai_str (trai_str (cdr (assoc 1 (entget ent))) ",") "B")) dialst)))
(setq dialst (vl-sort dialst '<))
(foreach dia dialst
(princ (strcat "\nB" (itoa dia) " = " (rtos (HA dia entlst) 2 2)))
(princ)))
(defun HA(dia lstent) ;muon code cua Ketxu. Thanks!
(apply '+ (mapcar '(lambda(x) (atof (if (wcmatch (acet-dxf 1 (entget x)) (strcat "B" (itoa dia) "`,L*")) (phai_str (acet-dxf 1 (entget x)) ",L") "0"))) entlst)))
(defun TRAI_STR(str str1) (if (acet-str-find str1 str) (substr str 1 (- (acet-str-find str1 str) 1))))
(defun PHAI_STR(str str1) (if (TRAI_STR str str1) (substr str (+ 1 (strlen str1) (strlen (TRAI_STR str str1))))))


4 chữ D đã được thay = 4 chữ B
Bác xem sao??
<<

Filename: 196552_tgr.lsp
Tác giả: Tue_NV
Bài viết gốc: 196610
Tên lệnh: an hien
Xin lisp chọn dim

Hay là các bạn có thể sử dụng lisp này. Viết lại 1 tý :

Cách chạy :

Command: an -> Gõ lệnh AN
Nhap ten doi tuong can An : / Enter de Pick chon doi tuong mau : LINE -> Nhập tên đối tượng cần ẩn.
Ví dụ LINE thì gõ LINE
TEXT và MTEXT có thể gõ *TEXT hoặc gõ TEXT,MTEXT
POLYLINE có thể gõ *POLYLINE
Block : gõ INSERT
DIMENSION thì gõ DIMENSION
HATCH thì gõ...
>>

Hay là các bạn có thể sử dụng lisp này. Viết lại 1 tý :

Cách chạy :

Command: an -> Gõ lệnh AN
Nhap ten doi tuong can An : / Enter de Pick chon doi tuong mau : LINE -> Nhập tên đối tượng cần ẩn.
Ví dụ LINE thì gõ LINE
TEXT và MTEXT có thể gõ *TEXT hoặc gõ TEXT,MTEXT
POLYLINE có thể gõ *POLYLINE
Block : gõ INSERT
DIMENSION thì gõ DIMENSION
HATCH thì gõ HATCH
.....
- Nếu bạn không nhớ tên thì có thể enter để chọn 1 đối tượng mẫu
- Chọn đối tượng cần giữ lại. Các đối tượng cùng "kiểu" với đối tượng không được chọn sẽ bị ẩn

Select objects: -> Chọn đối tượng cần giữ lại

Hiện lại thì gõ lệnh hien

....

Chúc vui
<<

Filename: 196610_an_hien.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196719
Tên lệnh: xyz
nút lệnh pick point từ bản vẽ.

Đây là trích từ 1 dialoge của tôi để bạn tham khảo:

Filename: 196719_xyz.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196737
Tên lệnh: dinfo%0D%0A%0D%0A%0D%0A%3B
Lấy thông tin động của từng đối tượng
Hiện nay trên Internet có rất nhiều Web hay về Lisp. Xin bắt đầu chuyên mục sưu tầm lisp hay này bằng 1 lisp của Lee Mac: lấy thông tin của từng đối tượng khi di chuyển mouse đến vị trí đối tượng.
Lisp có thể display các dạng thông tin như: LAYER, COLOR, LINETYPE, LINEWEIGHT, ALIGNMENT, AREA, CENTER, ELEVATION,
HEIGHT, LENGTH, RADIUS, ROTATION, STYLENAME, TEXTSTRING, v.v và v.v...
Hy vọng mọi người hưởng...
>>
Hiện nay trên Internet có rất nhiều Web hay về Lisp. Xin bắt đầu chuyên mục sưu tầm lisp hay này bằng 1 lisp của Lee Mac: lấy thông tin của từng đối tượng khi di chuyển mouse đến vị trí đối tượng.
Lisp có thể display các dạng thông tin như: LAYER, COLOR, LINETYPE, LINEWEIGHT, ALIGNMENT, AREA, CENTER, ELEVATION,
HEIGHT, LENGTH, RADIUS, ROTATION, STYLENAME, TEXTSTRING, v.v và v.v...
Hy vọng mọi người hưởng ứng!

<<

Filename: 196737_dinfo%0D%0A%0D%0A%0D%0A%3B...............................................................................%3B%0D%0A%0D%0A%0D%0A%0D%0A.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196762
Tên lệnh: andim
Xin lisp chọn dim

Hình như cái này:

Filename: 196762_andim.lsp
Tác giả: VUVUZELA
Bài viết gốc: 100335
Tên lệnh: tl
Tên font trong lisp
Đây bạn ơi


Filename: 100335_tl.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 196832
Tên lệnh: nbpl
Thêm node vào đường Pline

Chẳng hạn, sửa lại như thế này:

Filename: 196832_nbpl.lsp
Tác giả: Tue_NV
Bài viết gốc: 77195
Tên lệnh: dstt
Giúp mình Lisp đánh số bản vẽ này với!

Lisp đánh số theo thứ tự này Tue_NV viết đúng theo yêu cầu của bạn
gồm 2 trường hợp :
Nếu bạn chọn D : xảy ra trường hợp 1
Trường hợp 1. Số đầu tăng 1 đơn vị, chuỗi kí tự cuối cố định
Ví dụ : 1a ; 2a; 3a
Command: dstt
Ban muon danh so tang dan o vi tri dau hay cuoi : D

Danh so bat dau :1

Danh ki tu ket thuc :a

Nếu bạn...
>>

Lisp đánh số theo thứ tự này Tue_NV viết đúng theo yêu cầu của bạn
gồm 2 trường hợp :
Nếu bạn chọn D : xảy ra trường hợp 1
Trường hợp 1. Số đầu tăng 1 đơn vị, chuỗi kí tự cuối cố định
Ví dụ : 1a ; 2a; 3a
Command: dstt
Ban muon danh so tang dan o vi tri dau hay cuoi : D

Danh so bat dau :1

Danh ki tu ket thuc :a

Nếu bạn chọn C : xảy ra trường hợp 2
Trường hợp 2. chuỗi kí tự đầu cố định, Số cuối tăng 1 đơn vị,
Ví dụ : 1.1.1-->1.1.2
Command: dstt
Ban muon danh so tang dan o vi tri dau hay cuoi :C
Danh ki tu bat dau : 1.1.

Danh so ket thuc :1
Các trường hợp khác của bạn tự suy luận sẽ ra cách đánh số thứ tự (không có vấn đề gì cả) vì Lisp trên Tue_NV đã viết theo trường hợp tổng quát rồi
Bạn chú ý rằng TextStyle lấy theo style hiện hành đấy nhé :
Code đây :

Trường hợp bạn sử dụng chức năng download Lisp file của DD mà không được thì hãy nhấn nút Reply bài viết này của Tue_NV -> chép hết code về sử dụng nhé.
<<

Filename: 77195_dstt.lsp

Trang 86/330

86