Jump to content
InfoFile
Tác giả: jikibo
Bài viết gốc: 4482
Tên lệnh: xminsert
Đố vui

Filename: 4482_xminsert.lsp
Tác giả: Tue_NV
Bài viết gốc: 44859
Tên lệnh: ldim
Giúp người mới học AutoLisp

Đoạn code đây :

Mong rằng bạn hiểu.

Filename: 44859_ldim.lsp
Tác giả: Gathienology
Bài viết gốc: 44873
Tên lệnh: dt
Ứng dụng LISP để vẽ bản vẽ kiến trúc (phần cơ bản)
Bác cho em hỏi lisp để tính diện tích. Em thường dùng chú này


mà hay bị lỗi lắm. Có cái nào ngon hơn không ạ?

Filename: 44873_dt.lsp
Tác giả: AGX10
Bài viết gốc: 44718
Tên lệnh: tr eet
lệnh trim và extend chọn môt lúc nhiều đối tượng

Thử cái này coi sao

Filename: 44718_tr_eet.lsp
Tác giả: ssg
Bài viết gốc: 44534
Tên lệnh: hh
Giúp người mới học AutoLisp

Sách hay thầy cũng chỉ giúp cho bạn cái nền cơ bản. Đã "chơi trò lập trình", bạn phải chịu khó tư duy và thực hành nhiều.
Đề bài của bạn không khó về kỹ thuật lập trình, chỉ hơi phức tạp về hình học thuần tuý. Không nên suy nghĩ theo hướng trim, extend.... Dùng các lệnh này trong chương trình cũng được, nhưng chúng tiềm ẩn rất nhiều bất ổn, nhất là khi trên bản vẽ có...
>>

Sách hay thầy cũng chỉ giúp cho bạn cái nền cơ bản. Đã "chơi trò lập trình", bạn phải chịu khó tư duy và thực hành nhiều.
Đề bài của bạn không khó về kỹ thuật lập trình, chỉ hơi phức tạp về hình học thuần tuý. Không nên suy nghĩ theo hướng trim, extend.... Dùng các lệnh này trong chương trình cũng được, nhưng chúng tiềm ẩn rất nhiều bất ổn, nhất là khi trên bản vẽ có nhiều đối tượng chằng chịt, bạn khó lường hết những tác động có thể xảy ra.
Hãy suy nghĩ thật đơn giản: hình vẽ của bạn có thể thực hiện bằng 1 lệnh pline duy nhất, trong đó chứa các đoạn thẳng và cung tròn. Chỉ cần xác định các điểm đặc biệt (bằng hình học) là OK.

Hình vẽ:
http://www.cadviet.com/upfiles/hh.jpg

Chương trình lisp:


Với cung cách như trên, bạn có thể vẽ được bất cứ hình phức tạp nào, miễn là có đủ các yếu tố để xác định nó.
Chúc thành công.
<<

Filename: 44534_hh.lsp
Tác giả: jikibo
Bài viết gốc: 445
Tên lệnh: chgtext cht
Ứng dụng LISP để vẽ bản vẽ kiến trúc (phần cơ bản)

Bài 11: Hiệu chỉnh Text
AutoDesk cung cấp cho chúng ta một lisp rất hây, nhưng lại được ít người quan tâm, và đây !



Lệnh cht giúp ta rất nhiều khi hiệu chỉnh chữ, ví dụ như chiều cao, góc...ta chẳng cần phải vào bảng thuộc tính (Ctrl+1) để sửa nữa, mọi thứ đều dùng dòng lệnh, nhanh hơn gấp bội...

Filename: 445_chgtext_cht.lsp
Tác giả: Tue_NV
Bài viết gốc: 44401
Tên lệnh: dm
Lisp đổi màu layer ?????????

Bạn thử dùng code này xem :

:cheers:

Filename: 44401_dm.lsp
Tác giả: ssg
Bài viết gốc: 44216
Tên lệnh: ctr
Lisp đánh số thửa cho thửa đất


Tuyệt lắm!
Cám ơn bạn rất nhiều! Bạn đã "trả nợ" giúp ssg!
Nếu bạn có điều gì vướng mắc về lisp, ssg sẽ cố gắng hỗ trợ, xem như chuộc lỗi với bạn tnmtpc cũng như toàn thể anh em trắc địa.
Về centroid, bạn tham khảo đoạn code sau và có thể biên tập lại theo ý muốn.

Lisp tạo Point tại Centroid của các đối tượng Pline kín. Lệnh CTR:


Lấy...
>>

Tuyệt lắm!
Cám ơn bạn rất nhiều! Bạn đã "trả nợ" giúp ssg!
Nếu bạn có điều gì vướng mắc về lisp, ssg sẽ cố gắng hỗ trợ, xem như chuộc lỗi với bạn tnmtpc cũng như toàn thể anh em trắc địa.
Về centroid, bạn tham khảo đoạn code sau và có thể biên tập lại theo ý muốn.

Lisp tạo Point tại Centroid của các đối tượng Pline kín. Lệnh CTR:


Lấy Area, Perimeter, Vertex chắc bạn đã biết rồi?
<<

Filename: 44216_ctr.lsp
Tác giả: Tue_NV
Bài viết gốc: 44248
Tên lệnh: xscale xsc
Lisp scale theo 1 trục hay bị lỗi, nhờ sửa giúp !!!!
Líp của bạn không có lỗi gì cả. Tuy nhiên, có chỉnh sửa đôi chút để Lisp chạy tốt hơn

:cheers:

Filename: 44248_xscale_xsc.lsp
Tác giả: elleHCSC
Bài viết gốc: 44262
Tên lệnh: dst
Lisp đánh số thửa cho thửa đất

Loay hoay cả tối qua mới ra được thế này, cũng chưa kịp xem qua gợi ý của Ssg. elle up lên để Ssg dòm lại qua 1 lượt vì mình viết ko được sáng sủa lắm, dần dần sẽ update sau.
Hiện giờ đòi hỏi chỉ cần có Closed_Polyline còn việc tìm Centroid và tính diện tích, đánh số thửa đã giải quyết xong:
file vd chỉ cần như vầy :
http://www.cadviet.com/upfiles/Out_2.dwg


>>
Loay hoay cả tối qua mới ra được thế này, cũng chưa kịp xem qua gợi ý của Ssg. elle up lên để Ssg dòm lại qua 1 lượt vì mình viết ko được sáng sủa lắm, dần dần sẽ update sau.
Hiện giờ đòi hỏi chỉ cần có Closed_Polyline còn việc tìm Centroid và tính diện tích, đánh số thửa đã giải quyết xong:
file vd chỉ cần như vầy :
http://www.cadviet.com/upfiles/Out_2.dwg



Chắc tới thì Ssg làm thêm cho cái GUI để user chọn option vì elle cũng thử cái dialog bằng file DCL nhưng sao lisp xử lý chuối thế. Thiết kế 1 cái dialog vất thật !
<<

Filename: 44262_dst.lsp
Tác giả: elleHCSC
Bài viết gốc: 44181
Tên lệnh: dst
Lisp đánh số thửa cho thửa đất


Độ rộng thì bác tìm đoạn

Filename: 44181_dst.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 44135
Tên lệnh: gbb
Viết Lisp theo yêu cầu

Lệnh GBB (get bounding box) dưới đây sẽ giúp bạn tìm Xmax, Xmin, Ymax, Ymin của các đối tượng được chọn. Chương trình sẽ ghi ra màn hình text tọa độ và vẽ vào màn hình ACAD 2 điểm point tọa độ góc dưới trái và trên phải của hình vuông bao tập đối tượng.

Filename: 44135_gbb.lsp
Tác giả: Tue_NV
Bài viết gốc: 44127
Tên lệnh: xscale xsc
scale theo trục x và y

Nếu muốn như vậy thì bạn phải sử dụng Lisp Scale theo 1 phương X trước rồi tiếp theo đó bạn scale 1 chiều theo phương Y sau.
Như vậy thì mới đạt được kết quả mong muốn .
Đây là lệnh XSC : Scale theo 1 phương :

Filename: 44127_xscale_xsc.lsp
Tác giả: jikibo
Bài viết gốc: 438
Tên lệnh: bf
Ứng dụng LISP để vẽ bản vẽ kiến trúc (phần cơ bản)
Bản vẽ cũng ổn rồi. chuẩn bị viết TEXT và Dim thôi. Nhưng trước khi chuyển sang phần mới. Tôi muốn cho cho các bạn biết thêm 2 mẹo nữa khi vẽ.

Bài 8: Break đối tượng
Nhiều người sẽ bảo có lệnh Break (br) rồi cần gì LISP. Nhưng không! Lệnh BR thường không chặt điểm mà chặt đoạn nếu ta không cẩn trọng.



Lệnh jl rất tiện. Bạn thử dùng mà xem...
>>
Bản vẽ cũng ổn rồi. chuẩn bị viết TEXT và Dim thôi. Nhưng trước khi chuyển sang phần mới. Tôi muốn cho cho các bạn biết thêm 2 mẹo nữa khi vẽ.

Bài 8: Break đối tượng
Nhiều người sẽ bảo có lệnh Break (br) rồi cần gì LISP. Nhưng không! Lệnh BR thường không chặt điểm mà chặt đoạn nếu ta không cẩn trọng.



Lệnh jl rất tiện. Bạn thử dùng mà xem...

Hẹn gặp lại vào bài sau "Những Lisp sử dụng để hoàn thiện bản vẽ". Chúc các bạn vui vẻ
<<

Filename: 438_bf.lsp
Tác giả: Tue_NV
Bài viết gốc: 43802
Tên lệnh: hc hm ha hs hcg hmg
copy hatch!!!!

Thành công rồi , bạn ạ .
Tên lệnh :
Đây là đoạn Code hoàn chỉnh và trọn vẹn nhất :
1. Lệnh HC : Copy tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
2. Lệnh HM : Move tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
3. Lệnh HA : Thay đổi góc của tất cả...
>>

Thành công rồi , bạn ạ .
Tên lệnh :
Đây là đoạn Code hoàn chỉnh và trọn vẹn nhất :
1. Lệnh HC : Copy tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
2. Lệnh HM : Move tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
3. Lệnh HA : Thay đổi góc của tất cả các mẫu Hatch (trừ mẫu hatch SOLID và Gradient)
4. Lệnh HS : Thay đổi tỉ lệ của tất cả các mẫu Hatch (trừ mẫu hatch SOLID và Gradient)
5. Lệnh HCG : Copy các mẫu hatch Gradient (có vòng lặp để thực hiện chọn đối tượng Hatch Solid).
6. Lệnh HMG : Move các mẫu hatch Gradient (có vòng lặp để thực hiện chọn đối tượng Hatch Solid).

(Lệnh HCG và HMG cũng có thể copy và move cho tất cả các mẫu hatch còn lại (kể cả mẫu hatch Solid). Cải tiến đó. :cheers:

Nhưng để copy, move mẫu hatch Solid bạn nên sử dụng lệnh HC và HM vì nó nhanh hơn 1 bước).

Sử dụng Code sau, bạn sẽ thấy :


Chúc thành công.
<<

Filename: 43802_hc_hm_ha_hs_hcg_hmg.lsp
Tác giả: Tue_NV
Bài viết gốc: 43658
Tên lệnh: hc hm ha hs
copy hatch!!!!
Như đã phân tích ở trên :
Tất cả các mẫu Hatch đều nhận giá trị của biến HPSCALE, HPANG, HPSPACE. Riêng có mẫu hatch Solid là không nhận giá trị này.
HPNAME : Là biến xác định tên của mẫu Hatch.
Như vậy thì tất cả các mẫu Hatch đều nhận biến HPNAME.

Do đó, ta sử dụng cấu trúc điều kiện If
Nếu HPNAME = SOLID thì thực hiện lệnh Copyhatch SOLID, Move hatch SOLID theo...
>>
Như đã phân tích ở trên :
Tất cả các mẫu Hatch đều nhận giá trị của biến HPSCALE, HPANG, HPSPACE. Riêng có mẫu hatch Solid là không nhận giá trị này.
HPNAME : Là biến xác định tên của mẫu Hatch.
Như vậy thì tất cả các mẫu Hatch đều nhận biến HPNAME.

Do đó, ta sử dụng cấu trúc điều kiện If
Nếu HPNAME = SOLID thì thực hiện lệnh Copyhatch SOLID, Move hatch SOLID theo đoạn Code của mình
Nếu HPNAME khác SOLID thì thực hiện lệnh Copy hatch, move hatch có chứa biến HPSCALE, HPANG.

Do đó , mình xin hoàn thiện đoạn Code này :

1. Lệnh HC : Copy tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID)
2. Lệnh HM : Move tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID)
3. Lệnh HA : Thay đổi góc của tất cả các mẫu Hatch (trừ mẫu hatch SOLID)
4. Lệnh HS : Thay đổi tỉ lệ của tất cả các mẫu Hatch (trừ mẫu hatch SOLID)

Lưu ý khi chọn Hatch Solid bạn nên pick chuột vào đường biên để dễ chọn


Chúc các bạn thành công.
Nhớ tick thanks ủng hộ mình nhé.
Cảm ơn các bạn rất nhiều. :cheers:
<<

Filename: 43658_hc_hm_ha_hs.lsp
Tác giả: Tue_NV
Bài viết gốc: 43691
Tên lệnh: hc hm ha hs
copy hatch!!!!

Trước hết xin chân thành cảm ơn bạn Duy Rất là nhiều.
Đúng là Hatch Solid nhiều khi nó không nhận được đối tượng nên Lisp bị lỗi.
Nên thường ta chọn Hatch Solid ở ngay đường biên của nó thì Lisp sẽ nhận được đối tượng.
Để có thể chọn được đối tượng ta nên bổ sung thêm vòng lặp chổ chọn đối tượng mẫu nếu giá trị là nil thì cho nó lặp lại đến khi...
>>

Trước hết xin chân thành cảm ơn bạn Duy Rất là nhiều.
Đúng là Hatch Solid nhiều khi nó không nhận được đối tượng nên Lisp bị lỗi.
Nên thường ta chọn Hatch Solid ở ngay đường biên của nó thì Lisp sẽ nhận được đối tượng.
Để có thể chọn được đối tượng ta nên bổ sung thêm vòng lặp chổ chọn đối tượng mẫu nếu giá trị là nil thì cho nó lặp lại đến khi nào chọn được đồi tượng hãy làm các bước tiếp theo.
Mình đã bổ sung vào đó đây rồi.
Đây là đoạn Code hoàn chỉnh và trọn vẹn nhất :
1. Lệnh HC : Copy tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
2. Lệnh HM : Move tất cả các mẫu hatch (Kể cả mẫu Hatch SOLID) (có vòng lặp để thực hiện chọn đối tượng Hatch Solid)
3. Lệnh HA : Thay đổi góc của tất cả các mẫu Hatch (trừ mẫu hatch SOLID)
4. Lệnh HS : Thay đổi tỉ lệ của tất cả các mẫu Hatch (trừ mẫu hatch SOLID)

Cảm ơn bạn Duy nhiều nhé.
Cảm ơn mọi người.
<<

Filename: 43691_hc_hm_ha_hs.lsp
Tác giả: Tue_NV
Bài viết gốc: 43520
Tên lệnh: chuyen
Lineweight 0.2mm sáng khi nhấn tab LWT

Vân đề của bạn tới đây mình đã giả quyết được rồi.
Bạn hãy sử dụng đoạn Code sau xem nhé. Ten lệnh là chuyen .
Chú ý màu của bạn không phải là bylayer mới thực hiện được.

Chức năng chuyển đối tượng có màu A sang lineweight B


Khuyên bạn : Màu có Lineweight = 0mm, 0.09mm nên là 2 màu khác nhau để đẽ xử lý. Vì 2 màu trùng nhau khi xử lý dùng đoạn...
>>

Vân đề của bạn tới đây mình đã giả quyết được rồi.
Bạn hãy sử dụng đoạn Code sau xem nhé. Ten lệnh là chuyen .
Chú ý màu của bạn không phải là bylayer mới thực hiện được.

Chức năng chuyển đối tượng có màu A sang lineweight B


Khuyên bạn : Màu có Lineweight = 0mm, 0.09mm nên là 2 màu khác nhau để đẽ xử lý. Vì 2 màu trùng nhau khi xử lý dùng đoạn code trên sẽ chọn 1 màu, đồng nghĩa với 2 Lineweight = 0mm, 0.09mm được chọn

Bạn thấy với lineweight 0.3mm và 0.5mm sẽ sáng 2 mức khác nhau , còn lineweight 0mm và 0.09mm và 0.2mm vẫn như cũ. đây là những cái mà CAD đặt ra, bạn không thể thay đổi được.

Và bạn sẽ có thể làm được điều này khi sử dụng đoạn Code trên bằng cách đánh lệnh chuyển lineweight 0mm , 0.09mm và 0.20mm qua các linewweight có độ hiển thị sáng hơn.
Khi cần thiết cũng sử dụng lại đoạn Code trên trả lại vị trí ban đàu như lineweight của nó.
<<

Filename: 43520_chuyen.lsp
Tác giả: Tue_NV
Bài viết gốc: 43648
Tên lệnh: chuyen
Lineweight 0.2mm sáng khi nhấn tab LWT

Chắc chắn rằng bản vẽ của bạn chọn đối tượng đúng có màu là Bylayer nên quét đối tượng không nhận.
Giải pháp nhanh nhất trong trường hợp này là dùng công cụ quickselect để chọn các đối tượng có màu Bylayer theo Lineweight, hoặc theo Layer tuỳ bạn.
Sau khi chọn các đối tượng có màu Bylayer theo Quick select xong thì có 3 cách để đổi các đối tượng có màu Bylayer sang màu mà...
>>

Chắc chắn rằng bản vẽ của bạn chọn đối tượng đúng có màu là Bylayer nên quét đối tượng không nhận.
Giải pháp nhanh nhất trong trường hợp này là dùng công cụ quickselect để chọn các đối tượng có màu Bylayer theo Lineweight, hoặc theo Layer tuỳ bạn.
Sau khi chọn các đối tượng có màu Bylayer theo Quick select xong thì có 3 cách để đổi các đối tượng có màu Bylayer sang màu mà bạn muốn :
Cách 1 : (Nhanh nhất) bạn chọn trên thanh công cụ Properties , chọn màu cần chuyển là OK.
Cách 2 : Đánh lệnh Change hoặc lệnh Chprop Và ở dòng Select Object : gõ chữ P (Previous) để nhận các đối tượng đã chọn trước đó bằng Quick Select.
Cách 3 : Bạn có thể dùng Lisp để thực hiện việc này để chuyển các đối tượng đã chọn sang màu mà bạn muốn.
Bạn nói rằng đã hiểu đoạn Code dưới đây thì việc thực hiện viết Code chuyển các đối tượng sang màu khác là không khó.
Gợi ý :
Kết quả đầu vào : Chon số hiệu màu, chọn đối tượng cần chuyển
Kết quả đầu ra : Đối tượng sẽ chuyển sang màu mà bạn đã chọn ở kết quả đầu vào



Mong rằng bạn hiểu.
Chúc thành công.
<<

Filename: 43648_chuyen.lsp
Tác giả: gia_bach
Bài viết gốc: 43388
Tên lệnh: changetext
Lisp đổi Text được chọn có chiều cao Height=0.2 và Width factor = 3 ????


Bạn dùng thử LISP này :
Không biết bạn có gõ nhầm không? thực tế tui thấy bản vẽ ít dùng text có Width factor = 3

Filename: 43388_changetext.lsp

Trang 19/330

19