Jump to content
InfoFile
Tác giả: tski259
Bài viết gốc: 155305
Tên lệnh: dt2
Tính tổng diện tích các hình trên bản vẽ, "Ed" vào text sẵn có
Hi.trả lời ra ngoài mới thấy là chuyên mục tính diện tích "ed" vào text sẵn có.lisp dti là ghi ra text,đành chế thêm thêm tí cho hợp với chuyên mục nè.lệnh dt2.
http://www.cadviet.com/upfiles/3/dt2.lsp

@Ketxu : Cảm ơn bác đã khuyến khích mình nc về lisp nha.Thực chất mình cũng muốn lắm.Nhưng đi làm suốt không có thời gian để nc sâu lắm.Mình muốn mua sách xem thêm mà mình lượn ở...
>>
Hi.trả lời ra ngoài mới thấy là chuyên mục tính diện tích "ed" vào text sẵn có.lisp dti là ghi ra text,đành chế thêm thêm tí cho hợp với chuyên mục nè.lệnh dt2.
http://www.cadviet.com/upfiles/3/dt2.lsp

@Ketxu : Cảm ơn bác đã khuyến khích mình nc về lisp nha.Thực chất mình cũng muốn lắm.Nhưng đi làm suốt không có thời gian để nc sâu lắm.Mình muốn mua sách xem thêm mà mình lượn ở Vinh lẫn Hà Tĩnh mà không có nơi náo bán sách về lisp cả.Mình phải học mót trên diễn đàn với dịch help của Cad, mà trình độ tiếng anh còn kém lắm,học chậm như rùa.Nên mới dừng ở việc độ lisp thôi.Nhưng mình sẽ cố gắng để góp sức cho diễn đàn ngày càng phát triển.
<<

Filename: 155305_dt2.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 15526
Tên lệnh: dembl
Viết Lisp theo yêu cầu


lệnh DEMBL dưới đây sẽ giúp bạn:

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


Hề hề hề,
Dây là cái lisp ghi độ dốc:

Hy vọng trúng ý bạn.
Lưu ý khi lisp yêu cầu Chon text can ghi do doc , nếu bạn khong muốn chọn text để thay thế mà muốn chọn điểm để ghi text mới thì cú việc nhấn Enter. Khi đó lisp sẽ yêu cầu bạn chọn điểm đặt text mới.
Còn nến bạn muốn thay thế text cũ thì phải chọn đúng vào text cần thay.
Khi lisp yêu cầu bạn...
>>

Hề hề hề,
Dây là cái lisp ghi độ dốc:

Hy vọng trúng ý bạn.
Lưu ý khi lisp yêu cầu Chon text can ghi do doc , nếu bạn khong muốn chọn text để thay thế mà muốn chọn điểm để ghi text mới thì cú việc nhấn Enter. Khi đó lisp sẽ yêu cầu bạn chọn điểm đặt text mới.
Còn nến bạn muốn thay thế text cũ thì phải chọn đúng vào text cần thay.
Khi lisp yêu cầu bạn Chon text mau thì bạn phải chọn đúng cái text mẫu có style, layer, chiều cao mà bạn muốn.
Chúc bạn vui.
<<

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


Chào bác PhamThanhBinh, gasmanc
Khi tách thành 3 Text riêng biệt ra thì theo file mà bạn gasmanc đã upload thì dấu chấm thập phân và anh Text nằm bên trái vẫn giữ nguyên vị trí của nó, còn các anh Text nằm bên phải dịch xuống 1 khoảng đúng bằng chiều cao của Text.
Tue_NV có bổ sung thêm code vào code của bác PhamThanhBinh. Bạn Gasmanc thử xem sao :

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

Chào bác PhamThanhBinh, gasmanc
Khi tách thành 3 Text riêng biệt ra thì theo file mà bạn gasmanc đã upload thì dấu chấm thập phân và anh Text nằm bên trái vẫn giữ nguyên vị trí của nó, còn các anh Text nằm bên phải dịch xuống 1 khoảng đúng bằng chiều cao của Text.
Tue_NV có bổ sung thêm code vào code của bác PhamThanhBinh. Bạn Gasmanc thử xem sao :

Filename: 155092_gdd.lsp
Tác giả: gia_bach
Bài viết gốc: 154870
Tên lệnh: atic
Lisp rải đối tượng theo đơờng dẩn.


- yêu cầu 1 : cập nhật.
- yêu cầu 2 : Rải cả điểm đầu và cuối của đường dẫn.
Về mặt lập trình, việc thêm tùy chọn "Rải cả điểm đầu và cuối của đường dẫn (Yes/No):" LISP có thể đáp ứng đuợc. Nhưng theo quan điểm cá nhân tôi, thêm tùy chọn này chỉ làm rối thêm Lisp (trong t/hợp có giao điểm thưc giữa đuờng dẫn và đối tựong lấy giao điểm tại điểm...
>>

- yêu cầu 1 : cập nhật.
- yêu cầu 2 : Rải cả điểm đầu và cuối của đường dẫn.
Về mặt lập trình, việc thêm tùy chọn "Rải cả điểm đầu và cuối của đường dẫn (Yes/No):" LISP có thể đáp ứng đuợc. Nhưng theo quan điểm cá nhân tôi, thêm tùy chọn này chỉ làm rối thêm Lisp (trong t/hợp có giao điểm thưc giữa đuờng dẫn và đối tựong lấy giao điểm tại điểm đầu hay điểm cuối).
Do đó trong t/hợp bạn phải dùng Lisp này và muốn "Rải cả điểm đầu và cuối của đường dẫn", vui lòng "vẽ thêm 1 line nối điểm đầu và cuối của đường dẫn" truớc khi chạy lisp này (dĩ nhiên sau đó nhớ xóa line này đi).

<<

Filename: 154870_atic.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 15493
Tên lệnh: jl
Viết Lisp theo yêu cầu

bạn dùng lệnh Join của AutoCAD (từ phiên bản 2007).
hoặc lệnh JL (join line) dưới đây. Khi gọi lệnh JL, chương trình sẽ yệu cầu bạn chọn crossing qua 1 vùng cửa sổ chứa 2 line cần nối.

Filename: 15493_jl.lsp
Tác giả: Civil Engineering 001
Bài viết gốc: 154946
Tên lệnh: 0 1 2 3 4 5 6 7 8 9 10 11
Hỏi 1 chút về Autolisp
Chào các anh! Em đã search vấn đề này nhưng ko thấy trong Diễn đàn mong các anh giúp em với nhé!

Vấn đề của em là: Em đã có 1 đoạn code để tạo Text Style, Dimension Style và một số Layer:
1. Nhưng các layer đã tạo ra lại không Set đc LW và LT.

2. Và các anh có đoạn code nào mà "khóa" lun các layer đã tạo ra ko? Ý em nếu ko dung layer đó thì dùng lệnh "pu" cũng ko...
>>
Chào các anh! Em đã search vấn đề này nhưng ko thấy trong Diễn đàn mong các anh giúp em với nhé!

Vấn đề của em là: Em đã có 1 đoạn code để tạo Text Style, Dimension Style và một số Layer:
1. Nhưng các layer đã tạo ra lại không Set đc LW và LT.

2. Và các anh có đoạn code nào mà "khóa" lun các layer đã tạo ra ko? Ý em nếu ko dung layer đó thì dùng lệnh "pu" cũng ko xóa đc nón.

Thanks các anh! Mong sớm nhận đc hồi âm các anh!


<<

Filename: 154946_0_1_2_3_4_5_6_7_8_9_10_11.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154814
Tên lệnh: chgev
Lisp cộng trừ số thập phân

Hề hề hề,
Cách chạy lisp thứ nhất mình đã nói khá rõ rồi. bạn cứ chạy đúng như thế là Ok vì mình đã chạy thử với cả hai bản vẽ bạn pót lên rồi. Kết quả ngon
Nếu bạn vẫn chưa thông thì có thể dùng cái lisp mình đã sửa trong bài post số 3863 phía trên. Lisp mới này sẽ chạy nhanh hơn lisp trước nhất là khi vùng chọn có nhiều point.
Với lisp thứ hai, mình đang nghĩ...
>>

Hề hề hề,
Cách chạy lisp thứ nhất mình đã nói khá rõ rồi. bạn cứ chạy đúng như thế là Ok vì mình đã chạy thử với cả hai bản vẽ bạn pót lên rồi. Kết quả ngon
Nếu bạn vẫn chưa thông thì có thể dùng cái lisp mình đã sửa trong bài post số 3863 phía trên. Lisp mới này sẽ chạy nhanh hơn lisp trước nhất là khi vùng chọn có nhiều point.
Với lisp thứ hai, mình đang nghĩ cách giải quyết vấn đề khác với cách bạn nghĩ nhiều. Đó là chả nối hai thằng làm một làm gì mà ngược lại là chuyển từ hai text thành 3 text, tức là thêm một thằng cu text "." nữa và đặt thằng cu này vào trung cái point.
Vấn đề cộng trừ nhân chia chi đó thì đã giải quyết được trong lisp thứ nhất rồi.
Tuy nhiên cũng cần chút thời gian chứ chẳng thể có ngay cho bạn được.
Hề hề hề, hãy chịu khó đợi thêm chút nữa hỉ.....

Và đây là cái lisp chuyển các text về thẳng hàng dạng A.B thỏa mãn yêu cầu của bạn nhưng không phải là một text mà là bao gồm 3 text riêng biệt.Lisp này cũng thực hiện các phép tính với hằng số cho trước như lisp cũ và trả ra là kết quả đã được tính toán. Nếu bạn muốn giá trị cao độ không đổi thì nhập hằng số tính toán là 0 với phép tính là cộng hay trừ hoặc nhập hằng số tính toán là 1 với các phép tính là nhân hay chia.
Bạn hãy dùng thử và cho ý kiến nha.

Chúc bạn vui
<<

Filename: 154814_chgev.lsp
Tác giả: hakhoailang
Bài viết gốc: 154847
Tên lệnh: os e1 %2B%2B%2B%2B%2B %2B%2B%2B%2B%2B%2B %2B%2B%2B%2B %2B%2B%2B %2B%2B %2B - -- --- ---- ----- ------ 1 2 3 4 5 6 7 8 9 10 11 0 goc tcd
Viết lisp theo yêu cầu [phần 2]

http://www.cadviet.com/upfiles/3/bosungdieukien.dwg
anh có thể giúp em về phần độ dốc cái cống đã vì hiện tại em cần cái đó lắm. còn cái cao độ thì em đã nhờ bạn em viết 1 cái lip cũng đúng như mong muốn vì bạn em cũng đã từng gặp trường hợp như vậy nhưng cũng chỉ mò mẫm hay mót gì đó nên nó ko hoàn chỉnh . em đua code nó lên đây anh xem và rút gon cho em cái .
hoặc lược bỏ...
>>

http://www.cadviet.com/upfiles/3/bosungdieukien.dwg
anh có thể giúp em về phần độ dốc cái cống đã vì hiện tại em cần cái đó lắm. còn cái cao độ thì em đã nhờ bạn em viết 1 cái lip cũng đúng như mong muốn vì bạn em cũng đã từng gặp trường hợp như vậy nhưng cũng chỉ mò mẫm hay mót gì đó nên nó ko hoàn chỉnh . em đua code nó lên đây anh xem và rút gon cho em cái .
hoặc lược bỏ phần không cần thiết vì khi chạy nó thì nó chống với tất cả các lip khác mới đau em
<<

Filename: 154847_os_e1_%2B%2B%2B%2B%2B_%2B%2B%2B%2B%2B%2B_%2B%2B%2B%2B_%2B%2B%2B_%2B%2B_%2B_-_--_---_----_-----_------_1_2_3_4_5_6_7_8_9_10_11_0_goc_tcd.lsp
Tác giả: gia_bach
Bài viết gốc: 154733
Tên lệnh: atic
Lisp rải đối tượng theo đơờng dẩn.

Vì bạn không đưa file CAD, nên còn có nhiều điều chưa rõ về Format Text của bạn.
vd : Text có định dạng số và chữ lẫn lộn "No : 3" hay "Km +4.530" ...

Truớc mắt bạn dùng thử LISP ghi Text tại giao điểm của các đường thẳng, cung tròn, Pline, đuờng tròn, elíp với đường dẫn.
+ text rải sẽ tăng dần đều với buớc là 1.
+ tuơng tự lệnh Divide của...
>>

Vì bạn không đưa file CAD, nên còn có nhiều điều chưa rõ về Format Text của bạn.
vd : Text có định dạng số và chữ lẫn lộn "No : 3" hay "Km +4.530" ...

Truớc mắt bạn dùng thử LISP ghi Text tại giao điểm của các đường thẳng, cung tròn, Pline, đuờng tròn, elíp với đường dẫn.
+ text rải sẽ tăng dần đều với buớc là 1.
+ tuơng tự lệnh Divide của CAD, phụ thuộc vào điểm pick khi chọn đường dẫn, chiều tăng của Text sẽ đi từ điểm đầu tới điểm cuối hoặc nguợc lại.

<<

Filename: 154733_atic.lsp
Tác giả: thanhduan2407
Bài viết gốc: 154778
Tên lệnh: ii
Giải thích gùm code lisp

Mình chỉ hướng dẫn để bạn sau này sẽ tự tìm ra cách hiểu thôi.
Đây là lisp mình dùng để xem thông tin một đối tượng, bạn tham khảo nhé.

Filename: 154778_ii.lsp
Tác giả: phamngoctukts
Bài viết gốc: 154535
Tên lệnh: dt
Đổi tên Block được chọn

Đổi tên các Block được chọn. Các block được chọn sẽ đổi thành tên do các bạn nhập vào để chỉnh sửa các Block này mà Block gốc không bị thay đổi.



Filename: 154535_dt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154549
Tên lệnh: chgev
Lisp cộng trừ số thập phân

Hề hề hề,
Cái lisp thứ hai thì bạn phải chờ thêm một chút vì nó hơi loằng ngoằng hơn.
Còn cái líp thứ nhất thì bạn dùng thử cái này coi sao hè.

Hề hề hề,
trong lisp này, mình mượn cái hàm cộng trừ nhân chia của bác hochoaihetdot trên diễn đàn để bạn tha hồ lựa chọn, muốn cộng hay trừ hay nhân hay chia cái cao độ với một hằng số nào đó thì tùy hỉ. Hãy...
>>

Hề hề hề,
Cái lisp thứ hai thì bạn phải chờ thêm một chút vì nó hơi loằng ngoằng hơn.
Còn cái líp thứ nhất thì bạn dùng thử cái này coi sao hè.

Hề hề hề,
trong lisp này, mình mượn cái hàm cộng trừ nhân chia của bác hochoaihetdot trên diễn đàn để bạn tha hồ lựa chọn, muốn cộng hay trừ hay nhân hay chia cái cao độ với một hằng số nào đó thì tùy hỉ. Hãy cám ơn bác ấy bằng cách nhấn dấu + ở bài post của bác ấy nha
<<

Filename: 154549_chgev.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154439
Tên lệnh: du-text
Lisp gán TEXT cho các đường đồng mức

Hề hề hề,
Vấn đề của bạn chỉ là việc xác định các điểm pi1a pi3a pi3b pi1b sai mà thôi chứ cái wipeout hổng có sai.
Mình chưa rõ vì sao bạn phải dùng hàm cond phức tạp đến thế ????
Bạn hãy kiểm tra lại nhé vì việc so sánh hai giá trị (cadr pi1) và (cadr pi2) chỉ có thể có 3 dạng là < = > thôi chứ .....
Hề hề hề,...
Mình sửa tạm cái này để bạn dùng...
>>

Hề hề hề,
Vấn đề của bạn chỉ là việc xác định các điểm pi1a pi3a pi3b pi1b sai mà thôi chứ cái wipeout hổng có sai.
Mình chưa rõ vì sao bạn phải dùng hàm cond phức tạp đến thế ????
Bạn hãy kiểm tra lại nhé vì việc so sánh hai giá trị (cadr pi1) và (cadr pi2) chỉ có thể có 3 dạng là < = > thôi chứ .....
Hề hề hề,...
Mình sửa tạm cái này để bạn dùng thử, hãy chú ý so sánh cái mình sửa và cái bạn có để rút kinh nghiệm nhé.
Đặc biệt cái hàm cond, mình để bạn tự chỉnh sửa cho phù hợp nhé. Mình sửa vậy để bạn thấy sự bất hợp lý của nó mà thôi. Bạn nên suy nghĩ tìm cách loại nó đi nhé.....

Chúc bạn vui.
<<

Filename: 154439_du-text.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154488
Tên lệnh: xbd
Lisp cắt, xoay Bình đồ

Hề hề hề,
Trước hết cám ơn bạn đã dùng lisp do mình viết.
Thứ nữa là việc còn lại một số đối tượng không xoay như bản vẽ bạn post là do các polyline của bạn khá phức tạp. Nó có thể có nhiều giao điểm với đường cắt chứ không phải chỉ có một giao điểm. Do vậy mình đã không xét tới trường hợp này. Để mình xét thêm rồi nếu được sẽ bổ sung sau.
Bạn...
>>

Hề hề hề,
Trước hết cám ơn bạn đã dùng lisp do mình viết.
Thứ nữa là việc còn lại một số đối tượng không xoay như bản vẽ bạn post là do các polyline của bạn khá phức tạp. Nó có thể có nhiều giao điểm với đường cắt chứ không phải chỉ có một giao điểm. Do vậy mình đã không xét tới trường hợp này. Để mình xét thêm rồi nếu được sẽ bổ sung sau.
Bạn cần lưu ý thêm với vái lisp của mình là khi lisp yêu cầu bạn Chon điểm tiếp theo thì bạn cứ việc chọn liên tục sao cho cái polyline mà bạn thấy nó tạo ra bao kín hoặc cắt qua các đối tượng bạn cần xoay. Khi bạn không chọn nữa nó sẽ tự động khép kín lại. Tất cả các đối tượng nằm trong hoặc trên polyline này sẽ được chọn với điều kiện toàn bộ vùng chọn đều thấy được trên màn hình.
Một lần nữa cám ơn phản hồi của bạn.

Đây là lisp mình đã bổ sung để đảm bảo cắt sạch các polyline. Bạn dùng thử xem sao nhé. Mình đả thử với bản vẽ 111_2 bạn gửi thì thấy ngon lành. Các trường hợp khác mong bạn test thêm.


Hy vọng bạn vừa ý. Chú ý khi chọn điểm tạo polyline sao cho phù hợp với ý bạn nhé.
<<

Filename: 154488_xbd.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154270
Tên lệnh: xbd
Lisp cắt, xoay Bình đồ

Hề hề hề,
Bạn dùng thử cái này coi có ưng ý không nhé. Có gì chưa ưng hãy post lên để mình xem lại.

Chúc bạn vui

Filename: 154270_xbd.lsp
Tác giả: lenhatanh
Bài viết gốc: 154307
Tên lệnh: du-text
Lisp gán TEXT cho các đường đồng mức

Xin lỗi các Bác, em xin bổ sung hàm đổi Radial thành độ:
(defun Du-dtr (a) (/ (* a 3.141592654) 180.0))
(defun Du-rtd (a) (/ (* a 180.0) 3.141592654))
và đúng là đoạn code đó em đã nhầm dơn vị đo...
Nhờ các Bác và bác PhamThanhBinh sửa lại luôn cho em.

Link đến Files ACAD và Video ví dụ: hthttp://www.mediafire...zlrdmn9a92l6z#1

Filename: 154307_du-text.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 154420
Tên lệnh: xbd
Lisp cắt, xoay Bình đồ

Hề hề hề,
1/- Yêu cầu chọn phía cần xoay mình không chỉnh sửa gì vì xét thấy không cần thiết. Nếu muốn bạn hãy tự sửa.
2/- Mình chưa có cách khác để chọn tất cả các đối tượng ở một phía của đường cắt. Nếu muốn bạn hãy chờ các bác khác ra tay.
3/- Chỉ cần đổi dòng code (setq ans (getstring "\n Chon tam quay < A or B >: ")) lên trước dòng code (setq gq...
>>

Hề hề hề,
1/- Yêu cầu chọn phía cần xoay mình không chỉnh sửa gì vì xét thấy không cần thiết. Nếu muốn bạn hãy tự sửa.
2/- Mình chưa có cách khác để chọn tất cả các đối tượng ở một phía của đường cắt. Nếu muốn bạn hãy chờ các bác khác ra tay.
3/- Chỉ cần đổi dòng code (setq ans (getstring "\n Chon tam quay < A or B >: ")) lên trước dòng code (setq gq (getreal "\n Nhap goc quay theo do: "))
4/- Bổ sung thêm code copy đường cắt rồi xoay chung một lần.

Và đây là cái lisp mình đã chỉnh sửa theo nội dung như trên:


Hy vọng bạn không giận.
<<

Filename: 154420_xbd.lsp
Tác giả: duy782006
Bài viết gốc: 154200
Tên lệnh: htr
-Lệnh HTR
-Nối text trước và sau POIN

Filename: 154200_htr.lsp

Trang 32/330

32