Jump to content
InfoFile
Tác giả: duy782006
Bài viết gốc: 163338
Tên lệnh: vmn xbmn tlmn slmn glmn btmn sdmn dtmn xmn xmnkxl xmnxl gtmn gtmnxl
Tạo menu những lệnh cơ bản
-Bạn load file này về và copy vào thư mục menu trong ổ E. (do mình gặp trở ngại trong việc xoá file bằng lisp nên bị hạn chế phải thư mục cố định mới được).
-Tên lệnh VMN

Filename: 163338_vmn_xbmn_tlmn_slmn_glmn_btmn_sdmn_dtmn_xmn_xmnkxl_xmnxl_gtmn_gtmnxl.lsp
Tác giả: NguyenNgocSon
Bài viết gốc: 163350
Tên lệnh: cd
Lisp ghi cao độ
Em viết lisp cd (tham khảo code có sẵn và chỉnh sửa):

Sau khi em thực hiện lệnh bị lỗi :
Command: cd
Cao text < 1.00 >:
Ty le theo phuong X <1/1.00>: 1/
Ty le theo phuong Y <1/0.10>: 1/
Diem tim TN tu nhien
Chon cao do tim: ; error: bad argument type: lentityp ((-1 . <Entity name:
7eff2c40>) (0 . "TEXT") (330 . <Entity name: 7ed16cf8>) (5 . "9CB8") (100 .
>>
Em viết lisp cd (tham khảo code có sẵn và chỉnh sửa):

Sau khi em thực hiện lệnh bị lỗi :
Command: cd
Cao text < 1.00 >:
Ty le theo phuong X <1/1.00>: 1/
Ty le theo phuong Y <1/0.10>: 1/
Diem tim TN tu nhien
Chon cao do tim: ; error: bad argument type: lentityp ((-1 . <Entity name:
7eff2c40>) (0 . "TEXT") (330 . <Entity name: 7ed16cf8>) (5 . "9CB8") (100 .
"AcDbEntity") (67 . 0) (410 . "Model") (8 . "ENTTDTUNHIEN") (62 . 0) (100 .
"AcDbText") (10 164.527 -129.537 0.0) (40 . 2.0) (1 . "6.37") (50 . 1.5708) (41
. 1.0) (51 . 0.0) (7 . "ChuSo") (71 . 0) (72 . 2) (11 163.527 -124.099 0.0)
(210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 2))
Lisp cd có tác dụng ghi cao độ của 1 điểm chưa biết dựa vào điểm gốc đã biết cao độ
<<

Filename: 163350_cd.lsp
Tác giả: NguyenNgocSon
Bài viết gốc: 163400
Tên lệnh: cdtn
Lisp ghi cao độ


Mình đã sửa hàm con:

Nhưng khi chạy lisp báo lỗi ??? Cao text < 1.00 >:
Ty le theo phuong Y <1/1.00>: 1/10
Diem tim TN tu nhien
Chon cao do tim: osmode
Enter new value for OSMODE <15359>: 15359
Command:
Diem chen: osmode
Enter new value for OSMODE <15359>: 0
Command:
Phia chen: <Ortho off> ; error: bad argument type: numberp: nil

Hình như là khi khai báo tx trong...
>>

Mình đã sửa hàm con:

Nhưng khi chạy lisp báo lỗi ??? Cao text < 1.00 >:
Ty le theo phuong Y <1/1.00>: 1/10
Diem tim TN tu nhien
Chon cao do tim: osmode
Enter new value for OSMODE <15359>: 15359
Command:
Diem chen: osmode
Enter new value for OSMODE <15359>: 0
Command:
Phia chen: <Ortho off> ; error: bad argument type: numberp: nil

Hình như là khi khai báo tx trong hàm con.Khi load nó vào trong lisp không nhận ?
Mong bạn check giùm !
<<

Filename: 163400_cdtn.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 163214
Tên lệnh: xoa
Lisp xóa đối tượng


Hề hề hề,
Bạn có thể tham khảo đoạn code sau mình viết để xóa các đối tượng theo yêu cầu trên bản vẽ bạn đã gửi:


Bạn lưu ý rằng trong lísp trên mình có sử dụng hàm (setq plst (acet-ent-geomextents en)). Hàm này trả về danh sách gồm 2 điểm góc dưới trái và góc trên phải của khung bao đối tượng trong hệ tọa độ tuyệt đối (tức hệ World)
Do bản vẽ bạn...
>>

Hề hề hề,
Bạn có thể tham khảo đoạn code sau mình viết để xóa các đối tượng theo yêu cầu trên bản vẽ bạn đã gửi:


Bạn lưu ý rằng trong lísp trên mình có sử dụng hàm (setq plst (acet-ent-geomextents en)). Hàm này trả về danh sách gồm 2 điểm góc dưới trái và góc trên phải của khung bao đối tượng trong hệ tọa độ tuyệt đối (tức hệ World)
Do bản vẽ bạn đang để ở hệ tọa độ người dùng (hệ User) nên mình phải dùng (setq plst (mapcar '(lambda (x) (trans x 0 1)) plst )) để chuyển các tọa độ tuyệt đối về tọa độ người dùng cho phù hợp với bản vẽ của bạn.
Bạn cũng có thể chuyển trước bản vẽ của bạn về hệ tọa độ tuyệt đối (World) bằng hàm (command "ucs" "W") rồi mới thực hiện các bước chọn đối tượng trong tập ss1 cũng được.

Trên bản vẽ của bạn, các text 1:0 và 1:1 là nằm trên lớp enttnthietke1 chứ không phải enttnthietke đâu.
Hy vọng rằng lisp trên sẽ giúp bạn giải quyết tốt cái lisp bạn cần.
<<

Filename: 163214_xoa.lsp
Tác giả: ketxu
Bài viết gốc: 162964
Tên lệnh: fnil%0D%0A
Định nghĩa lại Fillet

- Lấy đối tượng đầu làm chuẩn để Fillet


Filename: 162964_fnil%0D%0A.lsp
Tác giả: NguyenNgocSon
Bài viết gốc: 163158
Tên lệnh: loc
Lisp xóa đối tượng

Mình đã thử code 1 đoạn xóa các text có giá trị 0% và góc 0 độ :

Nhưng chưa ổn. Lisp không chạy ?
Các bác xem giúp !

Filename: 163158_loc.lsp
Tác giả: ssg
Bài viết gốc: 16319
Tên lệnh: 1 2
lisp gỡ 1 lệnh thực hiện 2 lệnh đồng thời !

Bạn dùng thử lisp sau:


Ghi chú và đề nghị:
1) Các dòng bắt đầu bằng dấu chấm phẩy là chú giải, không có tác dụng với chương trình. Mình ghi nhiều như vậy với mục đích để bạn hiểu thêm về hoạt động của chương trình lisp.

2) Tên lệnh là các ký tự liền kề sau C:, bạn có thể sửa đổi chúng theo ý thích nhưng không được trùng với các lệnh tắt...
>>

Bạn dùng thử lisp sau:


Ghi chú và đề nghị:
1) Các dòng bắt đầu bằng dấu chấm phẩy là chú giải, không có tác dụng với chương trình. Mình ghi nhiều như vậy với mục đích để bạn hiểu thêm về hoạt động của chương trình lisp.

2) Tên lệnh là các ký tự liền kề sau C:, bạn có thể sửa đổi chúng theo ý thích nhưng không được trùng với các lệnh tắt chuẩn của Acad. Ví dụ, tên lệnh "A" như bạn đề nghị là không ổn vì đó là tên tắt của lệnh "ARC".

3) Các yêu cầu dạng như của bạn rất đơn giản so với khả năng của lisp. Bạn có thể tự học lisp để phát triển thêm nhiều ứng dụng thiết thực, phù hợp với công việc của bạn. Đừng nghĩ rằng Lisp là cái gì đó quá khó, nó khá đơn giản và dễ học, ít nhất là ở cấp độ cơ bản. Bạn có thể tham khảo ở đây:

http://www.cadviet.com/forum/Huong-dan-lap...Lisp-t2480.html

cũng như các bài giới thiệu về lisp khác trên diễn đàn.
Chúc bạn làm việc nhẹ nhàng, hiệu quả và hứng thú hơn với AutoLisp!
<<

Filename: 16319_1_2.lsp
Tác giả: Tue_NV
Bài viết gốc: 162930
Tên lệnh: f
Tác giả: ketxu
Bài viết gốc: 162814
Tên lệnh: vc
Lấy tọa độ đỉnh Pline - Đánh số - Xuất bảng tọa độ

À, mình thì yên tâm rồi nhưng CAD nhiều lúc nó chẳng yên tâm, giải quyết bài toán thường tốt hơn nếu làm tổng quát :) Ví dụ, như hình trên, việc giải quyết cũng không đơn giản lắm. Theo mình hiểu, việc so sánh thuận nghịch trong ý bạn chỉ là so sánh vị trí point đầu và cuối Pline ?
Nếu đúng...
>>
À, mình thì yên tâm rồi nhưng CAD nhiều lúc nó chẳng yên tâm, giải quyết bài toán thường tốt hơn nếu làm tổng quát :) Ví dụ, như hình trên, việc giải quyết cũng không đơn giản lắm. Theo mình hiểu, việc so sánh thuận nghịch trong ý bạn chỉ là so sánh vị trí point đầu và cuối Pline ?
Nếu đúng thì code có thể giống thế này :
(Chú ý : cách chọn hướng mình gợi ý bạn pick chọn 2 điểm, như thế thao tác sẽ dùng thuần chuột, nhanh hơn là pick, pick , tay trái chọn Y/N, tay phải nhấn Space )

Update :
- Fixed osmode
- Code chạy với cả Pline kín hoặc hở. Nếu kín : đánh theo chiều Pline được tạo
- Fixed lỗi collect đối tượng để tạo Block
- Bỏ 2 hàm collect e

<<

Filename: 162814_vc.lsp
Tác giả: NguyenNgocSon
Bài viết gốc: 162689
Tên lệnh: mtl
Đổi màu cho đối tượng
Em có đoạn lisp:

Em đã thêm đoạn code: (command ".change" "L" "" "p" "C" 8 "" ""); doi mau doi tuong
để đổi màu đối tượng sang màu 8.Nhưng khi chạy lisp thì tương đối lâu so với khi không đổi màu.
Các bác có thể chỉnh sửa giúp em cho lisp chạy nhanh hơn không.Theo em nghĩ mình chỉ cần tạo list đối tượn sau khi lặp xong rồi đổi...
>>
Em có đoạn lisp:

Em đã thêm đoạn code: (command ".change" "L" "" "p" "C" 8 "" ""); doi mau doi tuong
để đổi màu đối tượng sang màu 8.Nhưng khi chạy lisp thì tương đối lâu so với khi không đổi màu.
Các bác có thể chỉnh sửa giúp em cho lisp chạy nhanh hơn không.Theo em nghĩ mình chỉ cần tạo list đối tượn sau khi lặp xong rồi đổi màu có lẽ nhanh hơn? Vì em không thạo hàm vla- lắm. Nên không biết sửa thế nào.
Mong các bác chỉ giúp cho lisp chạy nhanh hơn!
Cám ơn!
<<

Filename: 162689_mtl.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 162693
Tên lệnh: mtl
[Nhờ chỉnh sửa] Đổi màu cho đối tượng

Hề hề hề.
Làm thử thế này có nhanh hơn không nhé:

Chúc bạn vui.

Filename: 162693_mtl.lsp
Tác giả: ketxu
Bài viết gốc: 162516
Tên lệnh: oo
Offset sang 2 phía

Của bạn đây :


Chú ý là nếu bước hỏi có xóa đối tượng gốc hay không, bạn có thể ấn Space (mặc định là không )

Filename: 162516_oo.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 162568
Tên lệnh: vc
Bảng toạ độ các đỉnh thửa đất

Hề hề hề,
Tranh thủ lúc mọi người đi vắng, mình sửa cái lisp của bác SSG theo ý bạn. Bạn dùng thử coi và nếu thấy Ok thì đừng quên nhấn thank cám ơn bác ấy nghen.

Chúc bạn vui và nhớ đến CADVIET.

Filename: 162568_vc.lsp
Tác giả: dauquangminh
Bài viết gốc: 162628
Tên lệnh: vc
Lisp lấy tọa độ của các đỉnh của 1 polyline của bác ssg
Lisp cũ lấy tọa độ của một hình khép kín xuất ra bảng của bác ssg:
http://i1096.photobucket.com/albums/g336/dauquangminh/8-3-20119-19-31AM.jpg


Nay em muốn sửa thành lisp mới như sau:
- lấy tọa độ của tất cả các đỉnh của 1 polyline xuất ra bảng
- lisp sẽ hỏi có đánh số theo chiều thuận không? ( chọn y là có, tức sẽ đánh số từ trái sang phải, chọn n là chiều ngược...
>>
Lisp cũ lấy tọa độ của một hình khép kín xuất ra bảng của bác ssg:
http://i1096.photobucket.com/albums/g336/dauquangminh/8-3-20119-19-31AM.jpg


Nay em muốn sửa thành lisp mới như sau:
- lấy tọa độ của tất cả các đỉnh của 1 polyline xuất ra bảng
- lisp sẽ hỏi có đánh số theo chiều thuận không? ( chọn y là có, tức sẽ đánh số từ trái sang phải, chọn n là chiều ngược lại)
- text đánh số đưa về layer defpoints, bảng tọa độ thuộc layer hiện hành
http://i1096.photobucket.com/albums/g336/dauquangminh/8-3-20119-34-08AM.jpg
Cảm ơn các bác.
<<

Filename: 162628_vc.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 162364
Tên lệnh: chatt
Lisp đánh số thứ tự vào phần text của các block attribute

Hề hề hề,
Đồng ý với ý kiến của bác, song bác cho mình một ít thời gian để sửa nhé. Rất cám ơn về món quà bác biếu....
Hề hề hề,..

Và nó dây ạ:

Filename: 162364_chatt.lsp
Tác giả: ketxu
Bài viết gốc: 162483
Tên lệnh: moc
You can order them on the spot with much confidence as most of the reputed online sellers give you 12-month warranty on buying these entertainment systems.
Nếu từ đầu đã có cái file như bên dưới thì mọi người chẳng mất quá nhiều thời gian để xử lý bài toán của bạn rồi.


Filename: 162483_moc.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 162333
Tên lệnh: chatt
Lisp đánh số thứ tự vào phần text của các block attribute

Hề hề hề,
Bạn dùng thử cái này coi có ưng ý không nhé:


Hề hề hề,
Do cái sự biết chưa đến nơi đến chốn nên lisp này mới chỉ giải quyết cho bạn được đến số chữ số tối đa là 4. Nếu bạn muốn hơn thì phải bổ sung thêm vào lisp.
Phần chọn chiều đánh số mình chưa làm mà mới chỉ đánh số theo thứ tự hiện hành của các block trong tập chọn....
>>

Hề hề hề,
Bạn dùng thử cái này coi có ưng ý không nhé:


Hề hề hề,
Do cái sự biết chưa đến nơi đến chốn nên lisp này mới chỉ giải quyết cho bạn được đến số chữ số tối đa là 4. Nếu bạn muốn hơn thì phải bổ sung thêm vào lisp.
Phần chọn chiều đánh số mình chưa làm mà mới chỉ đánh số theo thứ tự hiện hành của các block trong tập chọn. Mình sẽ bổ xung sau nhé.

Hề hề hê, minh đã bổ sung phần chọn chiều đánh số váo lisp. Thay vì chọn ba đầu như bạn nói mình cho chọn chiều đánh số là thuận (từ trái qua phải) và nghịch (từ phải qua trái). Khi lisp hỏi " Ban muon danh so theo chieu thuan <y or n>: " nếu bạn nhập y vào dòng command lisp sẽ đánh số theo chiều thuận. Còn nếu bạn không nhập gì hoặc nhập bất cứ ký tự nào thì lisp sẽ đánh số theo chiều nghịch.

Chúc bạn vui.
<<

Filename: 162333_chatt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 162179
Tên lệnh: mabl
1 Lisp vẽ đường polyline nối baseponit của các block và

Hề hề hề,
bạn dùng thử cái ni coi đã ưng ý chưa hè???


Hề hề hề,
Cái lisp ni mình đã ghép hai yêu cầu của bạn vào một lệnh là mabl. Nếu bạn muốn vẽ pline thì khi lisp hỏi "Ban muon ve duong noi <Y or N>: " bạn nhập y vào dòng command, còn nếu bạn không nhập gì hoặc nhập bát kỳ ký tự chi khác y hay Y lisp sẽ ghi text theo yêu cầu của bạn.
Chú ý...
>>

Hề hề hề,
bạn dùng thử cái ni coi đã ưng ý chưa hè???


Hề hề hề,
Cái lisp ni mình đã ghép hai yêu cầu của bạn vào một lệnh là mabl. Nếu bạn muốn vẽ pline thì khi lisp hỏi "Ban muon ve duong noi <Y or N>: " bạn nhập y vào dòng command, còn nếu bạn không nhập gì hoặc nhập bát kỳ ký tự chi khác y hay Y lisp sẽ ghi text theo yêu cầu của bạn.
Chú ý trong lisp mình có bổ sung thêm việc nhập tên block vì e rằng trên bản vẽ có thể có nhiều block khác nhau nên bạn sẽ nối nhầm.
Lisp được viết theo yêu cầu của bạn là vẽ pline hay viết text theo tọa độ x tăng dần của các block được chọn bạn nhé.
Nếu có chi chưa ưng ý thì hãy post lên để mình sửa.
Hề hề hề,
Chúc bạn vui.
<<

Filename: 162179_mabl.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 162228
Tên lệnh: dem
Đếm số lượng các đoạn thẳng

Lisp dùng để đếm số lượng các đoạn thẳng trong 1 tập hợp chọn.


Filename: 162228_dem.lsp
Tác giả: ssg
Bài viết gốc: 16196
Tên lệnh: coc
AutoCAD với Excel

Kết quả chạy OK. Mình có vài góp ý:
1) Đây là bài toán rất đơn giản với ngôn ngữ lisp. Đoạn lisp sau cho kết quả tương đương với cái bạn đã làm. Appload, gõ lệnh COC, đáp ứng các yêu cầu của chương trình:


2) Nếu bạn có ý định làm cái này để nghiên cứu và phát triển thêm nhiều ứng dụng phức tạp hơn theo hướng: dùng các công cụ Excel để tính toán và...
>>

Kết quả chạy OK. Mình có vài góp ý:
1) Đây là bài toán rất đơn giản với ngôn ngữ lisp. Đoạn lisp sau cho kết quả tương đương với cái bạn đã làm. Appload, gõ lệnh COC, đáp ứng các yêu cầu của chương trình:


2) Nếu bạn có ý định làm cái này để nghiên cứu và phát triển thêm nhiều ứng dụng phức tạp hơn theo hướng: dùng các công cụ Excel để tính toán và xuất kết quả sang CAD thì mình đề nghị bạn nên chăm chút hơn về hình thức của bảng Excel. Thiết kế bố trí lại các cell, sử dụng màu sắc thật bắt mắt như là một Application. Ngoại trừ các cell để user nhập liệu, các cell còn lại bạn lock toàn bộ, không cho user chỉnh sửa gì. Sau khi nhập liệu, dùng command_button để xuất kết quả sang CAD.
Phát triển ứng dụng theo kiểu này cũng là một hướng rất hay. Chương trình MitCalc chuyên về tính toán thiết kế các chi tiết máy cơ khí là một ví dụ điển hình.
<<

Filename: 16196_coc.lsp

Trang 28/330

28