Jump to content
InfoFile
Tác giả: philipdn
Bài viết gốc: 40684
Tên lệnh: ga
Tính diện tích, chu vi, khối lượng của một tiết diện bất kì

Lisp thực hiện chức năng tính và xuất diện tích, chu vi, khối lượng của một tiết diện bất kì khi được chọn.

Filename: 40684_ga.lsp
Tác giả: Tue_NV
Bài viết gốc: 40686
Tên lệnh: ga
Nhờ các bác lisp tính diện tích, chu vi, khối lượng của một tiết diện

Đây là lisp của bạn mình làm theo ý bạn rồi nè :

Bạn chạy thử nhé.

Filename: 40686_ga.lsp
Tác giả: Snowman
Bài viết gốc: 40358
Tên lệnh: cotxx
Đánh cốt tự động bằng lisp DC

Bạn có thể thêm vào lệnh sau Cotxx : dùng để định nghĩa cốt bất kỳ (tương tự cốt 0.00)


Bạn cũng có thể kết hợp với lệnh tăng giảm cốt đồng loạt, tham khảo tại đây
http://www.cadviet.com/forum/index.php?sho...ost&p=37756

Filename: 40358_cotxx.lsp
Tác giả: Tue_NV
Bài viết gốc: 40567
Tên lệnh: scc
XIN lisp về lệnh scale

Mình mới viết được đoạn lisp này. Hy vọng nó chạy theo đúng ý bạn :

.
Các bạn cho ý kiến. Thanks động viên nhé.

Filename: 40567_scc.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 40568
Tên lệnh: cbl3
insert block theo khoảng cách cho trước và nằm giữa hai điểm

block được chèn theo phương của UCS World.

Lệnh CBL3 dưới đây sẽ insert block dọc theo 2 điểm pick:

Filename: 40568_cbl3.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 3917
Tên lệnh: ct
Viết Lisp theo yêu cầu
Có 2 điểm không chuẩn trong đoạn lisp trên của duy782006.

- Thứ nhất, vòng lặp while của bạn không có điều kiện thoát, vì vậy sẽ lặp vĩnh viễn. Bạn hãy move đoạn code (setq b (getpoint "\nChon diem dat moi: ")) vào ngay sau while.

- Thứ hai, bạn select 2 lần, copy 2 lần đối tượng text, như vậy là thừa. Bạn hãy xóa các dòng lệnh thừa đó:
(Prompt "\nChon cac doi tuong chep theo...")
>>
Có 2 điểm không chuẩn trong đoạn lisp trên của duy782006.

- Thứ nhất, vòng lặp while của bạn không có điều kiện thoát, vì vậy sẽ lặp vĩnh viễn. Bạn hãy move đoạn code (setq b (getpoint "\nChon diem dat moi: ")) vào ngay sau while.

- Thứ hai, bạn select 2 lần, copy 2 lần đối tượng text, như vậy là thừa. Bạn hãy xóa các dòng lệnh thừa đó:
(Prompt "\nChon cac doi tuong chep theo...")
(Setq CDT (Ssget))

(command "copy" CDT "" (list xa ya) (list xb yb))

Như vậy, code sẽ trở thành như sau:


Có thể mọi người ngạc nhiên tại sao tôi lại ngồi sửa từng lỗi lisp cho các thành viên? Rất dễ hiểu thôi, tôi cũng đã từng tự học lisp như các bạn. Khi đó chưa có mạng internet, không có chương trình visual lisp, không có ai để hỏi. Nhiều khi mắc một lỗi lisp tìm cả tháng mới biết cách khắc phục. Vì vậy, tôi rất hiểu mong muốn của mọi người khi post các bài thực hành lisp lên đây. Tôi đã và sẽ sửa tiếp như thế! He he!!!
<<

Filename: 3917_ct.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 39909
Tên lệnh: cbl2
insert block theo khoảng cách cho trước và nằm giữa hai điểm


Sorry mình nhầm, lệnh CBL2 dưới đây sẽ nhớ khoảng cách. Khi pick vào block bằng cách nhập tên *, chương trình sẽ lưu luôn layer của block gốc để cho vào các block được tạo ra sau này.

Filename: 39909_cbl2.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 39983
Tên lệnh: doc
lisp độ dốc

Lười đến thế này là cùng.

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

Chương trình sẽ hỏi điểm đầu tiên và độ dốc. Nếu bạn muốn 25%, hãy nhập vào là 25.

Filename: 39983_doc.lsp
Tác giả: tambat
Bài viết gốc: 3851
Tên lệnh: cg
Viết Lisp theo yêu cầu

Các bác ơi sữa giùm mình đoạn lisp sau này nhé.




với đoạn lisp này khi cộng các giá trị mà có tổng của chúng nhỏ hơn 1 thì nó không xuất ra kết quả 0.3 (giả sử kết quả là 0.3), mà kết quả xuất ra là ".3" ; nếu để thế rồi tiền hành phép toán khác thí nó lại không nhận gía trị .3 mà phải sửa lai 0.3 rồi mới thực hiện được.

các bác có...
>>
Các bác ơi sữa giùm mình đoạn lisp sau này nhé.




với đoạn lisp này khi cộng các giá trị mà có tổng của chúng nhỏ hơn 1 thì nó không xuất ra kết quả 0.3 (giả sử kết quả là 0.3), mà kết quả xuất ra là ".3" ; nếu để thế rồi tiền hành phép toán khác thí nó lại không nhận gía trị .3 mà phải sửa lai 0.3 rồi mới thực hiện được.

các bác có thể giúp mình khác phục tình trạng trên không, làm sao để có đươc kết quả là "0.3"
<<

Filename: 3851_cg.lsp
Tác giả: ssg
Bài viết gốc: 38088
Tên lệnh: bdc
Vẽ biên dạng cam bằng lisp


Thiết kế nguyên lý máy, thiết kế cam, vẽ quỹ đạo, mô phỏng, khảo sát chuyển động các cơ cấu cơ khí là "chuyện thường ngày ở huyện" của ssg. Ý tưởng của bạn rất hay, đúng ngay chỗ... ngứa của mình!
Bạn thử dùng chương trình sau:



Hướng dẫn
Vẽ sẵn biên dạng cần gia công, tam giác gá dao (tam giác MPC như ví dụ của bạn) và đường tròn chuẩn....
>>

Thiết kế nguyên lý máy, thiết kế cam, vẽ quỹ đạo, mô phỏng, khảo sát chuyển động các cơ cấu cơ khí là "chuyện thường ngày ở huyện" của ssg. Ý tưởng của bạn rất hay, đúng ngay chỗ... ngứa của mình!
Bạn thử dùng chương trình sau:



Hướng dẫn
Vẽ sẵn biên dạng cần gia công, tam giác gá dao (tam giác MPC như ví dụ của bạn) và đường tròn chuẩn. Chương trình mang tính tổng quát hơn yêu cầu của bạn: cho phép biên dạng gia công có hình dáng bất kỳ chứ không chỉ là hình vuông bo tròn 4 góc. Hình tam giác MPC vẽ sao cũng được, chương trình không quan tâm đến các tham số x, y và góc anpha của bạn (miễn là có hình tam giác thấy trên màn hình là nó... chơi ngay!).
Yêu cầu bắt buộc:
1. Hình tam giác và biên dạng gia công phải là Pline kín
2. Hình tam giác phải có 1 đỉnh nằm trên đưởng tròn, 1 đỉnh nằm trên biên dạng. User phải bảo đảm chính xác và chịu trách nhiệm về điều đó. Nếu không, có thể chương trình không chạy hoặc cho kết quả sai.
User tuỳ chọn "trị số góc của 1 khoảng chia", mặc định là 1 độ, nếu chấp nhận chỉ việc Enter không cần nhập số. Trị số 1 khoảng chia càng nhỏ, kết quả càng chính xác nhưng chương trình chạy lâu hơn. Kết quả cuối cùng là 1 pline kín nối các điểm trên quỹ đạo của điểm C ứng với các khoảng chia. Ngoài ra, để tạo ấn tượng và để dễ kiểm tra khi chạy, chương trình vẽ thêm các point trên quỹ đạo. Nếu không thích, có thể cho các point vào layer nào đó rồi ấn nó đi. Nếu không muốn vẽ các point, xoá bỏ cả dòng code:
(command "point" p3) ;;;Ve cac diem de kiem tra qua trinh chay, khong can thi bo


Đề nghị
Bài toán của bạn phải có một số điều kiện vì các yếu tố: biên dạng gia công, đường tròn và hình tam giác phải có những ràng buộc (bắt buộc) nào đó mới có thể có kết quả. Các ràng buộc bao gồm cả các phương diện:
1. Hình học: nếu tam giác chọn không hợp lý, sẽ có những vị trí nó không thể có 2 đỉnh nằm trên đường tròn và biên dạng gia công.
2. Kỹ thuật: mối quan hệ giữa đường tròn, biên dạng gia công và hình tam giác không hợp lý sẽ dẫn đến những biên dạng cam... kỳ quái, không thoả mãn các điều kiện kỹ thuật bình thường của cơ cấu cam
3. Công nghệ: vị trí dao chạy trên biên dạng không hợp lý sẽ dẫn đến việc có những vị trí dao không thể cắt gọt được (theo nguyên lý cắt kim loại)
Nói chung, vấn đề này có thể nâng lên thành một đề tài nghiên cứu khoa học! Sau bước thiết kế biên dạng cam với sự hỗ trợ của chương trình, bạn có thể thiết kế ra cả cơ cấu cam, có hình dáng kích thước cụ thể; có bộ gá dao, con dao và chi tiết gia công cụ thể.... Bạn chuyển tất cả chúng thành các bản vẽ (*.dwg) và post lên để anh em cùng thảo luận, trao đổi và học tập lẫn nhau. OK?
Vấn đề này đã đi sâu vào chuyên ngành Cơ khí, có lẽ bạn vào box Cơ khí, lập topic mới cho nó thì hay hơn là thảo luận ở đây.
<<

Filename: 38088_bdc.lsp
Tác giả: duy782006
Bài viết gốc: 3813
Tên lệnh: kbv
-Lệnh KBV
-Nhớ sao lưu trước vì khi gỏ lệnh KBV là nó nát ten beng luôn. Thời gian chạy cũng hơi lâu, bản vẽ sẽ nặng gấp đôi.
-Sau khi xong thì không in và không sửa được nửa.

Filename: 3813_kbv.lsp
Tác giả: duy782006
Bài viết gốc: 3791
Tên lệnh: nd%0D%0A
-Lệnh ND
-MATCHPROP nội dung TEXT,

Filename: 3791_nd%0D%0A.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 3806
Tên lệnh: nd
Viết Lisp theo yêu cầu

Multi đây:


Filename: 3806_nd.lsp
Tác giả: Snowman
Bài viết gốc: 37830
Tên lệnh: tdf
kiểm tra giúp em cái lisp pick tọa độ
Lỗi này quả là rất ...thú vị :leluoi: và cũng nguy hiểm đối với các programer :s_dead:
Vì thông thường, một người ko trực tiếp viết code thì hơi khó phát hiện khi chỉ test 1, 2 lần.
Tôi cũng như bác...
>>
Lỗi này quả là rất ...thú vị :leluoi: và cũng nguy hiểm đối với các programer :s_dead:
Vì thông thường, một người ko trực tiếp viết code thì hơi khó phát hiện khi chỉ test 1, 2 lần.
Tôi cũng như bác Hoành, mới đầu ko thấy vấn đề j cả, tưởng bạn post nhầm
Giờ chú ý lại mới thấy cái chỉ số tên file "i" của bạn có vấn đề
- Thứ nhất: với dòng (setq i 1) ở đoạn đầu thì chỉ số của bạn đã bị đặt cố định ko thể tăng lên 3. Ở đây bạn fải thêm một dòng kiểm tra
(if i
(setq i (1+ i))
(setq i 1)
)
- Thứ 2: với dòng (if (= nil (findfile tfile)) bạn chỉ kiểm tra được 1 lần. Chẳng hạn đã có file A1, A2, A3, ban đầu i = 1,
biến i sẽ được tăng lên i = 2 rồi dừng lại ko kiểm tra tiếp, file A3 sẽ bị ghi đè.
Bạn fải đưa vào một vòng lặp tăng i và kiểm tra đến khi nào ko trùng tên file mới dừng.
Đây là đoạn code đã sửa lại:


<<

Filename: 37830_tdf.lsp
Tác giả: jikibo
Bài viết gốc: 37505
Tên lệnh: 2
Cách lưu layer trên bản vẽ mới
hoặc có thể dùng lisp để tạo layer. tôi vẫn dùng cách này.



lisp này khi bạn nhấn lệnh "2" sẽ tạo ra layer 2 với mầu số 2(vàng)

Filename: 37505_2.lsp
Tác giả: tambat
Bài viết gốc: 3769
Tên lệnh: ct
Viết Lisp theo yêu cầu

Bác Nguyen Hoanh ơi ! sao mình không tải được, vã lại có cách nào khác không (chỉ sử dụng lisp không thôi, mà không phai dùng file TD.dwg nữa không.

nhân tiện nhờ bác chỉ giùm mình sửa đoạn lisp này với nha'

đoạn lisp này sau khi chạy thì nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp mình lấy lại tựa chọn cũ hay không, vã lại bài toán trên có thể...
>>

Bác Nguyen Hoanh ơi ! sao mình không tải được, vã lại có cách nào khác không (chỉ sử dụng lisp không thôi, mà không phai dùng file TD.dwg nữa không.

nhân tiện nhờ bác chỉ giùm mình sửa đoạn lisp này với nha'

đoạn lisp này sau khi chạy thì nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp mình lấy lại tựa chọn cũ hay không, vã lại bài toán trên có thể ghi tọa độ theo kiện ghi cao độ trong đoạn này được không?


<<

Filename: 3769_ct.lsp
Tác giả: gia_bach
Bài viết gốc: 37159
Tên lệnh: tachchuoi
Tách chuỗi trong lisp

Bạn dùng thử đoạn LISP này :
Hàm tách 1 chuỗi : trả về số nguyên (nếu thành công) với chuỗi định dạng cho trước.
(str_left_truncate "abc123" "abc") -> 123
(str_left_truncate "abc123.0" "abc") -> nil : 123.0 là số thực
(str_left_truncate "abc1 000" "abc") -> nil : 1 000 không phải là kiểu số

Filename: 37159_tachchuoi.lsp
Tác giả: Snowman
Bài viết gốc: 37237
Tên lệnh: dsc
Viết Lisp theo yêu cầu

Bạn cần đánh số cột đèn đúng ko :leluoi:
Cái này tôi đã làm giúp một đồng chí ở cty, nhưng có cái khác là bạn phải ký hiệu dạng T3-L1/4/A hoặc T3-L1/4:A . Tôi ko fải dân chuyên ngành điện nên ko hiểu được cách ký hiệu nào đúng. Tôi đưa lên lisp phục vụ cả 2 cách để bạn lựa chọn ...
>>

Bạn cần đánh số cột đèn đúng ko :leluoi:
Cái này tôi đã làm giúp một đồng chí ở cty, nhưng có cái khác là bạn phải ký hiệu dạng T3-L1/4/A hoặc T3-L1/4:A . Tôi ko fải dân chuyên ngành điện nên ko hiểu được cách ký hiệu nào đúng. Tôi đưa lên lisp phục vụ cả 2 cách để bạn lựa chọn :s_dead: )
Cách dùng: tạo một text đầu tiên, đánh lệnh "DSC", chọn text gốc, chọn giá trị bước nhảy, chọn điểm gốc copy -- chọn điểm copy tới ... đến khi muốn dừng thì thôi.

<<

Filename: 37237_dsc.lsp
Tác giả: Snowman
Bài viết gốc: 37045
Tên lệnh: rt lft cct crt
Yêu cầu lisp căn chỉnh vị trí Text !
Đây là lisp để bạn tham khảo và có thể phát triển thêm, trước đây tôi viết chơi nhưng chẳng mấy khi dùng đến.
Lệnh rt: căn lề phải (cho các text xếp theo dạng cột)
lft: căn lề trái ( "" "" )
cct : căn giữa cho cột text
crt : căn giữa cho hàng text
Bạn có thể chỉnh sửa lại tuỳ theo yêu cầu sử dụng (căn theo x, y, z ...)

>>
Đây là lisp để bạn tham khảo và có thể phát triển thêm, trước đây tôi viết chơi nhưng chẳng mấy khi dùng đến.
Lệnh rt: căn lề phải (cho các text xếp theo dạng cột)
lft: căn lề trái ( "" "" )
cct : căn giữa cho cột text
crt : căn giữa cho hàng text
Bạn có thể chỉnh sửa lại tuỳ theo yêu cầu sử dụng (căn theo x, y, z ...)


Dạo này vào quý IV, các bác nhà mình bận Tổng kết với ...đi đòi nợ hay sao mà thấy diễn đàn ... vắng vẻ (Ít có những yêu cầu kích thích sáng tạo ) :leluoi:
<<

Filename: 37045_rt_lft_cct_crt.lsp
Tác giả: vndesperados
Bài viết gốc: 3686
Tên lệnh: xo
Xoay text thuộc tính trong block




Block này hiển thị đến 3 thông tin luôn. Đó mới chỉ là ký hiệu thôi. Còn thông tin về dân số và diện tích nằm trong 2 phần 1/4 hình tròn
Bác nhập đủ rồi test thử lại xem sao

Filename: 3686_xo.lsp

Trang 21/330

21