Jump to content
InfoFile
Tác giả: hdg2318
Bài viết gốc: 90765
Tên lệnh: tc td
edit nhanh 1 nhóm text trong cad

dùng cách Find and Replace không khả thi, và co bất cập, vì như vậy chỉ thay thế tất cả các ký tự "10" thành "32a150"
===> chưa giải quyết được vấn đề.

Nếu bản vẽ của bạn chỉ có 1 loại thép 10-32a150, bạn có thể ẩn hết các đương kích thước đi, rồi copy text theo lệnh TC

Filename: 90765_tc_td.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 90778
Tên lệnh: imf
Viết lisp theo yêu cầu [phần 2]

Phiphi dùng lisp IMF (insert multi files) dưới đây


Filename: 90778_imf.lsp
Tác giả: Phiphi-
Bài viết gốc: 90850
Tên lệnh: layoutstodwgs
Viết lisp theo yêu cầu [phần 2]
Lisp trên của Nguyen Hoanh dùng để ghép các b/v thành một b/v chung.
Vậy nếu trường hợp ngược lại là muốn tách các b/v trong 1 b/v chung thành những b/v đơn thì LISP có thể thực hiện được không bác Nguyen Hoanh?
PP có 1 Lisp dưới đây của Jimmy Bergmark, nhưng chỉ tách các b/v trong các layout (Paper Space) thành các b/v đơn.
+Lệnh là LayoutsToDwg

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


Chào bạn Sucuph,
Sau một hồi lần sờ, mình mót được của bác phi-phi cái lisp xuất tọa độ ra file *.txt, *.csv, *.xls. Thế là đem về bổ ra xơi, thấy xơ nhiều nạc ít, giắt răng muốn chết. Vậy nhưng cũng gặm được một chút. Nhờ đó có cái ghép vô với cái lisp lb2.lsp mà mình đã gửi bạn để cho ra được một cô em khá kháu khỉnh.
Bạn thử xài xem nhé:


Cô em này...
>>

Chào bạn Sucuph,
Sau một hồi lần sờ, mình mót được của bác phi-phi cái lisp xuất tọa độ ra file *.txt, *.csv, *.xls. Thế là đem về bổ ra xơi, thấy xơ nhiều nạc ít, giắt răng muốn chết. Vậy nhưng cũng gặm được một chút. Nhờ đó có cái ghép vô với cái lisp lb2.lsp mà mình đã gửi bạn để cho ra được một cô em khá kháu khỉnh.
Bạn thử xài xem nhé:


Cô em này tuy vậy nhưng với mình là khá khó trị, bác nào có nhã hứng thử tìm cách trị cho được theo ý muốn của mình đi nhé.
Cái vụ tự dưng đổi tên cái "Sheet1" thành "VD2-1&Coorn" mình vẫn chưa thể mò ra do cái hàm (xls......) nó rậm rì rắc rối và sâu hun hút, chả biết đâu mà mò. Thôi thì cứ biết khoái đến đó đã vậy.
Cái việc sau khi chạy lisp xong xuất hiện các text đánh số thứ tự của các điểm trên bản vẽ, lúc đầu mình định cắt béng nó đi, nhưng sau nghĩ lại thấy rằng âu cũng là việc cần vì đôi khi có người lại muốn đánh số thứ tự từ .... trên giời thì sao. Nếu không thích ta chỉ việc vô hiệu hóa cái hàm (text-draw .....) là ok.
Cái vụ lisp cứ tự động tắt file *.txt, *.csv sau khi ghi file rồ sau đó lại hỏi có cần mở không thực ra mình cũng thấy hơi nghịch mắt, xong cứ tôn trọng người đã viết ra nó vì có thể có cái lý ông sự ở đó. Tuy nhiên nếu không muốn quá loằng ngoằng như vậy thì các bạn có thể vô hiệu hóa cái đoạn code từ (close cFile) cho tới trước cái ngoặc (;;; end of condition #1)kết thúc điều kiện thứ nhất của hàm (cond .....).
Khi lisp chạy dừng lại để bạn chọn tên file *.txt sẽ lưu dữ liệu, mặc định là file Coordinates.txt nhưng bạn có thể đổi thành file *.txt hay *.csv thoải mái.
Túm lại ở cô em này còn nhiều điều đáng để khám phá. Tuy nhiên phải tùy vào khả năng của mỗi chiến sĩ nhà ta mà cái sự khám phá này cũng như cái sự khoái nó được nhiều hay ít. Với mình thế này là đã khoái rồi dù mới chỉ sơ sơ được một tý bên ngoài. Muốn khoái nữa chắc còn phải tích cóp ít công lực về lisp nữa mới ăn thua các bác ạ.
Chúc cả nhà vui vẻ, hề hề hề ......
<<

Filename: 90409_lb2.lsp
Tác giả: hoaletrang
Bài viết gốc: 90508
Tên lệnh: gpmb
LISP GPMB
Bạn thử lại code này nhé:

Có thay đổi: Bạn chỉ cần tạo một khối mốc lộ giới Trái với tên GPMB, tôi dx bổ sung chức năng Mirror để chuyển nó sang bên phải.
Lưu ý: - Điểm chèn (Insert Point) của Block đặt trong Block đừng để xa tít mù tắp như cái Block GPMB ban đầu cảu bạn. Vì rất khó xác định điểm chèn Block trên mặt đất tự nhiên nên tôi chỉ xác định được cao độ...
>>
Bạn thử lại code này nhé:

Có thay đổi: Bạn chỉ cần tạo một khối mốc lộ giới Trái với tên GPMB, tôi dx bổ sung chức năng Mirror để chuyển nó sang bên phải.
Lưu ý: - Điểm chèn (Insert Point) của Block đặt trong Block đừng để xa tít mù tắp như cái Block GPMB ban đầu cảu bạn. Vì rất khó xác định điểm chèn Block trên mặt đất tự nhiên nên tôi chỉ xác định được cao độ của chân đường đắp hoặc đỉnh đường đào thôi.
- Vùng chọn các đối tượng tôi tính từ tâm ra mỗi phía 20m nên nếu các trắc ngang có khoảng cách từ tim đến chân đường đắp hoặc đỉnh đường đào lớn hơn 20m thì sẽ ko xác định được, nếu có chỗ nào lớn hơn thì chuyển riêng trắc đó vào một file và chỉnh các dòng như chú thích trong code cho phù hợp, không chỉnh tổng thể vì sẽ dễ bị chọn nhầm sang các trắc khác.
<<

Filename: 90508_gpmb.lsp
Tác giả: ssg
Bài viết gốc: 9012
Tên lệnh: mp
Lisp tạo các point 3d từ file bình đồ

- Lệnh MP (make points)
- Các đối tượng là TEXT (chương trình bỏ qua, không xét MTEXT)
- Các chữ, ví dụ "abxy" xem như có giá trị 0
- Bạn có yêu cầu gì thêm thì nêu rõ


Filename: 9012_mp.lsp
Tác giả: hoaletrang
Bài viết gốc: 90373
Tên lệnh: gpmb
LISP GPMB
Đề bài của bạn khá hay. Tôi hình dung công việc của bạn như thế này.
bạn muốn làm công tác đền bù giải phóng mặt bằng và muốn vẽ thêm vào các trác ngang vị trí đặt mốc lộ giới và điền đầy đủ kích thức từ tim đường ra mốc lộ giới.
Nghiên cứu 1 hồi thì cũng tìm được ra các điểm riêng của bản vẽ. Để thực hiện được dễ dàng thì bạn cần chỉnh sửa cách làm 1...
>>
Đề bài của bạn khá hay. Tôi hình dung công việc của bạn như thế này.
bạn muốn làm công tác đền bù giải phóng mặt bằng và muốn vẽ thêm vào các trác ngang vị trí đặt mốc lộ giới và điền đầy đủ kích thức từ tim đường ra mốc lộ giới.
Nghiên cứu 1 hồi thì cũng tìm được ra các điểm riêng của bản vẽ. Để thực hiện được dễ dàng thì bạn cần chỉnh sửa cách làm 1 chút đó là 2 khối (Block) mốc lộ giới trái và phải bạn cần định nghĩa lại cho nó có điểm chèn nằm tại cao độ của chân taluy và thống nhất chỉ đặt tên 2 khối là GPMBL và GPMBR.
Copy các trắc ngang theo các trường hợp vào từng File riêng lẻ rồi thực hiện lệnh hoặc có thể thêm chức năng chọn tung đối tượng, mặc định chương trinhg tự động dò tìm các khung bản vẽ sau đó thực hiện, trường hợp mặc định là trường hợp 2, nếu muốn thực hiện cho trường hợp 1 thì nhập 1 khi được hỏi. Bây h chỉ cần ngồi ngắm kết quả.
Tôi đã test kỹ với 100 mặt cắt chạy mất khoảng 12 đến 13 giây. Bạn thử xem nhé.

<<

Filename: 90373_gpmb.lsp
Tác giả: gia_bach
Bài viết gốc: 89946
Tên lệnh: sothuc
Chọn text là số

Lisp chọn số thực.

Filename: 89946_sothuc.lsp
Tác giả: Tue_NV
Bài viết gốc: 90040
Tên lệnh: loctext
Chọn text là số


Hề hề. Mới thấy bạn thanks 1 phát chớ mấy... :D
Theo như bạn thì A là số cực tiểu ; B là số cực đại
Chọn giá trị X nằm trong khoảng A < X < B
Đây là Lisp nâng cấp :

:cheers:

Filename: 90040_loctext.lsp
Tác giả: Tue_NV
Bài viết gốc: 89375
Tên lệnh: rnf
Viết lisp theo yêu cầu [phần 2]

Chào Phiphi
Bạn sử dụng code này thử xem sao :

Hướng dẫn sử dụng
1.Gõ lệnh Rnf (rename files) -> Chon 1 file .dwg trong folder mà bạn cần đặt tên. Cụ thể là chọn 1 file bất kì trong folder Test Attribute trên máy tính của bạn
2. Gõ tên file cần thay thế. Chú ý * là kí tự đại diện
123456-001-X-01.dwg -> phải được thay bằng 123456-00* (cái này giống với ý của Phi phi đã...
>>

Chào Phiphi
Bạn sử dụng code này thử xem sao :

Hướng dẫn sử dụng
1.Gõ lệnh Rnf (rename files) -> Chon 1 file .dwg trong folder mà bạn cần đặt tên. Cụ thể là chọn 1 file bất kì trong folder Test Attribute trên máy tính của bạn
2. Gõ tên file cần thay thế. Chú ý * là kí tự đại diện
123456-001-X-01.dwg -> phải được thay bằng 123456-00* (cái này giống với ý của Phi phi đã post là 12345-001-X-XX.dwg

Command: rnf

Ten Ban ve can thay < 123456-001-X-01.dwg > : 123456-00*

Ban ve : 123456-001-X-01.dwg da duoc thay thanh ban ve : 123456-001.dwg
Ban ve : 123456-002-A-03.dwg da duoc thay thanh ban ve : 123456-002.dwg
Ban ve : 123456-003-B-04.dwg da duoc thay thanh ban ve : 123456-003.dwg
Ban ve : 123456-004-C-02.dwg da duoc thay thanh ban ve : 123456-004.dwg
Ban ve : 123456-005-D-06.dwg da duoc thay thanh ban ve : 123456-005.dwg

-> Toàn bộ bản vẽ được thay rồi.
Thế là vui nhé.
:cheers:
<<

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

Chào bạn SVBA1608,
Cái lisp này mình đã sửa lại theo ý bạn. Bạn thử dùng xem nhé. Nó có hai kiểu chọn là pick nhiều điểm và pick đối tượng. Tất nhiên khi pick nhiều điểm thì nó hơi nhiêu khê hơn pick hai điểm. Nó yêu cầu bạn phải trả lời có chọn điểm tiếp theo hay không. Nếu bạn không chọn tiếp nó sẽ tính tổng khoảng cách từ điểm đầu lần lượt qua các điểm chọn tới...
>>

Chào bạn SVBA1608,
Cái lisp này mình đã sửa lại theo ý bạn. Bạn thử dùng xem nhé. Nó có hai kiểu chọn là pick nhiều điểm và pick đối tượng. Tất nhiên khi pick nhiều điểm thì nó hơi nhiêu khê hơn pick hai điểm. Nó yêu cầu bạn phải trả lời có chọn điểm tiếp theo hay không. Nếu bạn không chọn tiếp nó sẽ tính tổng khoảng cách từ điểm đầu lần lượt qua các điểm chọn tới điểm cuối cùng mà bạn đã chọn.
Nó đây nè:


Bạn có thể so sánh cái lisp này với các lisp trước đó để thấy được cái cách mình sửa. Qua đó bạn có thể học được cách sửa lisp theo ý mình.
Chúc bạn vui.
<<

Filename: 89264_gkc.lsp
Tác giả: Tue_NV
Bài viết gốc: 86849
Tên lệnh: sct
Mình cần 1 lisp scale nhiều đối tượng 1lúc

Bạn thử code này nhé :

Filename: 86849_sct.lsp
Tác giả: gia_bach
Bài viết gốc: 86134
Tên lệnh: draw name
From: Nhờ viết lisp thống kê bản vẽ

Đã viết xong Lisp thống kê tên các bản vẽ , nhưng ngại vấn đề bảo hành và link như ý của Nataca nên chưa post lên.
Ban chạy thử và cho ý kiến.

Filename: 86134_draw_name.lsp
Tác giả: Tue_NV
Bài viết gốc: 86298
Tên lệnh: draw name
viết lisp thống kê bản vẽ

Để Tue_NV giúp anh gia_bach một tay nhé :
Các bạn chạy lại code thử và góp ý nhé :

@anh gia_bach : Hàm vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
Ví dụ như List :
(setq L (list "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "98" "99" "100"))

khi sử dụng vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
=> Kết quả sẽ trả về như thế này thì không theo ý của...
>>

Để Tue_NV giúp anh gia_bach một tay nhé :
Các bạn chạy lại code thử và góp ý nhé :

@anh gia_bach : Hàm vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
Ví dụ như List :
(setq L (list "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "98" "99" "100"))

khi sử dụng vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
=> Kết quả sẽ trả về như thế này thì không theo ý của User
("1" "10" "100" "11" "12" "2" "3" "4" "5" "6" "7" "8" "9" "98" "99")
-> Nó ưu tiên sắp xếp kí tự "1.." trước mà anh

Nhưng khi ta set nó về số thì sẽ đúng theo ý User
.Ví dụ :
(setq L (list 1 2 3 4 5 6 7 8 9 10 11 12 99 100))
(vl-sort L '<)
(1 2 3 4 5 6 7 8 9 10 11 12 99 100)
thì khi sử dụng vl-sort theo ý của mình nên em đã sử dụng hàm atoi để chuyển chuõi kí tự về dạng số rồi so sánh chúng với nhau để theo ý của mình

Anh gia_bach cho Tue_NV hỏi thêm về chổ này một chút :
(mapcar '(lambda (x)(vla-setTextHeight TblObj x 5))
(list acTitleRow acHeaderRow acDataRow) )
(mapcar '(lambda (x)(vla-setAlignment TblObj x 2))
(list acTitleRow acHeaderRow acDataRow))

4 mã code này em chưa rõ ý nghĩa của nó lắm. Anh có thể giải thích dùm em 1 chút nhé.
Cảm ơn anh
<<

Filename: 86298_draw_name.lsp
Tác giả: Tue_NV
Bài viết gốc: 86598
Tên lệnh: sct
Mình cần 1 lisp scale nhiều đối tượng 1lúc

Sao bạn không vẽ mặt cắt cốt thép bằng lệnh donut?
Lệnh scale donut tại tâm của nó nằm ở đây :
http://www.cadviet.com/forum/index.php?sho...amp;#entry68859
Bài viết số 10 bạn nhé

Còn Lisp scale "đường tròn" cốt thép của bạn thì bạn hãy thử code này nhé :

Filename: 86598_sct.lsp
Tác giả: Tue_NV
Bài viết gốc: 85243
Tên lệnh: gb
Lisp tính diện tích

Chào bạn huong259 và bạn ndn386
Đây là Lisp viết theo ý của bạn huong259.
Lisp tính diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Đúng luôn cho trường hợp không có lỗ. Vì không có lỗ thì diện tích lỗ bằng 0. :cheers:
Đây là code. Các Bạn thử nhé :

@ ndn386...
>>

Chào bạn huong259 và bạn ndn386
Đây là Lisp viết theo ý của bạn huong259.
Lisp tính diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Đúng luôn cho trường hợp không có lỗ. Vì không có lỗ thì diện tích lỗ bằng 0. :cheers:
Đây là code. Các Bạn thử nhé :

@ ndn386 : Bạn muốn thêm 3 chữ số thập phân thì thay dòng này
(alert (strcat "Area = " (rtos S 2 2)))
thành dòng :
(alert (strcat "Area = " (rtos S 2 3)))
thay số 2 thành số 3 : chính là chữ số thập phân đó bạn
<<

Filename: 85243_gb.lsp
Tác giả: gia_bach
Bài viết gốc: 86036
Tên lệnh: test
Viết lisp theo yêu cầu [phần 2]

Tại sao bạn phải nhờ đến Excel xử lí Text bị lỗi ?
Bạn chạy thử LISP lọc các TEXT không phải là kiểu số sang lớp Txt_Err

Filename: 86036_test.lsp
Tác giả: Tue_NV
Bài viết gốc: 84198
Tên lệnh: cs
Viết lisp theo yêu cầu [phần 2]

Viết lại cho bạn nè :

Trong code Lisp có kiểm tra sự bằng nhau của 2 chuỗi Text

Filename: 84198_cs.lsp
Tác giả: Tue_NV
Bài viết gốc: 83532
Tên lệnh: sd
help_ lisp thu hẹp khoảng cách giữa đường kthước và đg được ghi kthước

Chào bạn amateurday và Phiphi
Nhìn vào hình ảnh mà amateurday đã upload ta có thể thấy rằng amateurday muốn co giãn hoặc thu hẹp các DIMENSION theo 1 đường chuẩn nào đó, cụ thể đường chuẩn của DIM theo phương X là đường nằm trên cùng, đường chuẩn của DIM theo phương Y là đường nằm bên trái,
trong khi đó lisp của bác Hoành co giãn và thu hẹp theo 1 DIMENSION chuẩn nào đó.
>>

Chào bạn amateurday và Phiphi
Nhìn vào hình ảnh mà amateurday đã upload ta có thể thấy rằng amateurday muốn co giãn hoặc thu hẹp các DIMENSION theo 1 đường chuẩn nào đó, cụ thể đường chuẩn của DIM theo phương X là đường nằm trên cùng, đường chuẩn của DIM theo phương Y là đường nằm bên trái,
trong khi đó lisp của bác Hoành co giãn và thu hẹp theo 1 DIMENSION chuẩn nào đó.

Mạn phép bác Nguyễn Hoành, Tue_NV sửa lại Lisp của bác đôi chút cho phù hợp với yêu cầu của bạn amateurday và đôi khi các bạn khác cũng cần sử dụng đến
Lisp này co giãn hoặc thu hẹp các DIM theo 1 đường chuẩn do User chọn bằng việc Pick 2 điểm

Command: sd
Sap xep dim © CADViet.com
Chon diem goc : -> chọn điểm chuẩn đầu tiên
Chon 1 diem theo phuong : -> hiện chế độ Ortho, Nếu bạn muốn co giãn hay thu hẹp DIM theo phương nào thì kéo chuột theo phương đó và ...Pick

Select objects: Specify opposite corner: 3 found -> Chọn đối tượng DIM cần co giãn hoặc thu hẹp

Select objects: -> Enter

Khoang cach Dim goc < 7.77 > : Chọn khoảng cách co giãn hoặc thu hẹp DIM bằng cách nhập từ bàn phím hoặc bằng cách pick điểm. Với cách chọn khoảng cách bằng cách pick điểm thì Lisp đã chọn cho mình trước 1 điểm chuẩn rồi, mình chỉ còn chọn điểm thứ 2 nữa mà thôi. Khoảng cách giữa 2 điểm này là khoảng cách.
Và khoảng cách được lưu lại cho các lần nhập về sau. Đồng ý thì Enter, không đồng ý thì nhập khoảng cách mới bằng cách nhập từ bàn phím hoặc bằng cách pick điểm

Đay là Code của bác Hoành đã được chỉnh lại theo ý của amateurday.
Các bạn sử dụng thử nhé :

<<

Filename: 83532_sd.lsp
Tác giả: Phiphi-
Bài viết gốc: 83638
Tên lệnh: blrn
Đổi tên Block!?

Lisp dưới đây cũng dùng để Rename các Block nhưng chỉ cần đánh lệnh BLRN rồi chọn Block trên màn hình, đặt tên mới (Block có tên cũ vẩn còn lưu trong b/v)

Filename: 83638_blrn.lsp

Trang 1/330

1