Jump to content
InfoFile
Tác giả: nataca
Bài viết gốc: 47827
Tên lệnh: cc
Viết Lisp theo yêu cầu
sửa lại tý chút ( do quên không đọc yêu cầu cuối cùng của bạn ^_^ )

Filename: 47827_cc.lsp
Tác giả: nataca
Bài viết gốc: 47447
Tên lệnh: 3q%09 12q
Viết Lisp theo yêu cầu


Filename: 47447_3q%09_12q.lsp
Tác giả: ssg
Bài viết gốc: 47788
Tên lệnh: dbs
Viết Lisp theo yêu cầu


Bạn dùng lisp sau. Gõ lệnh DBS (Dim Bị Sửa!) -> toàn bộ các dim bị "độ chế" sẽ chuyển sang màu đỏ:


Lưu ý
Các Dim "không bị sửa" và được gán Dim Scale Linear khác 1 vẫn được cho là hợp lệ. Nếu bạn có nhu cầu phát hiện luôn các "chú" này thì ssg sẽ bổ sung thêm.

Filename: 47788_dbs.lsp
Tác giả: ssg
Bài viết gốc: 47404
Tên lệnh: vc
Bảng toạ độ các đỉnh thửa đất
Ssg hiểu rồi, cám ơn bạn!
Đây là "chương trình hợp tác" Chào Mừng Năm Mới 2009 của ssg và elleHCSC. Các bạn dùng, check thử và cho ý kiến để hoàn thiện thêm:


Filename: 47404_vc.lsp
Tác giả: gia_bach
Bài viết gốc: 47109
Tên lệnh: chuyen
Lisp đổi kiểu nét của Layer sang Hidden2 và Line type scale =0.25



Tổng hợp 2 LISP của Tue_NV và tuan_thietkedien

Filename: 47109_chuyen.lsp
Tác giả: ssg
Bài viết gốc: 47233
Tên lệnh: vd
tìm giao điểm của 2 đối tượng


Bạn dùng hàm GiaoDT sau. Cái này của anh Hoành viết lâu rồi ở đâu đó, ssg có biên tập thêm một chút:



Kết quả là một "list of 3Dpoint", gồm toàn bộ các giao điểm của 2 đối tượng, bất kể loại đối tượng nào, miễn là nó có dạng "đường", kể cả đường bao của đối tượng region. Nếu không có giao điểm, kết quả return nil.
Không bàn đến ý nghĩa các code...
>>

Bạn dùng hàm GiaoDT sau. Cái này của anh Hoành viết lâu rồi ở đâu đó, ssg có biên tập thêm một chút:



Kết quả là một "list of 3Dpoint", gồm toàn bộ các giao điểm của 2 đối tượng, bất kể loại đối tượng nào, miễn là nó có dạng "đường", kể cả đường bao của đối tượng region. Nếu không có giao điểm, kết quả return nil.
Không bàn đến ý nghĩa các code lúc này, cứ dùng đã rồi sẽ hiểu!
Một ví dụ:



Chạy lệnh VD, bấm F2 sẽ thấy giá trị return.
<<

Filename: 47233_vd.lsp
Tác giả: ssg
Bài viết gốc: 46250
Tên lệnh: ad
Viết Lisp theo yêu cầu

Bạn thử lisp này xem sao. Lệnh AD (AutoDim):


Lưu ý:
1. Yêu cầu của bạn nếu chỉ với Line thì có thể đơn giản, nhưng có cả Pline thì cũng khá lôi thôi khi lập trình
2. Khi dim trực tiếp, user có sự nhìn nhận tổng quát để đặt vị trí dim linh hoạt, phù hợp với nhiều tình huống khác nhau. Với chương trình thì không (hoặc khó) được như vậy vì mọi chương trình...
>>

Bạn thử lisp này xem sao. Lệnh AD (AutoDim):


Lưu ý:
1. Yêu cầu của bạn nếu chỉ với Line thì có thể đơn giản, nhưng có cả Pline thì cũng khá lôi thôi khi lập trình
2. Khi dim trực tiếp, user có sự nhìn nhận tổng quát để đặt vị trí dim linh hoạt, phù hợp với nhiều tình huống khác nhau. Với chương trình thì không (hoặc khó) được như vậy vì mọi chương trình đều mang tính máy móc và cứng nhắc. Trong chương trình trên, vị trí đặt dim được áp đặt theo một kiểu duy nhất, cách đối tượng một khoảng do user nhập vào tại dòng nhắc "Khoang cach tu doi tuong den duong kich thuoc <10>:". Mặc định lần đầu là 10, các lần sau chương trình tự nhớ trị số lần trước (nếu bạn chấp nhận trị số trong dấu móc nhọn thì chỉ cần Enter). Tuy nhiên, nhược điểm cũng chính là ưu điểm, bạn cứ yên chí rằng tất cả các dim đều nằm cách đối tượng một khoảng bằng nhau, đều tăm tắp!
3. AutoDim của bất cứ chương trình nào (kể cả các trình CAD "chính quy" có tính năng này), chỉ giúp user tiết kiệm được phần lớn thời gian, nhưng sau đó thường phải edit, chỉnh sửa thêm cho phù hợp.
4. Một điều quan trọng nữa cần lưu ý, khi dùng lisp trên, các dim tạo thành không có tính năng dimassoc. Nghĩa là khi bạn edit đối tượng, dim không tự động update theo được.
<<

Filename: 46250_ad.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 4628
Tên lệnh: wcnt
Viết Lisp theo yêu cầu


Lệnh là WCNT (viết tắt của word count):

Filename: 4628_wcnt.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 46202
Tên lệnh: h2l
Viết Lisp theo yêu cầu


Lệnh là H2L (Hatch to Layer)

Filename: 46202_h2l.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 46239
Tên lệnh: dmtk
Vẽ đường đồng mức thiết kế

Chào bạn phillipdn,
Đây là một lisp mình viết thử theo yêu cầu của bạn. Tuy nhiên do mình không phải dân hạ tầng mà là dân me cha ni cô nên thục sự không biết có hiểu đúng ý bạn hay không. Vì thế mình xin giải thích một chút:
1/- Mình hiểu i 1 = i 2 = i là độ dốc dọc theo đường tim, i 3 là độ dốc mái mặt đường, i 4 là dộ dốc mái lề đường.
2/- Mình mới làm được...
>>

Chào bạn phillipdn,
Đây là một lisp mình viết thử theo yêu cầu của bạn. Tuy nhiên do mình không phải dân hạ tầng mà là dân me cha ni cô nên thục sự không biết có hiểu đúng ý bạn hay không. Vì thế mình xin giải thích một chút:
1/- Mình hiểu i 1 = i 2 = i là độ dốc dọc theo đường tim, i 3 là độ dốc mái mặt đường, i 4 là dộ dốc mái lề đường.
2/- Mình mới làm được phần cho các đoạn đường thẳng, còn các cung cong thì mình chưa nghĩ ra thuật toán giải.
3/- Trong lisp có phần vẽ các đường tim và đường giới hạn lòng lề đường do mình vẽ từ bản vẽ chưa có gì. Nếu bạn đả có bản vẽ sẵn thì có thể bỏ các lệnh vẽ pline này.
4/- Mình chưa làm hộp thoại nên chưa thể lưu các giá trị nhập vào cho lần sau được như ý bạn. Tuy nhiên nếu bạn thấy có thể sử dụng được mình sẽ bổ sung sau. Điều này không quá khó nhưng do mình mới học lisp, chưa thành thạo lắm nên phải từ từ. Vả lại không biết có đúng ý bạn không nên mình hượm đã.
5/- Mình chưa làm động tác loại trừ biến sau khi chạy lisp nên bạn lưu ý khi sử dụng. Nếu dùng chung với các lisp khác phải cẩn thận vì có sự trùng biến.
Rất mong bạn dùng thử rồi cho ý kiến để mình hoàn thiện lại. Thông cảm cho mình do trình độ còn thiếu.
6/- Lệnh chạy lisp là DMTK
Chúc bạn thành công.
http://www.cadviet.com/upfiles/Veduongdongmuc.lsp


<<

Filename: 46239_dmtk.lsp
Tác giả: nk_long
Bài viết gốc: 45805
Tên lệnh: numrec
Viết Lisp theo yêu cầu



Bác xem thử giống ý bác chưa nhá. Mà ở đây không cần là chữ nhật. Cứ đa giác 4 cạnh là được


Filename: 45805_numrec.lsp
Tác giả: ssg
Bài viết gốc: 46179
Tên lệnh: abc
Đánh số thứ tự bằng lệnh Tcount

1. Vì yêu cầu của bạn hơi... kỳ cục! Bạn có thể nói rõ, bạn cần cái lisp kiểu như vậy để làm gì không? Người lập trình chỉ có hứng thú khi biết rằng, lisp họ viết ra có thể giúp ích được cho nhiều người chứ không chỉ đáp ứng một yêu cầu đặc biệt của một người nào đó.
2. Nếu giá trị = 12 thì sao?
3. Dù sao thì yêu cầu của bạn cũng thuộc dạng đơn giản,...
>>

1. Vì yêu cầu của bạn hơi... kỳ cục! Bạn có thể nói rõ, bạn cần cái lisp kiểu như vậy để làm gì không? Người lập trình chỉ có hứng thú khi biết rằng, lisp họ viết ra có thể giúp ích được cho nhiều người chứ không chỉ đáp ứng một yêu cầu đặc biệt của một người nào đó.
2. Nếu giá trị = 12 thì sao?
3. Dù sao thì yêu cầu của bạn cũng thuộc dạng đơn giản, bạn thử lisp này xem. Giá trị = 12 cũng thêm xyz luôn. Tên lệnh ABC:


<<

Filename: 46179_abc.lsp
Tác giả: gia_bach
Bài viết gốc: 45592
Tên lệnh: chdai
LISP tính toán chiều dài đoạn thẳng

Bạn chạy thử LISP này :

Filename: 45592_chdai.lsp
Tác giả: nk_long
Bài viết gốc: 45804
Tên lệnh: ttr
Viết Lisp theo yêu cầu



Chép đoạn mã này về, tạo file lisp mới rồi bác dùng thử nhé:
Các đoạn giao có thể là LINE hoặc PolyLINE. Và lúc chọn bác có thể chọn thoải mái bằng crossing window, các đối tượng được chọn nếu là khác Line hoặc polyline sẽ được loại bỏ.



Filename: 45804_ttr.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 455
Tên lệnh: tkt
Thống kê tấm ốp.
Vừa rồi phải làm một công việc nhàm chán trong AutoCAD, đó là công việc đếm xem trên mặt đứng của một ngôi nhà, có bao nhiêu loại tấm ốp, mỗi tấm ốp có kích thước bao nhiêu, và bao nhiêu tấm mỗi loại. Trên mặt đứng, mỗi tấm là một Polyline được tạo bằng lệnh rectangle (có 4 cạnh).

Tranh thủ viết được một chương trình AutoLisp để làm công việc này. Khi sử dụng lệnh tkt...
>>
Vừa rồi phải làm một công việc nhàm chán trong AutoCAD, đó là công việc đếm xem trên mặt đứng của một ngôi nhà, có bao nhiêu loại tấm ốp, mỗi tấm ốp có kích thước bao nhiêu, và bao nhiêu tấm mỗi loại. Trên mặt đứng, mỗi tấm là một Polyline được tạo bằng lệnh rectangle (có 4 cạnh).

Tranh thủ viết được một chương trình AutoLisp để làm công việc này. Khi sử dụng lệnh tkt (thống kê tấm), chương trình sẽ cho kết quả:

Command: tkt
Hay chon tam:
Select objects: Specify opposite corner: 264 found
89 were filtered out.
Select objects:

So luong cac tam:
461x900: 22 tam
1700x900: 6 tam
2500x900: 108 tam
800x1800: 7 tam
1520x900: 16 tam
2680x900: 16 tam
-------------------------
Mã lệnh AutoLisp:


Với nguyên tắc của lệnh tkt này, chúng ta có thể phát triển thành chương trình thống kê thanh dàn của kết cấu, chương trình đếm số lượng xe ôtô trong gara, liệt kê các block có trong bản vẽ, block nào xuất hiện mấy lần, ... Là cơ sở của các chương trình thống kê.

Rất mong nhận được sự phản hồi khi sử dụng lệnh tkt.
Cảm ơn.
<<

Filename: 455_tkt.lsp
Tác giả: Tue_NV
Bài viết gốc: 45199
Tên lệnh: bc
lisp Thay đổi màu sắc cho các block

Bạn dùng thử đoạn Code này xem sao :
Tên lệnh là BC

Chúc thành công. :cheers:

Filename: 45199_bc.lsp
Tác giả: Zoi
Bài viết gốc: 452
Tên lệnh: dh
Dynamic Hatch :D
Đây là một kiểu hatch khá lạ. Chỉ cần gõ lệnh "DH" và click điểm đầu tiên, việc còn lại là di chuột để có được tỉ lệ hatch :lol:
Lisp này sưu tầm từ AUGIWORLD. www.augi.com

Chú ý: Ai dùng AutoCAD 2006-7 thì mới thử dùng lisp này nhé
>>
Đây là một kiểu hatch khá lạ. Chỉ cần gõ lệnh "DH" và click điểm đầu tiên, việc còn lại là di chuột để có được tỉ lệ hatch :lol:
Lisp này sưu tầm từ AUGIWORLD. www.augi.com

Chú ý: Ai dùng AutoCAD 2006-7 thì mới thử dùng lisp này nhé :lol:


<<

Filename: 452_dh.lsp
Tác giả: Tue_NV
Bài viết gốc: 45267
Tên lệnh: doitext
lisp đổi font cho text sang font .VnHelvetlnsH !!!

Bạn dùng thử đoạn Code này xem nhé :

Filename: 45267_doitext.lsp
Tác giả: ssg
Bài viết gốc: 4503
Tên lệnh: cjt
Nối các điểm chèn text thành những đoạn thẳng theo yêu cầu

Có lẽ bác Hoành bận, để ssg hộ một tay. Đề nghị các bạn lần sau nêu yêu cầu rõ ràng hơn, càng rõ càng tốt. Điều đó giúp người lập trình có định hướng chuẩn xác ngay từ đầu, đỡ mất công sửa đi sửa lại.
Ngay cả đoạn CT dưới đây, ssg cũng không chắc là có đúng ý bạn hay không. Ví dụ: CT đọc text "001r ranh dat", nó sẽ tách ra 2 thành phần:
- Value = "001" = 1
-...
>>

Có lẽ bác Hoành bận, để ssg hộ một tay. Đề nghị các bạn lần sau nêu yêu cầu rõ ràng hơn, càng rõ càng tốt. Điều đó giúp người lập trình có định hướng chuẩn xác ngay từ đầu, đỡ mất công sửa đi sửa lại.
Ngay cả đoạn CT dưới đây, ssg cũng không chắc là có đúng ý bạn hay không. Ví dụ: CT đọc text "001r ranh dat", nó sẽ tách ra 2 thành phần:
- Value = "001" = 1
- Code = "r ranh dat"
Value thì không có vấn đề, nhưng code là thành phần rất "nhạy cảm", nều bạn viết thừa hoặc thiếu dù chỉ 1 dấu cách, ví dụ: "r ranh dat " hoặc "r ranh dat B", chương trình sẽ xem như không cùng code và lọc bỏ.
Tóm lại, bạn phải có quy định rõ và nhất quán về code (mã điểm), cụ thể là sử dụng chính xác bao nhiêu ký tự cho code. Chẳng hạn, nếu bạn quy định 1 ký tự cho code thì (setq code (substr code 1 1)) là xong. Khi đó, chương trình sẽ hiểu:
- Code = "r"
- Các ký tự sau r: " ranh dat..." chỉ là ghi chú, không ảnh hưởng gì.


<<

Filename: 4503_cjt.lsp
Tác giả: Tue_NV
Bài viết gốc: 45143
Tên lệnh: doifont
Lisp đổi Font cho Style, tại sao lỗi khi đổi sang font .VnHelvetlnsH

Đoạn Code của bạn được sửa lại như sau :

Lần này thì chắc chắn thành công. Không tick thanks là giận đó.
Chúc thành công. :cheers:

Filename: 45143_doifont.lsp

Trang 18/330

18