Jump to content
InfoFile
Tác giả: phamthanhbinh
Bài viết gốc: 122165
Tên lệnh: x
Nhờ cao thủ sửa giúp em đoạn list Explode !

Chào bạn hhhhgggg,
Bạn xài thử cái này coi sao nhé


Có gì chưa ổn hãy post lên nhé. Bạn lưu ý là mình sử dụng lại cái lisp của bạn nên vẫn giữ nguyên lệnh chạy lisp là X . Phải coi chừng việc trùng với lệnh của CAD đó. Tốt nhất bạn nên thay cái tên lệnh này đi nhé.

Filename: 122165_x.lsp
Tác giả: TRUNGNGAMY
Bài viết gốc: 122270
Tên lệnh: dcpp
Chọn đối tượng sau lệnh Copy

Xin mạn phép TUE viết cái lisp tương tự để các bạn sd cho vui.

Lệnh là dcpp. Lệnh này gần với lệnh copy của cad kể cả với lựa chọn "m", sau khi kết thúc lệnh, nếu thực hiện một lệnh mới có chọn đối tượng với lựa chọn "p" thì sẽ chọn đc một tập mới copy sau cùng.
Lệnh này chỉ thiếu mỗi cái nhóm đối tượng chạy theo cái dây khi copy với lựa chọn "m", muốn...
>>

Xin mạn phép TUE viết cái lisp tương tự để các bạn sd cho vui.

Lệnh là dcpp. Lệnh này gần với lệnh copy của cad kể cả với lựa chọn "m", sau khi kết thúc lệnh, nếu thực hiện một lệnh mới có chọn đối tượng với lựa chọn "p" thì sẽ chọn đc một tập mới copy sau cùng.
Lệnh này chỉ thiếu mỗi cái nhóm đối tượng chạy theo cái dây khi copy với lựa chọn "m", muốn làm đc điều này phải tốn thêm một ít công sức nhưng mình thì rất bận
<<

Filename: 122270_dcpp.lsp
Tác giả: npham
Bài viết gốc: 121258
Tên lệnh: zt
Nhờ viết Lisp tìm tên tuyến


hehe. Có những cái rất bât ngờ. nhiều khi cứ cắm đầu cắm cổ vào viết mà không biết rằng cad có cái đó tự bao giờ.

Lệnh dưới đây tìm và zoom đoạn text chứa chữ "tuyến" và chữ nhập vào.
Ví dụ
muốn tìm "Tuyến 234 -237" thì nhập 234 hoặc 237
muốn tìm "Tuyến số 40" thì nhập 40
muốn tìm "Tuyến 19 - 24" thì nhập 19-24 không cần dấu cách.
Còn...
>>


hehe. Có những cái rất bât ngờ. nhiều khi cứ cắm đầu cắm cổ vào viết mà không biết rằng cad có cái đó tự bao giờ.

Lệnh dưới đây tìm và zoom đoạn text chứa chữ "tuyến" và chữ nhập vào.
Ví dụ
muốn tìm "Tuyến 234 -237" thì nhập 234 hoặc 237
muốn tìm "Tuyến số 40" thì nhập 40
muốn tìm "Tuyến 19 - 24" thì nhập 19-24 không cần dấu cách.
Còn nếu muốn tìm tuyến 236 thì..hehe. Phải thêm vài đoạn code nữa.

buồn buồn nhập dấu "-" hay 1 số gì đó vào nó chạy một hồi thấy cũng vui vui.


Nếu thấy không nhanh hơn lện find thì bác dùng lệnh find theo HD của ketxu nhé.

<<

Filename: 121258_zt.lsp
Tác giả: ketxu
Bài viết gốc: 122019
Tên lệnh: fix
Bỏ chế độ Non-explodable của Block

- Một số Block khóa bằng cách kích hoạt Non-explodable . Dùng lisp này để loại bỏ nó và explode nó như thường


Filename: 122019_fix.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 12110
Tên lệnh: dtf
Cách tính diện tích hình 3D


Lần sau ksgia nên nén dưới đuôi zip gửi đỡ bị hỏng hơn.

Diện tích mặt chóp cụt xiên của ksgia là: 23.6359021055m2


Trước mắt, chưa tìm ra công thức toán học của diện tích mặt nón dạng này, đành phải áp dụng cách: Biến đường tròn thành đa giác 1000 cạnh. Sau đó dựng chóp lăng trụ xiên rồi tính diện tích từng mặt, cộng lại.

Phương pháp làm như...
>>

Lần sau ksgia nên nén dưới đuôi zip gửi đỡ bị hỏng hơn.

Diện tích mặt chóp cụt xiên của ksgia là: 23.6359021055m2


Trước mắt, chưa tìm ra công thức toán học của diện tích mặt nón dạng này, đành phải áp dụng cách: Biến đường tròn thành đa giác 1000 cạnh. Sau đó dựng chóp lăng trụ xiên rồi tính diện tích từng mặt, cộng lại.

Phương pháp làm như sau:
- Tạo 2 đối tượng circle nằm đúng vị trí 2 mặt đỉnh và đáy của chóp cụt (trong 3D).
- Gõ lệnh SURFTAB1 rồi nhập vào 1000.
- Dùng lệnh RULESURF rồi chọn 2 đối tượng này để tạo mặt nón cụt có 2 đường tựa là 2 circle này.
- Dùng lệnh EXPLODE để phá đối tượng vừa tạo thành 1000 đối tượng 3dface
- Dùng lệnh DTF (diện tích 3DFace) dưới đây để tính tổng diện tích của 1000 face trên.


-----------------
P/S: Khi vừa post xong bài này thì tìm ra công thức tính diện tích mặt nón xiên có đáy hình tròn thông qua diện tích hình chiếu bằng của nó:
Smặt nón = Sqrt((h0*r*pi)^2+(2*S0 - pi*r*r)^2)
Trong đó:
. h0 là khoảng cách đỉnh nón xuống mặt phẳng đáy
. r là bán kính hình tròn
. pi là số pi = 3.14.....
. S0 là diện tích của hình tạo ra khi chiếu mặt nón xuống mặt đáy. S0 có thể tính được bằng cách dựng hình rồi dùng lệnh list trong AutoCAD.
<<

Filename: 12110_dtf.lsp
Tác giả: npham
Bài viết gốc: 121164
Tên lệnh: input
Xuất dữ liệu cad sang EXCEL lần lượt



Mấy chuyện lớn sẽ nhờ tới Cao thủ, việc nhỏ nhỏ mình giúp bạn thử xem sao nhé. hê hê !

Lệnh zoom dưới đây swr dụng nút giữa chuột, trái phải để exit
nếu không vừa ý chổ nào bạn cứ nói nhé.


Filename: 121164_input.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 121010
Tên lệnh: nhapatt
Chuyển từ excel sang Block ATTDEF


Chào các bác,
Đây là cái hai lisp cải tiến thêm chút xíu cho phép người dùng chỉ cần nhập lần lượt các STT của các dòng cần nhập và sau đó enter là xong. Tuy nhiên có hai điều mình thắc mắc là với cùng cấu trúc, chỉ khác về cách kiểm tra giá trị STT mà tại sao hai lisp này cho kết quả hoàn toàn khác nhau.
Các bác xài thử và cho mình lời giải đáp nhé.
Lisp 1:
>>


Chào các bác,
Đây là cái hai lisp cải tiến thêm chút xíu cho phép người dùng chỉ cần nhập lần lượt các STT của các dòng cần nhập và sau đó enter là xong. Tuy nhiên có hai điều mình thắc mắc là với cùng cấu trúc, chỉ khác về cách kiểm tra giá trị STT mà tại sao hai lisp này cho kết quả hoàn toàn khác nhau.
Các bác xài thử và cho mình lời giải đáp nhé.
Lisp 1:


Xin chân thành cám ơn các bác.
<<

Filename: 121010_nhapatt.lsp
Tác giả: npham
Bài viết gốc: 121076
Tên lệnh: csv
Chuyển từ excel sang Block ATTDEF



Ví dụ lisp dưới đây thực hiện công việc xuất file csv ra cad. giả sử xuất 5 cột đầu tiên trong chuỗi dữ liệu (row).
Giả định chiều cao chữ 2, khoảng cách dòng 5 và bề rộng các cột : 10 60 20 20 40.
Bạn duyhung có thể thêm mắm thêm muối cho màu text, font. ....theo ý mình.
Bạn cũng có thể sưa lại hàm text->cad để nó không chỉ xuất 5 cột mà xuất hết tất cả các...
>>


Ví dụ lisp dưới đây thực hiện công việc xuất file csv ra cad. giả sử xuất 5 cột đầu tiên trong chuỗi dữ liệu (row).
Giả định chiều cao chữ 2, khoảng cách dòng 5 và bề rộng các cột : 10 60 20 20 40.
Bạn duyhung có thể thêm mắm thêm muối cho màu text, font. ....theo ý mình.
Bạn cũng có thể sưa lại hàm text->cad để nó không chỉ xuất 5 cột mà xuất hết tất cả các cột trong có trong 1 row.
Bạn có thể cho lisp tự xác định bề rộng max của mỗi cột theo cách:

Chuyển dữ liệu lst từ:

(t11 t12 t13....)
(t21 t22 t23....)
(t31 t32 t33....)
(t41 t42 t43....)
....
Thành
(t11 t21 t31 t41...)
(t12 t22 t32 t42...)
(t13 t23 t33 t43...)
....
tij: i = hang, j = cot

Sau đó lấy max trong mỗi dòng trên bạn sẽ có được 1 danh sách chứa bề rộng cột.

Lưu ý: dùng mã TCVN3 cho excel nhé.

<<

Filename: 121076_csv.lsp
Tác giả: phamngoctukts
Bài viết gốc: 120884
Tên lệnh: gct
Viết lisp theo yêu cầu [phần 2]

Mình sửa và bổ xung cho bạn rồi này. Chúc bạn như ý.

Filename: 120884_gct.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 120915
Tên lệnh: nhapatt
Chuyển từ excel sang Block ATTDEF

Chào bác Gia cát Manhhungxda,
Biếu bác thêm cặp mũ vua bà kẻo Hai Bà phải để đầu trần đánh trận cũng tội hỉ???


Cái này xài khỏi cần dóng dả chi cả. Chỉ nhập điểm nhập một lần rồi sau đó nhập lần lượt các số thứ tự của các dòng cần nhập mỗi khi lisp hỏi, mỗi lần chỉ nhập một số thôi nhé. Theo mình thì nó có vẻ hay hơn song nó lại không tùy nghi chọn...
>>

Chào bác Gia cát Manhhungxda,
Biếu bác thêm cặp mũ vua bà kẻo Hai Bà phải để đầu trần đánh trận cũng tội hỉ???


Cái này xài khỏi cần dóng dả chi cả. Chỉ nhập điểm nhập một lần rồi sau đó nhập lần lượt các số thứ tự của các dòng cần nhập mỗi khi lisp hỏi, mỗi lần chỉ nhập một số thôi nhé. Theo mình thì nó có vẻ hay hơn song nó lại không tùy nghi chọn chỗ được như thằng cũ. Hề hề hề. Bác có thể save thành hai lisp khác nhau để tùy ý sử dụng hỉ.....

Mình đang nghĩ cách cải tiến sao cho một lần nhập có thể nhập luôn vài chục chú chứ chả phải từng chú một. Hề hề hề....
<<

Filename: 120915_nhapatt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 120774
Tên lệnh: nhapatt
Chuyển từ excel sang Block ATTDEF

Hề hề hề,
Chào bác Gia Cát Manhhungxda.
Có phải bác cần cái nè không hỉ??? Cứ thử coi, trúng trật sửa tiếp hỉ.


Hề hề hề, bác nhớ là phải save cái thằng Excel của bác qua thành file *.cvs đã rồi mới chạy lisp từ file dữ liệu này nhé. Cái này mình mót của bác SSG nên chỉ biết vậy. Muốn rõ hơn thì cứ nhè bác ấy mà gõ hỉ. Mình không giải thích được đâu....
>>

Hề hề hề,
Chào bác Gia Cát Manhhungxda.
Có phải bác cần cái nè không hỉ??? Cứ thử coi, trúng trật sửa tiếp hỉ.


Hề hề hề, bác nhớ là phải save cái thằng Excel của bác qua thành file *.cvs đã rồi mới chạy lisp từ file dữ liệu này nhé. Cái này mình mót của bác SSG nên chỉ biết vậy. Muốn rõ hơn thì cứ nhè bác ấy mà gõ hỉ. Mình không giải thích được đâu. Hề hề hề.....
<<

Filename: 120774_nhapatt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 120827
Tên lệnh: nhapatt
Chuyển từ excel sang Block ATTDEF

Hề hề hề,
Thôi thì cho bác này cả Hai bà Trưng luôn thể kẻo lại chả có người cưỡi voi hỉ????


Chú ý: Khi bác muốn nhập các record đơn chứ không phải nhập tuốt thì bác nhập cái số thứ tự nghen. Bác mà nhập lộn số thứ tự này là tiêu đó. Chẳng hạn trong cái bảng của bác cột stt có tới dăm thằng trùng số thì sẽ cả dăm cái thằng ấy nó chui vào cùng một...
>>

Hề hề hề,
Thôi thì cho bác này cả Hai bà Trưng luôn thể kẻo lại chả có người cưỡi voi hỉ????


Chú ý: Khi bác muốn nhập các record đơn chứ không phải nhập tuốt thì bác nhập cái số thứ tự nghen. Bác mà nhập lộn số thứ tự này là tiêu đó. Chẳng hạn trong cái bảng của bác cột stt có tới dăm thằng trùng số thì sẽ cả dăm cái thằng ấy nó chui vào cùng một chỗ và uýnh lộn nhau tới mức bác chẳng còn nhòm ra thăng nào đực hay thằng nào lại cái nữa. Hề hề hề...
Mỗi lần lấy một record bác lại phải nhập điểm chèn một phát và do vậy việc các record xếp hàng như khi nhập tuốt luốt phụ thuộc vào tài nghệ pick điểm của bác đó. Giả sử có run tay mà pick liên thuyên cũng chớ có lo, cứ chịu khó nhặt cho hết các record muốn nhặt rồi nhấn enter một phát khi nó hỏi nhập record mới để kết thúc việc chọn record. Sau đó chịu khó dùng CAD mà move nó về cho đạt độ oai là OK hỉ???
Chúc bác thắng lợi nhớn hỉ.....
<<

Filename: 120827_nhapatt.lsp
Tác giả: MANHHUNGXDA
Bài viết gốc: 120875
Tên lệnh: dht
Chuyển từ excel sang Block ATTDEF

Nếu mà nó không thẳng hàng, e đã có công cụ này (tặng cả nhà luôn - MỤC ĐÍCH LÀ DÓNG ĐỐI TƯỢNG)
Hì hì hì .....

Filename: 120875_dht.lsp
Tác giả: phamngoctukts
Bài viết gốc: 120508
Tên lệnh: tg breakall breakobject breakwobject breakwlayer breakwith breaktouching breakselected mybreak
Viết lisp theo yêu cầu [phần 2]

Vì mình chưa nghĩ ra cách xác định điểm mp nên bạn chịu khó pick thêm 1 điểm vào giữa 2 đường ranh giới nhé.

Filename: 120508_tg_breakall_breakobject_breakwobject_breakwlayer_breakwith_breaktouching_breakselected_mybreak.lsp
Tác giả: phamngoctukts
Bài viết gốc: 120374
Tên lệnh: tg breakall breakobject breakwobject breakwlayer breakwith breaktouching breakselected mybreak
Viết lisp theo yêu cầu [phần 2]

Xin lỗi vì mình không hiểu ý bạn. Mình sửa cho bạn rồi đây:

Filename: 120374_tg_breakall_breakobject_breakwobject_breakwlayer_breakwith_breaktouching_breakselected_mybreak.lsp
Tác giả: ssg
Bài viết gốc: 12042
Tên lệnh: test
AutoCAD với Excel
Xử lý tốt sự liên kết giữa Lisp và Excel sẽ mở ra nhiều khả năng để tạo nên những ứng dụng rất hiệu quả.
Mình nhờ tất cả các bạn quan tâm đến chủ đề này một việc: kiểm tra giúp đoạn lisp sau có chạy được với mọi version của Acad lẫn Excel hay không (đặc biệt chú trọng đến version của Excel). Mình đã thử với Cad2002, Cad2007 và Excel 2003, kết quả OK.
Trình tự test:
>>
Xử lý tốt sự liên kết giữa Lisp và Excel sẽ mở ra nhiều khả năng để tạo nên những ứng dụng rất hiệu quả.
Mình nhờ tất cả các bạn quan tâm đến chủ đề này một việc: kiểm tra giúp đoạn lisp sau có chạy được với mọi version của Acad lẫn Excel hay không (đặc biệt chú trọng đến version của Excel). Mình đã thử với Cad2002, Cad2007 và Excel 2003, kết quả OK.
Trình tự test:
1) Tạo 1 file Excel đơn giản và ngắn, chừng vài hàng vài cột, tương tự như bảng mà bạn Nộ Thiên đã post ở trên (để cho nhanh và dễ kiểm tra kết quả). Không nên dùng tiếng Việt có dấu. Chú ý: không được bỏ trống row1.
2) Lưu file dạng *.xls bình thường và thoát hẳn trình Excel đang chạy.
3) Appload đoạn code sau và gõ lệnh TEST
Nếu kết quả tốt, sẽ hiện ra message_box với đầy đủ số liệu bố trí như bên Excel. Kết quả thử với các version thế nào phiền các bạn báo lại cho mình biết.
Cám ơn rất nhiều,
Ssg


<<

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

Mình sửa cho bạn này:

Filename: 120365_gct.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 120231
Tên lệnh: tg breakall breakobject breakwobject breakwlayer breakwith breaktouching breakselected mybreak
Viết lisp theo yêu cầu [phần 2]

Hề hề hề,
Mạn phép bác Phamngoctukts, mình chỉnh cái lisp của bác kết hợp với cái lisp breaktohopcacdoituong mình mót trên diễn đàn. Nghe chừng có vẻ lẹ hơn bác ạ mặc dầu cái code thì nó dài lê thê.
Mình chưa chỉnh hết, chỉ chỉnh những thứ cần mà thôi, nếu bác rảnh có thể chỉnh thêm nhé.


@All: Hề hề hề, code dài không phải tại mình đâu, tại mấy cái thằng...
>>

Hề hề hề,
Mạn phép bác Phamngoctukts, mình chỉnh cái lisp của bác kết hợp với cái lisp breaktohopcacdoituong mình mót trên diễn đàn. Nghe chừng có vẻ lẹ hơn bác ạ mặc dầu cái code thì nó dài lê thê.
Mình chưa chỉnh hết, chỉ chỉnh những thứ cần mà thôi, nếu bác rảnh có thể chỉnh thêm nhé.


@All: Hề hề hề, code dài không phải tại mình đâu, tại mấy cái thằng TÂY nó viết vậy, mình chỉ mót về mà hổng dám chọc ngoáy nên cứ để vấy cho nó.... Tây ý mà. Mong các bác chớ giận. (có giận thì giận cái thằng Tây ý nhé) Hề hề hề.....
<<

Filename: 120231_tg_breakall_breakobject_breakwobject_breakwlayer_breakwith_breaktouching_breakselected_mybreak.lsp
Tác giả: thanhduan2407
Bài viết gốc: 120257
Tên lệnh: rrr
Xuất dữ liệu Excel qua Acad

Đây. Lisp của bạn đây

Filename: 120257_rrr.lsp
Tác giả: phamngoctukts
Bài viết gốc: 120171
Tên lệnh: tg
Viết lisp theo yêu cầu [phần 2]

Mình viết code này cho bạn. Bạn test thử và cho ý kiến nhé.

Filename: 120171_tg.lsp

Trang 44/319

44