Hướng dẫn tạo file LISP đơn giản!

  • Khởi xướng cuonghamanh
  • Ngày gửi
C

cuonghamanh

Guest
Nếu các bạn đã từng vẽ CAD hẳn sẽ thấy nhàm chán bởi một số lệnh cứ phải làm đi làm lại, nhàm chán vô cùng. Thực ra chúng ta hoàn toàn có thể tạo ra những file LISP giúp cho công việc thuận lợi hơn. Tôi xin hướng dẫn để các bạn mới làm quen có thể tự mình tạo được file LISP của riêng mình (các cao thủ có ghé qua xin thứ lỗi cho em múa "dìu" qua mắt thợ nhé!).

Hiện tại các phiên bản cad mới có thêm tiện ích lập trình LISP, tuy nhiên các bạn có thể sử dụng bất kể một trình soạn thảo văn bản nào để tạo file LISP, sau khi tạo xong các bạn lưu file lại dưới dạng đuôi *.LSP là có thể load vào cad để dùng được ngay (theo tôi với các file đơn giản thì tốt nhất là dùng Notepad của Windown cho nhanh!).

Xin đưa ra đây 2 ví dụ cụ thể:

1. Đổi mầu cho đối tượng:
Trong quá trình vẽ, khi muốn đổi mầu một đối tượng, chúng ta có thể dùng lệnh "change", sau đó chọn tùy chọn properties, rồi chọn c (color), rồi chọn số từ 0 đến 255. Với một màu định trước, ta có thể rút ngắn quá trình này lại bằng một dòng lệnh duy nhất:

(defun C:C1 (/ gp) (setq gp (ssget)) (command "change" gp "" "p" "c" "1" "" ))

Xin giải thích một chút để các bạn nắm được như sau:
- Đóng mở ngoặc "()": trong ngôn ngữ LISP, mọi dữ liệu đưa vào đều phải nằm trong ngoặc, mỗi lần mở đóng ngoặc sẽ biểu diễn hoàn trỉnh một chuỗi lệnh. Một nguyên tắc số 1, mở ngoặc bao nhiêu lần thì phải đóng bấy nhiêu lần.
- defun: câu lệnh bắt đầu cho một chuỗi thao tác mới:
- C:C1: ở đây có 2 phần "C:" là phần thể hiện lệnh sẽ được đưa vào từ dòng lệnh command của cad. Sau dấu hai chấm "C1" là ký hiệu mà bạn sẽ gõ để bắt đầu quá trình thao tác tại dòng lệnh Command (lưu ý không được đặt trùng với các lệnh khác của cad để tránh trùng lệnh, rắc rối) - C1 ở đây do mình tự đặt với ý nghĩa là color 1 (màu đỏ), các đối tượng khi dùng lệnh này sẽ được đổi thành màu đỏ.
- (/ gp): đây là phần khai báo biến số, trong phần này chỉ sử dụng 1 biến số cho phần chọn đối tượng là "gp".
- setq: là lệnh gán cho biến số 1 giá trị nào đó.
- ssget: là lệnh cho phép người dùng chọn nhiều đối tượng một lúc.
- (setq gp (ssget)): là một câu lệnh hoàn chỉnh cho phép người dùng chọn 1 nhóm đối tượng và gán nhóm đối tượng đó vào biến số gp (biến này có thể thay đổi tùy ý người dùng, chỉ cần khai báo thống nhất từ đầu - ở đây cho gp là chữ viết tắt của từ group).
- (command "change" gp "" "p" "c" "1" ""): đây là câu lệnh trong đó:
command: lệnh bắt đầu được thực thi;
"change": lệnh cần được thực thi (luôn được đặt trong ngoặc kép);
gp: nhóm đối tượng đã chọn;
"" (dấu đóng mở ngoặc kép): tương ứng với nhấn phím Enter hoặc Space;
"p": chọn tùy chọn properties trong lệnh change;
"c": chọn tùy chọn color trong tùy chọn properties trong lệnh change;
"1": gán màu số 1 (red) cho nhóm đối tượng;
"": tương ứng với nhấn phím Enter hoặc Space - kết thúc lệnh change.

Như vậy chúng ta có 1 lệnh hoàn chỉnh để đổi màu một nhóm đối tượng bất kỳ sang màu số 1 (đỏ). Tương tự như vậy các bạn có thể thay đổi cho các màu tiếp theo (chi việc copy, paste và thay đổi 1 chút), vi dụ:

(defun C:CBL (/ gp) (setq gp (ssget)) (command "change" gp "" "p" "c" "l" "" ));màu theo lớp - by Layer
(defun C:CBB (/ gp) (setq gp (ssget)) (command "change" gp "" "p" "c" "b" "" ));màu theo khối - by Block
(defun C:C2 (/ gp) (setq gp (ssget)) (command "change" gp "" "p" "c" "2" "" ));màu vàng
(defun C:C4 (/ gp) (setq gp (ssget)) (command "change" gp "" "p" "c" "4" "" ));màu xanh nước biển

Sau đó các bạn lưu lại file dưới dạng *.LISP, vậy là đã có file LISP hoàn chỉnh và load vào cad để chạy đươc. Mình gửi kèm file hoàn chình của mình để các bạn tham khảo bên dưới.

Tương tự với lệnh change, các bạn có thể tạo các lệnh thay đổi độ cao (thickness), loại nét (linetyper),..

2. Đưa một nhóm đối tượng đã có vào 1 lớp (có tên đặt trước theo quy ước), nếu lớp này chưa tồn tại thì tạo lớp đó rồi chuyển nhóm đối tượng vào:

Trong quá trình vẽ CAD, để các bản vẽ được thống nhất người vẽ nên đặt tên các lớp một cách thống nhất. Tuy nhiên, mỗi lẫn bắt đầu một bản vẽ mới hoặc đang trong quá trình vẽ, muốn tạo một hệ thống các layer theo đúng quy tắc đã đề ra nhiều khi rất mất công. Để giảm bơt sự nhàm chán này ta có thể dựa vào câu lệnh sau:


(defun C:LTE (/ gp)(setq gp (ssget))
(command "-layer" "m" "Text_140" "c" "140" "Text_140" "")
(command "change" gp "" "p" "la" "Text_140" "")
(command "-layer" "s" "0" "")
)

Thành phần cấu trúc của câu lệnh ko khác gì nhiều so với câu lệnh ở phần một, mình chỉ giải thích sơ qua như sau:

dòng lệnh 1: vẫn là đặt ký tự lệnh, khai báo biến và chọn nhóm đối tượng;
dòng lệnh 2: tạo lớp với tên là Text_140, màu 140;
dòng lệnh 3: đưa nhóm đối tượng đã được chọn vào lớp vừa tạo;
dòng lệnh 4: đặt lớp vẽ mặc định trở lại layer 0.

Có mấy chú ý nho nhỏ sau:
- Dấu trừ (-) nằm trước một số lệnh trong cad ("-layer") cho phép người dùng thao tác lệnh qua dòng lệnh command mà ko phải thông qua hộp hội thoại.
- Tên lớp (Text_140) là tên do mình tư đặt, các bạn có thể thay đổi tùy ý.
- Nếu ko muốn trở về lớp 0 (layer 0) thì xóa bỏ dòng thứ 4.

Có thể tham khảo thêm file của mình đính kèm bên dưới.

Không quá khó để tạo cho mình file LISP để phục vụ công việc được thuận lợi hơn. Chúc các bạn mới tìm hiểu thành công :D!
 

File đính kèm

  • ColorCONTROL.rar
    1 KB · Đọc: 2.039
  • LayerINUSE.rar
    728 bytes · Đọc: 1.711
Last edited by a moderator:
P

PhạmVănGiáp

Guest
em có mấy lisp cad nhưng không biết lệnh tắt mong các anh hướng dẫn dùm!!!!!
 

KTS_DUY

Thành viên năng động
Tham gia
12/5/08
Bài viết
79
Điểm thành tích
6
Tuổi
46
Tìm trong file lisp (mở bằng notepad)
Thấy (defun c: thì sau nó chính là tên lệnh.
 
H

hienvien99

Guest
Cộng dồn số trong text

Cám ơn anh về bài viết này. Em có một vấn đề về cộng dồn các text (ví dụ: text1 = 1; text2 = 2; text3 = text1 + text2; text4 = 4; text5 = text3 + text4 ...) nhờ anh hướng dẫn tạo file lisp này. Cám ơn anh.
 

namhung49

Thành viên mới
Tham gia
15/12/08
Bài viết
4
Điểm thành tích
1
Tuổi
40
bản vẽ có nhiều tỷ lệ

Em đã đọc bài viết "Làm sao để trở thành một chuyên gia AutoCAD!!! " của bác. Bác hẳn là một người ProCAD. Em sử dụng CAD cũng đã lâu rồi nhưng do tính chất công việc không yêu cầu cao nên có thể nói là "gà". Bác cho em hỏi cầu nì: Hiện nay cố những ý kiến về việc sử dụng Layout hoặc trực tiếp trên Model hoặc cách khác nữa thì em không biết để tin bản vẽ có nhiều tỷ lệ khác nhau trên một khổ giấy. Theo bác ProCAD thì xử lý thế nào ạ ? Thanks bác nhìu!
 
Last edited by a moderator:

KTS_DUY

Thành viên năng động
Tham gia
12/5/08
Bài viết
79
Điểm thành tích
6
Tuổi
46
Cám ơn anh về bài viết này. Em có một vấn đề về cộng dồn các text (ví dụ: text1 = 1; text2 = 2; text3 = text1 + text2; text4 = 4; text5 = text3 + text4 ...) nhờ anh hướng dẫn tạo file lisp này. Cám ơn anh.
Bạn thích dạng copy ra các text tiếp theo hay chỉnh sửa các text đã có.
 

minhvanvui

Thành viên mới
Tham gia
9/9/10
Bài viết
1
Điểm thành tích
1
Hiệu chỉnh text hàng loạt

Chuyện là như thế này :
Bây giờ mình có nhiều text có nội dung khác nhau hoặc giống nhau cũng được , nhưng minh muốn chuyển hết tấc cả nội dung của các text đó về một nội dung trong cùng một lúc. Ví dụ ( text1 = a , text2 = b , text3 = c ,.....) và mình muốn thay đổi các text đó về cùng một nội dung chứ không còn là a,b,c nữa nhưng chỉ trong một lần chỉnh duy nhất là nội dung của hàng loat các đối tượng được chọn đều thay đổi giống nhau.
Mình có gặp một ông KTS sử dụng R14 và ổng dùng lệnh này rất hay nhưng khi mình có ý muốn hỏi xin thì ổng nói là khi ổng viết chỉ sài được trên R14 thôi . Nên mình bâng khuân mãi mà không có được câu trả lời nay nhờ các Pro chỉ giáo giúp và nếu được có thể cho mình lisp của 2 lệnh trên luôn xin cảm ơn nhiều.
 

058620601

Thành viên mới
Tham gia
20/5/10
Bài viết
2
Điểm thành tích
1
Tuổi
34
Em đã đọc bài viết "Làm sao để trở thành một chuyên gia AutoCAD!!! " của bác. Bác hẳn là một người ProCAD. Em sử dụng CAD cũng đã lâu rồi nhưng do tính chất công việc không yêu cầu cao nên có thể nói là "gà". Bác cho em hỏi cầu nì: Hiện nay cố những ý kiến về việc sử dụng Layout hoặc trực tiếp trên Model hoặc cách khác nữa thì em không biết để tin bản vẽ có nhiều tỷ lệ khác nhau trên một khổ giấy. Theo bác ProCAD thì xử lý thế nào ạ ? Thanks bác nhìu!
cái này thì bạn nên tìm hiểu đi.rất là hay.hiện trên diễn đàn ketcau.com va cadviet cũng có..nó giúp ta quản lý bản vẽ và tỉ lệ rất tốt khi có yêu cầu sữa chữa trong thiết kế thì ta sữa bản vẽ lại rất đơn giản vì tỉ lệ 1:1 hihi mình chỉ biết có nhiêu đó.bạn tìm hiểu thêm..
 

Top