Jump to content
InfoFile
Tác giả: ketxu
Bài viết gốc: 129532
Tên lệnh: dl
Phát âm với Lisp


Nói bằng Lisp (voice)

Filename: 129532_dl.lsp
Tác giả: ketxu
Bài viết gốc: 129218
Tên lệnh: shbv
Đánh số thứ tự bản vẽ tự động?

- Đánh số bản vẽ - Ver của bác Tuệ


Filename: 129218_shbv.lsp
Tác giả: ketxu
Bài viết gốc: 129255
Tên lệnh: cht
Thay đổi cỡ chữ của các Text được chọn
Lệnh là Qselect bạn ạ.Yêu cầu của chi_pheo k biết là đổi tất cả, đổi theo style, hay đổi theo text chọn :s_big:.
Nếu chọn text trên màn hình thì có thể dùng cách bác Tuệ nói, hoặc :

Filename: 129255_cht.lsp
Tác giả: thiep
Bài viết gốc: 129124
Tên lệnh: iapl
Lấy arc từ polyline


Chào Thaistreetz, hàm (acet-geom-pline-arc-info p1 p2 a) được sử dụng chỉ khi biết p1 p2 và a (độ cong của arc). Hàm này trả về 1 list có 5 thông tin. Muốn tìm a thì có thể dùng hàm (acet-pline-segment-list e1). Tuy nhiên để thông suốt theo yêu cầu của lispnewb, Thiep đưa ra lisp có (acet-geom-pline-arc-info p1 p2 a) sau:

Filename: 129124_iapl.lsp
Tác giả: gia_bach
Bài viết gốc: 129036
Tên lệnh: vg
Vẽ vuông góc với 1 Pline bất kì

pfievxd thử lisp này :

Filename: 129036_vg.lsp
Tác giả: ketxu
Bài viết gốc: 128473
Tên lệnh: keodai
Kéo dài 2 đầu của các đoạn được chọn



- Kéo dài về 2 phía các đối tượng được chọn 1 khoảng nào đó
Với Pline kín thì k sử dụng lengthen để kéo dài được, bạn muốn làm với các cạnh của nó thì phải explode ra.
- Với Arc, nếu đoạn kéo dài lớn hơn phần cung hở, nó sẽ không kéo dài nữa (bỏ qua), nếu 2*đoạn kéo dài lớn hơn cung hở, nó sẽ chỉ kéo dài 1 đầu


Filename: 128473_keodai.lsp
Tác giả: ketxu
Bài viết gốc: 128628
Tên lệnh: pt2p
Vẽ Pline theo số chọn

- Chọn các Text thuộc layer \"CT_SO\", các Text này là các số nguyên, sau đó nhập các số, chương trình sẽ vẽ Pline đi theo số nhập vào.

Filename: 128628_pt2p.lsp
Tác giả: pfievxd
Bài viết gốc: 128931
Tên lệnh: vg
Vẽ vuông góc với 1 Pline bất kì

Okie, bài toán đã giải xong, giai đoạn tiếp theo mình muốn vẽ sang trái và sang phải (1 cách tương đối thôi nha)
Dưới đây là code mình viết, sai nhoe :)( các bác chỉ giáo cho với ah


Filename: 128931_vg.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 12828
Tên lệnh: gdt
Viết Lisp theo yêu cầu
Chương trình dưới đây thực hiện điều bạn muốn.

Lệnh là gdt (gán diện tích).

Filename: 12828_gdt.lsp
Tác giả: 18011985
Bài viết gốc: 128360
Tên lệnh: tl
Đo kích thước nhiều line
Bùm bùm em xin đưa ra 1 lsp có trên diễn đàn để tính chiều dài các thể loại
Tên lệnh TL

Filename: 128360_tl.lsp
Tác giả: ketxu
Bài viết gốc: 127536
Tên lệnh: eco
Lisp tính diện tích theo layer
Mình thấy vệc này tạm thời làm thủ công + lisp đơn giản không hề chậm lắm đâu, và mọi người sẽ hiện thực hóa nó.Ta sẽ không dùng lệnh aa để đo diện tích,vì chưa có đối tượng bao,hoặc phải kích điểm rất lâu,mà dùng mắt thường để tạo ra đường biên đa giác bao ngoài trước.
1.Như bạn nói, đường biên chỉ bao gồm 2 layer, vậy trước tiên bạn layiso 2 layer này trước đã...
>>
Mình thấy vệc này tạm thời làm thủ công + lisp đơn giản không hề chậm lắm đâu, và mọi người sẽ hiện thực hóa nó.Ta sẽ không dùng lệnh aa để đo diện tích,vì chưa có đối tượng bao,hoặc phải kích điểm rất lâu,mà dùng mắt thường để tạo ra đường biên đa giác bao ngoài trước.
1.Như bạn nói, đường biên chỉ bao gồm 2 layer, vậy trước tiên bạn layiso 2 layer này trước đã nhé.
2.Sau đó dùng lisp nối các line bao ngoài thành 1 pline kín
3.Lấy diện tích đa giác bao ngoài này bằng các lisp tính diện tích có sẵn trên diễn đàn
Các thao tác để tạo pline bao ngoài có thể gói gọn bằng lisp này, của 1 Pro người nga do 1 pro người Việt (^^) giới thiệu.Lệnh Eco.Sau khi có em bao ngoài rồi thì việc còn lại k có j phứcc tạp cả ^^


<<

Filename: 127536_eco.lsp
Tác giả: ketxu
Bài viết gốc: 126102
Tên lệnh: test
Lấy Serial ổ đĩa

- Có nhiều phiên bản và thông tin khác nhau trong topic, các bạn vào bài viết gốc để tìm hiểu thêm nhé :)

Filename: 126102_test.lsp
Tác giả: haivt
Bài viết gốc: 12653
Tên lệnh: myprog
Tổng quan về Autolisp
TỔNG QUAN VỀ AUTOLISP - NGÔN NGỮ LẬP TRÌNH TRONG TỰ ĐỘNG HOÁ THIẾT KẾ

1. Giới thiệu về Autolisp
1.1. Sơ lược về LISP
LISP – List Processing là một chuẩn ngôn ngữ lập trình được John McCarthy phát triển vào năm 1956 trong dự án nghiên cứu AI (Artificial Intelligence). Phiên bản đầu tiên LISP 1.5 được giới thiệu vào đầu thập niên 60 và phát triển với nhiều biến thể như: BBNLisp,...
>>
TỔNG QUAN VỀ AUTOLISP - NGÔN NGỮ LẬP TRÌNH TRONG TỰ ĐỘNG HOÁ THIẾT KẾ

1. Giới thiệu về Autolisp
1.1. Sơ lược về LISP
LISP – List Processing là một chuẩn ngôn ngữ lập trình được John McCarthy phát triển vào năm 1956 trong dự án nghiên cứu AI (Artificial Intelligence). Phiên bản đầu tiên LISP 1.5 được giới thiệu vào đầu thập niên 60 và phát triển với nhiều biến thể như: BBNLisp, Interlisp, MacLisp, NIL (New Implementation of Lisp), Franz Lisp…Vào thập niên 70 và đầu những năm 80 đã có máy tính chuyên dụng như Lisp Machines được thiết riêng để chạy những chương trình LISP. Đến năm 1981 để chuẩn hóa LISP các nhà lập trình đã tập hợp và chuẩn hóa thành chuẩn Common LISP. Năm 1984 Golden Common LISP trở thành chuẩn chính thức cho máy tính IBM và sau này phát triển thành XLISP- tiền thân của Autolisp ngày nay.

1.2. Lịch sử phát triển của Autolisp
AutoLisp được phát triển từ XLISP là ngôn ngữ lập trình trên môi trường AutoCAD và được công bố phiên bản đầu tiên 2.18 vào tháng 01 năm 1986. Cùng với sự phát triển của AutoCAD các phiên bản của Autolisp ngày càng được hoàn thiện với nhiều tính năng mới, có thể kể đến một vài phiên bản tiêu biểu như sau:
- Chính thức giới thiệu phiên bản 2.5 tích hợp vào AutoCAD R7 với một số tính tăng cơ bản về các tương tác với đối tượng trong bản vẽ
- Phiên bản 2.6 tích hợp vào AutoCAD R7 với chức năng 3D và một số hàm mới getcorner, getkword, và initget.
- Phiên bản tích hợp vào AutoCAD R12 giới thiệu một số hàm GUI (Graphic User Interface) và ngôn ngữ điều khiển hộp thoại DCL (Dialog Control Language).
- Phiên bản Visual LISP™ giới thiệu cùng với AutoCAD R14 là một môi trường phát triển Autolisp độc lập, trực quan với sự hỗ trợ của các công cụ gỡ rối.
- Visual LISP™ được chính thức tích hợp vào AutoCAD 2000 và từ đó đến nay được bổ sung nhiều tích năng mới.

1.3. Ưu và nhược điểm của Autolisp
1.3.1. Ưu điểm
Làm việc rất tốt và dễ dàng với điểm và các yếu tố hình học.
Rất mềm dẻo, không khắt khe.
Không cần trình dịch - lập trình và thực hiện lệnh.
Chạy được trên tất các các hệ điều hành với cùng 1 file Lisp.
Quản lý đối tượng với List - một kiểu dữ liệu với nhiều ưu điểm vượt trội trong quản lý tọa độ điểm.
Mã nguồn mở và cộng đồng phát triển Autolisp rất rộng lớn.

1.3.2 Nhược điểm
Hình thức bên ngoài không hấp dẫn.
Cú pháp khó hiểu.
Hạn chế, không có trình biên dịch.
Ngôn ngữ trung gian nên thực thi chậm.
Hầu như không thể tương tác với hệ thống.

2. Những khó khăn khi tiếp cận với Autolisp
Có thể khẳng định chắc chắn một điều là Autolisp là một ngôn ngữ rất dễ tiếp cận so với một số ngôn ngữ lập trình khác vì nó là ngôn ngữ lập trình theo kịch bản (Script). Tuy nhiên, để tiếp cận được với Autolisp yêu cầu người học phải có kiến thức nền về lập trình và nắm vững về AutoCAD, đồng thời phải có kiến thức nhất định về hình học. Chương trình Autolisp là một tổ hợp những kịch bản được định trước nằm điều khiển AutoCAD thực thi theo suy nghĩ của người thiết kế.

Đa số mọi người muốn học Autolisp là để giải quyết những bài toán trong lĩnh vực chuyên môn của mình. Để tiếp cận và ứng dụng tốt Autolisp trong công việc yêu cầu người lập trình phải có sự liên hệ với nhu cầu công việc thực tế, điều này phụ thuộc rất lớn vào sở trường của mỗi người. Bạn đang thực hiện một vài thao tác để hoàn thiện bản vẽ của mình và bạn chợt nhận ra nó cứ lặp lại liên tục. Một ý tưởng nảy ra là bạn cần thực hiện một đoạn chương trình Autolisp để tự động thực hiện các thao tác này và chương trình Autolisp được hoàn thành. Điều này có thể giải thích được vì sao một số người lại cảm thấy khó khăn khi tiếp cận với Autolisp mặt dù khả năng tư duy về lập trình của họ khá tốt.

3. Một số khái niệm và cú pháp lập trình
3.1. Giới thiệu
Một chương trình Autolisp luôn bắt đầu bằng dấu “(“ và kết thúc bằng dấu “)”. Một chương trình Autolisp đơn giản như sau:




3.9. Ngôn ngữ điều khiển hộp thoại DCL
Autolisp cung cấp cho người lập trình một ngôn ngữ điều khiển hộp thoại DCL để giải quyết về giao diện tương tác với người sử dụng. Thông qua ngôn ngữ DCL người lập trình có thể thiết kế các Form nhập liệu trực quan giúp cho chương trình trở nên thân thiện hơn.

3.10. Hướng đối tượng
Bản thân Autolisp không phải là ngôn ngữ lập trình hướng đối tượng, nhưng cùng với xu hướng phát triển của lập trình hướng đối tượng bắt đầu từ Visual LISP™ cho AutoCAD R14 hãng AutoDesk đã tích hợp vào AutoCAD công nghệ ActiveX với kỹ thuật lập trình hướng đối tượng VLA (Visual LISP ActiveX). Thông qua công nghệ ActiveX người lập trình có thể diểu khiển tất các các đối tượng trên bản vẽ qua các thuộc tính và phương thức của nó. Điều đặc biệt là người lập trình có thể can thiệp đến một số chức năng như in ấn, định dạng hệ thống AutoCAD mà trước đây Autolisp không can thiệp được. Các chương trình sử dụng công nghệ ActiveX phải được dịch qua chuẩn ARX mới thực thi được trên AutoCAD.

4. Kết luận
Autolisp là một ngôn ngữ lập trình đơn giản, dễ tiếp cận và hiệu quả công việc nó đem lại là đáng kể. Hãy bắt đầu Autolisp với những công việc thường ngày. Những đoạn chương trình Autolisp đơn nhưng có thể giảm được thời gian đáng kể trong việc hoàn thiện các bản vẽ. Một chương trình Autolisp thành công không phải là chương trình có qui mô lớn đến vài chục ngàn dòng lệnh mà đó là chương hiệu quả, giải quyết được các yêu cầu của người thiết kế và tiết kiệm được thời gian thực hiện công việc.

5. Giới thiệu một số địa chỉ tham khảo
5.1. Website hướng dẫn học Autolisp
http://www.jefferypsanders.com/autolisp.html
Bạn đọc có thể tham khảo các tài liệu giới thiệu chi tiết về các hàm dựng sẵn trong Autolisp cũng như các tài liệu giới thiệu về bảng DXF tại đây. Ngoài ra tại website này bạn có thể download miễn phí nhiều chương trình Autolisp rất hay.
http://www.afralisp.com/lispa/lisp.htm
Website hướng dẫn học Autolisp khá chi tiết và đầy đủ. Bạn có thể tham khảo bất kỳ nội dung gì liên quan đến Autolisp tại đây

5.2. Download các chương trình Autolisp
http://xarch.tu-graz.ac.at/autocad/lisp/
http://home.pacifier.com/~nemi/
http://www.autolisppage.com
http://www.caddigest.com
http://www.autolisp.co.uk/
http://www.simplecad.com

5.3. Sách tự học Autolisp
http://votrieuhai.googlepages.com/AutoLispTutorial.chm
http://votrieuhai.googlepages.com/AutoLisp...spTutorials.chm
http://votrieuhai.googlepages.com/AutoLispandMenus.chm
<<

Filename: 12653_myprog.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 12702
Tên lệnh: vtb
vẽ thang có mũi bậc

đây rồi: http://www.cadviet.com/upfiles/maubacthangupload.dwg

Sau khi upload mà bạn quên đường dẫn, bạn hãy nhìn vào phía bên trái của màn hình upload, sẽ có tên file mà bạn vừa upload.

Và đây là lisp bạn cần, lệnh là VTB.
2 biến nb là 'nhô bậc' (theo bản vẽ của bạn là 20) và bk là bán kính vuốt cong (theo...
>>

đây rồi: http://www.cadviet.com/upfiles/maubacthangupload.dwg

Sau khi upload mà bạn quên đường dẫn, bạn hãy nhìn vào phía bên trái của màn hình upload, sẽ có tên file mà bạn vừa upload.

Và đây là lisp bạn cần, lệnh là VTB.
2 biến nb là 'nhô bậc' (theo bản vẽ của bạn là 20) và bk là bán kính vuốt cong (theo bản vẽ của bạn là 10). Bạn có thể sửa nó tùy theo ý bạn.


<<

Filename: 12702_vtb.lsp
Tác giả: ketxu
Bài viết gốc: 125879
Tên lệnh: cbl
Đổi màu tất cả về ByLayer

- Bản bác ssg viết

Filename: 125879_cbl.lsp
Tác giả: Tue_NV
Bài viết gốc: 125896
Tên lệnh: cbl
Nhờ viết lisp đổi màu về bylayer

Lỗi này chắc do trong bản vẽ không có MTEXT nào -> dẫn đến lỗi
=> Nên kiểm tra tập ss có chứa anh MTEXT nào hay không?
=> Nếu tập chọn ss có chứa MTEXT mới thực thi code tiếp theo
Bạn Nguyennhulinh sử dụng code này nhé
Lệnh là CBL

Filename: 125896_cbl.lsp
Tác giả: ssg
Bài viết gốc: 12547
Tên lệnh: vd4
AutoCAD với Excel

Ví dụ là... ví dụ! Nó chỉ mang tính minh họa để chúng ta dễ tiếp cận một vấn đề mới. Điều quan trọng là bản chất sự việc, là cái tổng quát mà chúng ta rút ra được từ chúng.
Đoạn code sau đúng theo ý bạn, nhưng nó cũng vẫn là ví dụ!


Góp ý: Có lẽ bạn nên dành thời gian thích đáng để tự lập những chương trình lisp cơ bản. Khi đã có nền tảng tương...
>>

Ví dụ là... ví dụ! Nó chỉ mang tính minh họa để chúng ta dễ tiếp cận một vấn đề mới. Điều quan trọng là bản chất sự việc, là cái tổng quát mà chúng ta rút ra được từ chúng.
Đoạn code sau đúng theo ý bạn, nhưng nó cũng vẫn là ví dụ!


Góp ý: Có lẽ bạn nên dành thời gian thích đáng để tự lập những chương trình lisp cơ bản. Khi đã có nền tảng tương đối vững chắc, bạn quay lại cái này sẽ thấy rất dễ dàng.
<<

Filename: 12547_vd4.lsp
Tác giả: pfievxd
Bài viết gốc: 125605
Tên lệnh: ddd
Vẽ vuông góc với 1 Pline bất kì
@Phamthanhbinh: em cứ tưởng cái vlax-curve-getSecondDeriv là lấy đạo hàm bậc 2 chứ biggrin.gif nhưng mà hình học 12 quên quên rồi, để em ôn lại cái đã
@DuongTrungHuy : Ý mình là từ điểm trên Pline mà còn điểm ở ngoài pline vẽ vuông góc thì okie roài

Kết quả là bao h cũng là (0 0 0)! Hay là dùng FirstDeriv các bác nhỉ

Filename: 125605_ddd.lsp
Tác giả: jikibo
Bài viết gốc: 12576
Tên lệnh: ve0
Đưa bản vẽ về 1 mặt phẳng như thế nào ?
Đây là lisp Ve0.


Filename: 12576_ve0.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 125021
Tên lệnh: nsmp
Hỏi: Cách nội suy tâm đường tròn 3D

Hề hề hề,
Chào các bác, theo phương án bác Thiep đề nghị thì mình đã tìm được cái đường tròn đó và tâm của nó, Lisp cũng đã viết xong, nhưng có một vài thắc mắc "chưa biết hỏi ai" nên đành post lên đây nhờ các bác cho thêm ý kiến chỉ đạo.
1/- Lisp đã xác định được bán kinh và tâm đường tròn cần vẽ. Thậm chí cũng đã vẽ được một cái đường tròn đúng với...
>>

Hề hề hề,
Chào các bác, theo phương án bác Thiep đề nghị thì mình đã tìm được cái đường tròn đó và tâm của nó, Lisp cũng đã viết xong, nhưng có một vài thắc mắc "chưa biết hỏi ai" nên đành post lên đây nhờ các bác cho thêm ý kiến chỉ đạo.
1/- Lisp đã xác định được bán kinh và tâm đường tròn cần vẽ. Thậm chí cũng đã vẽ được một cái đường tròn đúng với bàn kính đã xác định. Tuy nhiên cái tâm của nó thì lại chạy đi tận Âu Mỹ chi đó mà mình chưa rõ tại sao.??? Khi zoom bản vẽ để thấy được cái đường tròn đó và dùng (entget(car(entsel))) để lấy các mã DXF của nó thì tọa độ tâm lại hoàn toàn đúng với cái tâm đã được xác định bằng lisp. Vậy mới kỳ chứ lị. Và nếu sử dụng lệnh move để move cái đường tròn này về đúng vị trí tâm đã xác định bằng lisp thì vòng tròn vừa khéo chạy qua 3 điểm đã xác định. Tuy nhiên nếu lấy mã DXF của vòng tròn đã bị move này thì cho ra cái tọa độ tâm khác với cái tâm đã xác định bằng lisp. Nhưng nếu lấy mã dxf của cái điểm tâm O này thì lại hoàn toàn đúng?????
Điều đó chứng tỏ cái vòng tròn được tạo ra hoàn toàn đúng với yêu cầu đã định, duy chỉ có cái thể hiện trên hình vẽ thì nó lại không như ý.
Việc tạo vòng tròn mình dùng cách mà bác Thiep đã dạy:
(entmake (list (cons 0 "circle") (cons 10 (last mau)) (cons 40 (nth 8 mau)) (cons 210 (list (nth 4 mau) (nth 5 mau) (nth 6 mau)))))
2/- Mình dùng lisp này áp dụng cho cái bản vẽ của bác DuơngTrungHuy gửi thì nó cho ra một vòng tròn khác với của bác Dương Trung Huy. Có nhẽ đây là do mình đã hạn chế chỉ xét các mặt phẳng nghiêng không quá 25 độ so với mặt phẳng z=0. (thực chất bạn Duyminh86 yêu cầu là nghiêng không quá 1 độ).
3/- Theo phương án mình đã đưa ra thì hiện tại mình gặp chút khó khăn là việc xáx định tọa độ điểm hình chiếu của một điểm xuống một lặt phẳng cho trước. Cái này bác nào còn nhớ thì gợi ý cho mình với nhé. Xin chân thành cám ơn trườc.....

Đây là cái lisp mình đã làm và cái bản vẽ của bác DuongTrungHuy mà mình đã test.

File lisp:
http://www.cadviet.com/upfiles/3/noisuymatphang1.lsp

Trong file lisp này mình chưa thay thế hàm con (locpoint ssp) bằng hàm (acet-.........) mà bác Thiêp đã chỉ dạy.


File bản vẽ:
http://www.cadviet.com/upfiles/3/tron_1_1.dwg

Trên bản vẽ này, các điểm đỏ và cái vòng tròn màu blue là của bác DuongTrungHuy, còn các điểm màu Green là do lisp của mình tạo ra gồm có ba điểm xác định mặt phẳng và điểm O tâm của vòng tròn đi qua ba điểm đó. Một vòng tròn màu Green là do lisp tạo ra, nhìn không thấy trúng với tâm đã xác định nhưng nều lấy mã dxf của nó sẽ thấy tâm trùng với điểm tâm đã xác định ở trên. Các bác có thể dùng lệnh move để kiểm tra sẽ thấy những điều mình đã nói phía trên.
Cái tam giác màu Green do lisp của mình tạo ra chỉ để hình dung cái mặt phẳng do 3 điểm đã xác định ở trên tạo ra mà thôi.
Rất mong các bác xem xét kỹ và góp ý để hoàn thiện bài toán này...
<<

Filename: 125021_nsmp.lsp

Trang 42/330

42