Jump to content
InfoFile
Tác giả: ketxu
Bài viết gốc: 128159
Tên lệnh: dt2
Tính diện tích - Lập bảng

- Tinh diện tích theo điểm pick - Tính cả hình bị khoét rỗng
- Lập bảng (Line, Text)




Filename: 128159_dt2.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 128279
Tên lệnh: cdc
Viết lisp theo yêu cầu [phần 2]

Hề hề hê,
Chào bạn Truongthanh,
Có phải bạn muốn thế này không???


Hề hề hề,
Bạn thông cảm vì mình không hiểu hết ý của bạn. Mình sửa như vầy thì lisp sẽ chỉ chạy đúng nếu cái text cao độ bạn chọn là Text, còn không đảm bảo đúng khi text đó là Mtext bạn nhé...
Nếu có gì chưa đúng bạn lại post lên nhé.
Chúc bạn vui.

Filename: 128279_cdc.lsp
Tác giả: shitty
Bài viết gốc: 128365
Tên lệnh: hh
Viết lisp theo yêu cầu [phần 2]

thanks bác !!!cuối cùng thì e cũng dùng được rồi...
có 1 lisp ve hatch cũng tham khảo trên diễn đàn nhưng e gà về lisp wá mong bác sửa giup với...đoạn lisp này sau khi hatch xong thi nó không tự chuyển về layer 00-09hatch và không có chế độ associative..e cũng mò thử thêm dòng (setvar "hpassoc" 1) vaf (setvar "hpgaptol" 1000.0) để có thể hatch cả miền hở nhưng bó tay
>>

thanks bác !!!cuối cùng thì e cũng dùng được rồi...
có 1 lisp ve hatch cũng tham khảo trên diễn đàn nhưng e gà về lisp wá mong bác sửa giup với...đoạn lisp này sau khi hatch xong thi nó không tự chuyển về layer 00-09hatch và không có chế độ associative..e cũng mò thử thêm dòng (setvar "hpassoc" 1) vaf (setvar "hpgaptol" 1000.0) để có thể hatch cả miền hở nhưng bó tay :)...nên phai nhờ cao thủ giúp thôi.


...!!!hok có bác nào giúp e sửa líp này với nhỉ..:)
<<

Filename: 128365_hh.lsp
Tác giả: ketxu
Bài viết gốc: 128817
Tên lệnh: hskt
Đánh số và lập bảng tọa độ hồ sơ thửa đất địa chính
Bạn à, cái này mục đích để ghi liên tiếp các vùng, không chỉ 2,mà nhiều nhiều ^^, với tiêu chí của tác giả là giải bài toán trong trường hợp tổng quát ^^ Nếu bạn muốn làm ngược lại thì cũng được thôi,nhưng liệu có nên :) Khi thực hiện lệnh xong, nếu bạn không muốn nữa thì đến chỗ nó hỏi...
>>
Bạn à, cái này mục đích để ghi liên tiếp các vùng, không chỉ 2,mà nhiều nhiều ^^, với tiêu chí của tác giả là giải bài toán trong trường hợp tổng quát ^^ Nếu bạn muốn làm ngược lại thì cũng được thôi,nhưng liệu có nên :) Khi thực hiện lệnh xong, nếu bạn không muốn nữa thì đến chỗ nó hỏi điểm đầu, bạn cứ "Cách" 1 phát là xong mà, nhẹ nhàng ^^

Còn nếu quyết tâm dùng 1 lần, thì bạn dùng tạm cái này, mình bỏ hàm lặp while đi thôi, nó sẽ chỉ chạy 1 lần là out ^^."Tạm" là vì nó còn thông báo Unknown.... do có hàm Command nào đó bị ảnh hưởng, nhưng mình nghĩ k quan trọng :)

p/s : bạn có thể cho mình biết cái lisp này bác nào viết k ? Để mình ghi vào @ ^^

<<

Filename: 128817_hskt.lsp
Tác giả: ssg
Bài viết gốc: 49896
Tên lệnh: ck
Cách vẽ giao điểm của một 3D Polyline hoặc 3D Spline với mặt cong của một khối tròn?

1. Bó tay, chưa nghĩ ra cách gì! Với lại đây cũng không phải là mục tiêu của bạn.
2. Bạn dùng thử lisp sau. Chương trình "chơi" được với mọi đối tượng 2D và 3D: line, pline, spline, arc... Muốn thay đổi độ chính xác thì thay đổi giá trị của biến fuzz:

Filename: 49896_ck.lsp
Tác giả: nataca
Bài viết gốc: 47529
Tên lệnh: %601 %602
Layout và Mod
Có thêm 2 cách nữa. Cách 1 là dùng tổ hợp phím Ctrl+PageUp và Ctrl+PageDown. Cách 2 là dùng 1 đoạn lisp ngắn với lệnh `1 và `2 (cái này ban có thể thay đổi tuỳ sở thích thói quen)

Filename: 47529_%601_%602.lsp
Tác giả: q288
Bài viết gốc: 63776
Tên lệnh: add
Giúp em Thêm dòng lệnh ?

Sửa lại như sau: Bạn copy trực tiếp các dòng dưới đây vì hình như download file add.lsp thiếu mất vài chữ.
Nhờ mod sửa dùm cái vụ thiếu chữ này.

Filename: 63776_add.lsp
Tác giả: ssg
Bài viết gốc: 43042
Tên lệnh: cc
Ghi tọa độ các lỗ cho tấm gia công CNC (lỗ khoan)

Bạn dùng tạm cái này, lệnh CC:



Ghi kết quả dạng leader không khó nhưng ssg chưa biết quy cách leader bạn thường dùng: dài, ngắn, thẳng, xiên, mũi tên hay dấu chấm... Bạn post 1 file *.dwg mẫu lên có ghi leader theo quy cách bạn muốn, ssg sẽ sửa chương trình một chút là OK.

Filename: 43042_cc.lsp
Tác giả: duy782006
Bài viết gốc: 174951
Tên lệnh: mabt
lisp đổi tên blog được chọn

Mình có cái này nhưng chỉ cho chọn 1 BLOCK để đổi thôi.
-Lệnh là: DTB



(defun c:ctb ( )
(command "undo" "be")
(setq ddd (entsel "\nChon BBLOCK muon doi ten"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon BLOCK muon doi...
>>

Mình có cái này nhưng chỉ cho chọn 1 BLOCK để đổi thôi.
-Lệnh là: DTB



(defun c:ctb ( )
(command "undo" "be")
(setq ddd (entsel "\nChon BBLOCK muon doi ten"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon BLOCK muon doi ten"))
)
(setq DT (car ddd))
(setq DTM (entget DT))
(setq TENKHOI (cdr (assoc 2 DTM)))
(setq TENBLOCKMOIDAT (getstring 5"\nNhap ten BLOCK moi:"))
(command "_BEDIT" TENKHOI "" "_BSAVEAS" TENBLOCKMOIDAT "_BCLOSE")
(setq DTM (subst (cons 2 TENBLOCKMOIDAT) (assoc 2 DTM) DTM))
(entmod DTM)
(command "undo" "end")
(Princ))


Sau đó dùng lisp sau để MA tên BLOK đối tượng vừa đổi sang các BLOCK khác.
-Tên lệnh: MABT


(defun c:mabt ()
(command "undo" "be")
(setq donvi (/ (getvar "viewsize") 40))
(setq ddd (entsel "\nChon Block mau"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon Block mau"))
)
(setq DT (car ddd))
(setq DTM (entget DT))
(setq TENKHOI (cdr (assoc 2 DTM)))
(setq DIEMCHENMAU (cdr (assoc 10 DTM)))
(setq diemvt1 (polar DIEMCHENMAU pi donvi))
(setq diemvt2 (polar DIEMCHENMAU (* 2 pi) donvi))
(setq diemvt3 (polar DIEMCHENMAU (/ pi 2) donvi))
(setq diemvt4 (polar DIEMCHENMAU (- 0 (/ pi 2)) donvi))
(grdraw diemvt1 diemvt2 3)
(grdraw diemvt3 diemvt4 3)

(Princ "\nChon BLOCK muon chinh :")
(setq xx (ssget '((0 . "insert"))))
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DTs (ssname XX L))
(setq DTMs (entget DTs))
(setq TENKHOIM TENKHOI)
(setq DTMs (subst (cons 2 TENKHOIM) (assoc 2 DTMs) DTMs))
(entmod DTMs)

(setq L (1+ L))
)
(command ".pan" DIEMCHENMAU DIEMCHENMAU)
(command "undo" "end")
(Princ))

<<

Filename: 174951_mabt.lsp
Tác giả: duy782006
Bài viết gốc: 174951
Tên lệnh: ctb
lisp đổi tên blog được chọn


Mình có cái này nhưng chỉ cho chọn 1 BLOCK để đổi thôi.
-Lệnh là: DTB



(defun c:ctb ( )
(command "undo" "be")
(setq ddd (entsel "\nChon BBLOCK muon doi ten"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon BLOCK muon doi...
>>

Mình có cái này nhưng chỉ cho chọn 1 BLOCK để đổi thôi.
-Lệnh là: DTB



(defun c:ctb ( )
(command "undo" "be")
(setq ddd (entsel "\nChon BBLOCK muon doi ten"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon BLOCK muon doi ten"))
)
(setq DT (car ddd))
(setq DTM (entget DT))
(setq TENKHOI (cdr (assoc 2 DTM)))
(setq TENBLOCKMOIDAT (getstring 5"\nNhap ten BLOCK moi:"))
(command "_BEDIT" TENKHOI "" "_BSAVEAS" TENBLOCKMOIDAT "_BCLOSE")
(setq DTM (subst (cons 2 TENBLOCKMOIDAT) (assoc 2 DTM) DTM))
(entmod DTM)
(command "undo" "end")
(Princ))


Sau đó dùng lisp sau để MA tên BLOK đối tượng vừa đổi sang các BLOCK khác.
-Tên lệnh: MABT


(defun c:mabt ()
(command "undo" "be")
(setq donvi (/ (getvar "viewsize") 40))
(setq ddd (entsel "\nChon Block mau"))
(while
(or
(null ddd)
(/= "INSERT" (cdr (assoc 0 (entget (car ddd)))))
)
(princ "\nDoi tuong khong phai la Block! Chon lai")
(setq ddd (entsel "\nChon Block mau"))
)
(setq DT (car ddd))
(setq DTM (entget DT))
(setq TENKHOI (cdr (assoc 2 DTM)))
(setq DIEMCHENMAU (cdr (assoc 10 DTM)))
(setq diemvt1 (polar DIEMCHENMAU pi donvi))
(setq diemvt2 (polar DIEMCHENMAU (* 2 pi) donvi))
(setq diemvt3 (polar DIEMCHENMAU (/ pi 2) donvi))
(setq diemvt4 (polar DIEMCHENMAU (- 0 (/ pi 2)) donvi))
(grdraw diemvt1 diemvt2 3)
(grdraw diemvt3 diemvt4 3)

(Princ "\nChon BLOCK muon chinh :")
(setq xx (ssget '((0 . "insert"))))
(setq L 0)
(setq M (sslength XX))
(while (< L M)
(setq DTs (ssname XX L))
(setq DTMs (entget DTs))
(setq TENKHOIM TENKHOI)
(setq DTMs (subst (cons 2 TENKHOIM) (assoc 2 DTMs) DTMs))
(entmod DTMs)

(setq L (1+ L))
)
(command ".pan" DIEMCHENMAU DIEMCHENMAU)
(command "undo" "end")
(Princ))

<<

Filename: 174951_ctb.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 174955
Tên lệnh: chbl
lisp đổi tên blog được chọn

Hề hề hề,
Nếu chê cái của bác Ketxu thì có thể dùng thử cái này coi sao, Tuy chả hay được như của bác ket nhưng may ra lại là hay với bạn hỉ????

Hề hề hề,.....
Trúng hay trật xin chớ cười chê....
Nhớ là cái trình tự thao tác không giống như bạn mô tả đâu.
Khi chạy lisp sẽ yêu cầu bạn chọn 1 block bất kỳ cùng tên với các block muốn đổi tên gọi là...
>>

Hề hề hề,
Nếu chê cái của bác Ketxu thì có thể dùng thử cái này coi sao, Tuy chả hay được như của bác ket nhưng may ra lại là hay với bạn hỉ????

Hề hề hề,.....
Trúng hay trật xin chớ cười chê....
Nhớ là cái trình tự thao tác không giống như bạn mô tả đâu.
Khi chạy lisp sẽ yêu cầu bạn chọn 1 block bất kỳ cùng tên với các block muốn đổi tên gọi là block mau.
Sau đó yêu cầu nhập cái tên mà bạn muốm đổi thành.
Lisp sẽ tạo một block mới toe mang cái tên mà bạn muốn, có hình hài giống y cái cũ.
Sau đó lisp yêu cầu bạn chọn tập hợp các block cần đổi tên.
Thế là nó sẽ tự đưa các block với tên mới vào thay thế cho các block tên cũ.
Hề hề hề,.
Nhìn thì thấy giống nhưng thật ra nó là hai block có cấu trúc khác nhau đấy. Hãy cẩn thận kẻo mà bé cái nhầm.....
Hy vọng gãi đúng chỗ bạn ngứa.
Hề hề hề,....
<<

Filename: 174955_chbl.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 5205
Tên lệnh: jl3d
Viết Lisp theo yêu cầu

Lệnh là JL3D.
Lệnh này sẽ lấy đường thẳng đầu tiên trong tập chọn làm gốc, và từ đó phát triển dần đường 3DPolyLine. Vì thế, nếu tập line được chọn không liền, những line nào "dính" với line đầu tiên trong tập chọn sẽ được xử lý.

Filename: 5205_jl3d.lsp
Tác giả: ssg
Bài viết gốc: 49968
Tên lệnh: ip
Tác giả: Tue_NV
Bài viết gốc: 173805
Tên lệnh: inn
Viết lisp Break Pline tại điểm chèn Block.
Xong cho bạn rồi đây. Bạn chạy thử xem nhé :


@Ketxu: Lỗi chổ được chổ không ấy là do cái Block của bạn thanhlamct làm bằng Wipeout
Cũng tương tự như hàm (ssget "c" ...) mà cái PLINE được cấu tạo bằng đường (not continous) thì chổ được chổ không đấy.
=> Giải pháp triệt để là sử dụng (ssget "f" ...) và các ý mà Tue_NV đã trình bày
Đã sử...
>>
Xong cho bạn rồi đây. Bạn chạy thử xem nhé :


@Ketxu: Lỗi chổ được chổ không ấy là do cái Block của bạn thanhlamct làm bằng Wipeout
Cũng tương tự như hàm (ssget "c" ...) mà cái PLINE được cấu tạo bằng đường (not continous) thì chổ được chổ không đấy.
=> Giải pháp triệt để là sử dụng (ssget "f" ...) và các ý mà Tue_NV đã trình bày
Đã sử xong việc "không cố tình thay đổi giới tính" của LINE mà trên đó không có Block nào.
<<

Filename: 173805_inn.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 5389
Tên lệnh: test
Viết Lisp theo yêu cầu


Hàm fselect dưới đây đáp ứng yêu cầu của bạn. lệnh test đi kèm là 1 ví dụ để gọi hàm fselect.

Cách dùng: (fselect ent)
tham số ent là ename của đối tượng PLINE hoặc LINE.
trả về: tập chọn như bạn yêu cầu.


Filename: 5389_test.lsp
Tác giả: nataca
Bài viết gốc: 106656
Tên lệnh: lstdwg
Làm sao dể tự động kết nối 1 bản vẽ text sang 2(nhiều) bản vẽ khác


Bác thử tham khảo lisp tạo list các bản vẽ này xem

Filename: 106656_lstdwg.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 106843
Tên lệnh: cmtxt
Làm sao dể tự động kết nối 1 bản vẽ text sang 2(nhiều) bản vẽ khác

Chào bác Nacata,
Cái đoạn code ấy nó đây, cũng là cái để mình thử xài cho cái yêu cầu của bác ndbngo ấy mà.


Nói như bác thì mình làm sai tuốt luốt rồi vì trong cái khúc ... ấy mình toàn dùng hàm lisp bình thường thôi bác ạ....
Cái vụ xóa biến mình cũng chưa rõ lắm nữa.
Hề hề hề, dốt quá.....

Filename: 106843_cmtxt.lsp
Tác giả: gia_bach
Bài viết gốc: 106904
Tên lệnh: openfile
Làm sao dể tự động kết nối 1 bản vẽ text sang 2(nhiều) bản vẽ khác

Chào bác phamthanhbinh,
Vì khả năng diễn giải có hạn. Bác vui lòng tham khảo các ví dụ sau :
VD1 : Open file sử dụng hàm Vla-Open
với tùy chọn Set Active (đưa về hiện hành) cho file.
Sau khi open file, bác làm việc với đối tuợng VLA đuợc gán vào biến file-opened


Filename: 106904_openfile.lsp
Tác giả: gia_bach
Bài viết gốc: 106904
Tên lệnh: addlayer
Làm sao dể tự động kết nối 1 bản vẽ text sang 2(nhiều) bản vẽ khác

Chào bác phamthanhbinh,
Vì khả năng diễn giải có hạn. Bác vui lòng tham khảo các ví dụ sau :
VD1 : Open file sử dụng hàm Vla-Open
với tùy chọn Set Active (đưa về hiện hành) cho file.
Sau khi open file, bác làm việc với đối tuợng VLA đuợc gán vào biến file-opened


Filename: 106904_addlayer.lsp
Tác giả: gia_bach
Bài viết gốc: 106904
Tên lệnh: replacetxt
Làm sao dể tự động kết nối 1 bản vẽ text sang 2(nhiều) bản vẽ khác

Chào bác phamthanhbinh,
Vì khả năng diễn giải có hạn. Bác vui lòng tham khảo các ví dụ sau :
VD1 : Open file sử dụng hàm Vla-Open
với tùy chọn Set Active (đưa về hiện hành) cho file.
Sau khi open file, bác làm việc với đối tuợng VLA đuợc gán vào biến file-opened


Filename: 106904_replacetxt.lsp

Trang 57/330

57