Đến nội dung


Hình ảnh
- - - - -

Tập các lệnh AutoLISP


  • Please log in to reply
9 replies to this topic

#1 nhutquang

nhutquang

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 April 2007 - 11:40 PM

Em muốn biết các lệnh của lisp, từ cơ bản cho đến nâng cao ấy. Mong các anh chị hướng dẫn.
  • 0

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 05 April 2007 - 08:24 AM

Sau đây là tất cả các tập lệnh của AutoLisp.

Ký hiệu
+ (add)
- (subtract)
* (multiply)
/ (divide)
=(equal to)
/= (not equal to)
< (less than)
<= (less than or equal to)
> (greater than)
>= (greater than or equal to)
~ (bitwise NOT)
1+ (increment)
1- (decrement)

A
abs
acad_colordlg
acad_helpdlg
acad-pop-dbmod
acad-push-dbmod
acad_strlsort
acdimenableupdate
acet-layerp-mode
acet-layerp-mark
acet-laytrans
acet-ms-to-ps
acet-ps-to-ms
action_tile
add_list
alert
alloc
and
angle
angtof
angtos
append
apply
arx
arxload
arxunload
ascii
assoc
atan
atof
atoi
atom
atoms-family
autoarxload
autoload

B
Boole
boundp

C
caddr
cadr
car
cdr
chr
client_data_tile
close
command
cond
cons
cos
cvunit

D
defun
defun-q
defun-q-list-ref
defun-q-list-set
dictadd
dictnext
dictremove
dictrename
dictsearch
dimx_tile
dimy_tile
distance
distof
done_dialog

E
end_image
end_list
entdel
entget
entlast
entmake
entmakex
entmod
entnext
entsel
entupd
eq
equal
*error*
eval
exit
exp
expand
expt

F
fill_image
findfile
fix
float
foreach
function

G
gc
gcd
get_attr
get_tile
getangle
getcfg
getcname
getcorner
getdist
getenv
getfiled
getint
getkword
getorient
getpoint
getreal
getstring
getvar
graphscr
grclear
grdraw
grread
grtext
grvecs

H
handent
help

I
if
initdia
initget
inters
itoa

L
lambda
last
layoutlist
length
list
listp
load
load_dialog
log
logand
logior
lsh

M
mapcar
max
mem
member
menucmd
menugroup
min
minusp
mode_tile

N
namedobjdict
nentsel
nentselp
new_dialog
not
nth
null
numberp

O
open
or
osnap

P
polar
prin1
princ
print
progn
prompt

Q
quit
quote

R
read
read-char
read-line
redraw
regapp
rem
repeat
reverse
rtos

S
set
set_tile
setcfg
setenv
setfunhelp
setq
setvar
setview
sin
slide_image
snvalid
sqrt
ssadd
ssdel
ssget
ssgetfirst
sslength
ssmemb
ssname
ssnamex
sssetfirst
startapp
start_dialog
start_image
start_list
strcase
strcat
strlen
subst
substr

T
tablet
tblnext
tblobjname
tblsearch
term_dialog
terpri
textbox
textpage
textscr
trace
trans
type

U
unload_dialog
untrace

V
vector_image
ver
vl-acad-defun
vl-acad-undefun
vl-arx-import
vl-bb-ref
vl-bb-set
vl-catch-all-apply
vl-catch-all-error-message
vl-catch-all-error-p
vl-cmdf
vl-consp
vl-directory-files
vl-doc-export
vl-doc-import
vl-doc-ref
vl-doc-set
vl-every
vl-exit-with-error
vl-exit-with-value
vl-file-copy
vl-file-delete
vl-file-directory-p
vl-file-rename
vl-file-size
vl-file-systime
vl-filename-base
vl-filename-directory
vl-filename-extension
vl-filename-mktemp
vl-get-resource
vl-list*
vl-list->string
vl-list-exported-functions
vl-list-length
vl-list-loaded-vlx
vl-load-all
vl-load-com
vl-load-reactors
vl-mkdir
vl-member-if
vl-member-if-not
vl-position
vl-prin1-to-string
vl-princ-to-string
vl-propagate
vl-registry-delete
vl-registry-descendents
vl-registry-read
vl-registry-write
vl-remove
vl-remove-if
vl-remove-if-not
vl-some
vl-sort
vl-sort-i
vl-string->list
vl-string-elt
vl-string-left-trim
vl-string-mismatch
vl-string-position
vl-string-right-trim
vl-string-search
vl-string-subst
vl-string-translate
vl-string-trim
vl-symbol-name
vl-symbol-value
vl-symbolp
vl-unload-vlx
vl-vbaload
vl-vbarun
vl-vlx-loaded-p
vlax-3D-point
vlax-add-cmd
vlax-create-object
vlax-curve-getArea
vlax-curve-getClosestPointTo
vlax-curve-getClosestPointToProjection
vlax-curve-getDistAtParam
vlax-curve-getDistAtPoint
vlax-curve-getEndParam
vlax-curve-getEndPoint
vlax-curve-getFirstDeriv
vlax-curve-getParamAtDist
vlax-curve-getParamAtPoint
vlax-curve-getPointAtDist
vlax-curve-getPointAtParam
vlax-curve-getSecondDeriv
vlax-curve-getStartParam
vlax-curve-getStartPoint
vlax-curve-isClosed
vlax-curve-isPeriodic
vlax-curve-isPlanar
vlax-dump-object
vlax-ename->vla-object
vlax-erased-p
vlax-for
vlax-get-acad-object
vlax-get-object
vlax-get-or-create-object
vlax-get-property
vlax-import-type-library
vlax-invoke-method
vlax-ldata-delete
vlax-ldata-get
vlax-ldata-list
vlax-ldata-put
vlax-ldata-test
vlax-make-safearray
vlax-make-variant
vlax-map-collection
vlax-method-applicable-p
vlax-object-released-p
vlax-product-key
vlax-property-available-p
vlax-put-property
vlax-read-enabled-p
vlax-release-object
vlax-remove-cmd
vlax-safearray-fill
vlax-safearray-get-dim
vlax-safearray-get-element
vlax-safearray-get-l-bound
vlax-safearray-get-u-bound
vlax-safearray-put-element
vlax-safearray-type
vlax-safearray->list
vlax-tmatrix
vlax-typeinfo-available-p
vlax-variant-change-type
vlax-variant-type
vlax-variant-value
vlax-vla-object->ename
vlax-write-enabled-p
vlisp-compile
vlr-acdb-reactor
vlr-add
vlr-added-p
vlr-beep-reaction
vlr-command-reactor
vlr-current-reaction-name
vlr-data
vlr-data-set
vlr-deepclone-reactor
vlr-docmanager-reactor
vlr-dwg-reactor
vlr-dxf-reactor
vlr-editor-reactor
vlr-insert-reactor
vlr-linker-reactor
vlr-lisp-reactor
vlr-miscellaneous-reactor
vlr-mouse-reactor
vlr-notification
vlr-object-reactor
vlr-owner-add
vlr-owner-remove
vlr-owners
vlr-pers
vlr-pers-list
vlr-pers-p
vlr-pers-release
vlr-reaction-name
vlr-reaction-set
vlr-reactions
vlr-reactors
vlr-remove
vlr-remove-all
vlr-set-notification
vlr-sysvar-reactor
vlr-toolbar-reactor
vlr-trace-reaction
vlr-type
vlr-types
vlr-undo-reactor
vlr-wblock-reactor
vlr-window-reactor
vlr-xref-reactor
vports

W
wcmatch
while
write-char
write-line

X
xdroom
xdsize

Z
zerop

Hy vọng là dần dần theo thời gian chúng ta sẽ cùng diễn giải được ý nghĩa từng lệnh của LISP.
  • 1

#3 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 05 April 2007 - 09:39 AM

Em muốn biết các lệnh của lisp, từ cơ bản cho đến nâng cao ấy. Mong các anh chị hướng dẫn.


Bác Hoành đã liệt kê toàn bộ các lệnh lisp, theo ABC chứ không phải là từ cơ bản đến nâng cao. Bạn có thể vào Help - AutoLISP Reference tham khảo thêm về cú pháp các lệnh cũng như các ví dụ có sẵn.
Để hiểu toàn bộ các lệnh, cần phải có một quá trình khá "dày". Nếu bạn mới bắt đầu tìm hiểu lisp, mình đề nghị:
1) Phải có một quyển sách về lisp bằng tiếng Việt
2) Tham khảo thêm Help của chính Acad
3) Thực hành ngay bằng các ví dụ áp dụng cụ thể và đơn giản nhất. Nếu chưa biết bắt đầu như thế nào, bạn có thể nêu một ví dụ về yêu cầu cụ thể, mình sẽ hướng dẫn bạn từng bước để thực hiện yêu cầu đó.
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 06 April 2007 - 03:52 PM

Xin nêu các chức năng của hàm AutoLISP có tên đầu từ A-F:

- (abs so) : trả về giá trị tuyệt đối của so
- (alert chuoicanhbao): hiển thị chuỗi cảnh báo trong hộp thoại.
- (and bt1 bt2 bt3 ...): thực hiện phép toán logic and giữa các biểu thức
- (angle p1 p2): trả về góc của véc tơ giữa 2 điểm p1 p2 với trục X.
- (angtof chuoi [donvi]) trả về góc dạng số thực của giá trị chuỗi (string). nếu đơn vị được đặt vào chuỗi sẽ được hiểu theo: 0-Độ, 1-Độ phút giây, 2-Grads, 3-Radians, 4-Surveyor's units.
- (angtos angle [unit [precision]]): ngược lại với lệnh angtof.
- (append lst1 lst2): trộn hai tập hợp lst1 và lst2 thành 1 tập hợp chung. VD: (append '(1 2 3) '(4 5 6)) = '(1 2 3 4 5 6)
- (apply tenham lst): trả về kết quả của việc sử dụng hàm tenham với các đối số là các phần tử thuộc lst. VD: (apply '+ '(1 2 3)) trả về kết quả là 6.
- (ascii chu): trả về mã ASCII của chữ. VD: (ascii "A") bằng 65.
- (assoc so lst): trả về phần tử dạng tập hợp có thành phần đầu tiên là so trong tập hợp các phần tử như vậy. Ví dụ: (assoc 'size '((name box) (width 3) (size 4.7263) (depth 5))) có kết quả là (SIZE 4.7263).
- (atan so1 [so2]) trả về góc có tang bằng số 1. Khi số 2 xuất hiện, nó sẽ trả về góc có tang bằng so1/so2 (đề phòng trường hợp so2 =0 vẫn được)

- (atof chuoi) trả về số thực được thể hiện trong chuoi. (atof "3.14") bằng 3.14
- (atoi chuoi) giống atof ngoại trừ nó là số nguyên.

- (caddr lst) lấy phần tử đứng thứ 3 trong danh sách.
- (cadr lst) lấy phần tử đứng thứ 2 trong danh sách.
- (car lst) lấy phần tử đứng đầu trong danh sách.
- (cdr lst) lấy phần còn lại của danh sách trừ phần tử đầu tiên.
- (chr num) trả về ký tự có mã ascii là num
- (close fhnd) đóng một file handle được mở bằng hàm open.
- (command tham_so1 tham_so2 ...) gửi vào dòng lệnh AutoCAD lệnh hay các tham số. hàm này rất thông dụng để tương tác với AutoCAD.
- (cond (dk1 kq1) (dk2 kq2) ...) hàm rẽ nhánh điều kiện, nếu dk1 đúng hàm cond sẽ trả về kq1, nếu dk2 đúng hàm sẽ trả về kq2,... Hàm này giống như cấu trúc case trong một số nguôn ngữ lập trình khác.
- (cons a :lol: trả về một tập hợp có 2 phần tử (a . :lol:. VD: (cdr (cons a :() bằng a. (car (cons a :D) bằng b. Khi B là một tập hợp thì (cons a :D là một tập hợp mới có a là phần tử đầu tiên và các phần tử còn lại chính là b.
- (cos goc) cos của góc
- (defun fname() Noidungham) là hàm định nghĩa một hàm mới có tên là fname và mã lệnh là Noidungham
- (distance p1 p2) Trả về khoảng cách giữa hai điểm p1 p2.
- (entdel ent) xóa đối tượng có tên là ent nếu đối tượng đó có trong bản vẽ. Nếu một đối tượng vừa được xóa bằng lệnh entdel, có thể phục hồi lại cũng chính bằng lệnh này. Có nghĩa là khi sử dụng 2 lệnh entdel liên tục cho cùng 1 đối tượng thì không có gì xảy ra.
- (entget ent) lấy thông tin của đối tượng.
- (entlast) lấy tên của đối tượng cuối cùng.
- (entmake lst) tạo một đối tượng có các thông số trong lst. Các thông số này giống như thông số có được từ lệnh entget ent. Nếu sử dụng lệnh (entmake (entget ent)) có nghĩa là tạo thêm một đối tượng giống hệt đối tượng ent.
- (entmod lst) giống hàm entmake, nhưng để update đối tượng.
- (entnext [ent]) đối tượng kế tiếp của đối tượng ent. Nếu đối tượng ent không được chỉ định, hàm sẽ trả về đối tượng đầu tiên.
- (entsel dong_nhac) hiển thị dòng nhắc để pick một đối tượng. Kết quả trả về là 1 list chấm (giống như kết quả của hàm cons) trong đó phần tử đầu tiên là ename của đối tượng. Phần tử thứ 2 là tọa độ pick.
- (entupd ent) update lại đối tượng ent. Cần dùng khi đối tượng này vừa được sửa đổi bằng hàm entmod, nhưng bản vẽ lại chưa regen.
- (eq a :D so sánh a với b có bằng nhau không.
- (equal a b saiso) so sánh a với b có bằng nhau không, nếu a với b chênh nhau ít hơn saiso thì xem như là bằng.
- (*error*) hàm sẽ được gọi khi xuất hiện lỗi.
- (exit) thoát một hàm.
- (exp num) tương đương với e^num, trả về kết quả của số e mũ num.
- (expt a B) trả về a^b - a mũ b.


- (findfile filename) trả về chuỗi đầy đủ của tên file. Ví dụ (findfile "acad.exe") sẽ trả về: "C:\\Program Files\\AutoCAD 2007\\acad.exe".
- (fix r) trả về giá trị số nguyên của số thực r.
- (float n) ngược lại với fix, trả về giá trị kiểu thực của số nguyên n. Nhiều người cảm giác hàm float có vẻ thừa. Nhưng thực tế thì không, ví dụ: (/ 2 3) bằng 0, còn (/ (float 2) 3) bằng 0.666667.
- (foreach a lst thuchien) hàm lặp (như vòng lặp for trong các ngôn ngữ lập trình khác). quét giá trị biến a qua tất cả các phần tử trong lst. Mỗi lần như thế thì thực thi mã lệnh trong thuchien.
  • 2

#5 nhutquang

nhutquang

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 06 April 2007 - 09:26 PM

woa! chỉ mới giới thiệu sơ qua thôi mà đã ko biết hướng đi rồi. Vậy mà em cứ nghĩ autolisp đơn giản thôi. cám ơn anh Nguyen Hoanh nha! Anh có thể giới thiệu vài tên sách cơ bản được ko, cái quan trọng là anh biết tường loại sách cho mỗi thời điểm để học á. Một lần nữa cám ơn anh nhiều.
  • 0

#6 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 07 April 2007 - 10:13 AM

Sách cũng nhiều loại. Nhưng mình thấy có quyển AutoLisp-VisualLisp cũng tàm tạm.
  • 0

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#7 nhutquang

nhutquang

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 09 April 2007 - 10:15 PM

Sách cũng nhiều loại. Nhưng mình thấy có quyển AutoLisp-VisualLisp cũng tàm tạm.


Nói chung anh liệt kê các lệnh trên thì được rồi. Em muốn anh có thể nói sơ về cách tạo ra 1 file autolisp rồi cách lấy nó ra trong cad để dùng. Có thể nêu một số ví dụ sử dụng hàm và kết hợp với một số hàm khác chẳng hạn. Em cám ơn anh nhiều!.
  • 0

#8 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 09 April 2007 - 11:02 PM

bạn thử vào http://www.cadviet.com/forum/index.php?sho...&#entry1155 xem có giúp ích được bạn chút nào không?

Cách sử dụng lisp (2 cách):
1. Bạn copy và save mã nguồn vào một file text có đuôi là .lsp. Khởi động ACAD. Dùng menu tools > load application, chọn file bạn vừa save. Xem lại trong file lsp có dòng nào có defun c:xxx thì xxx là lệnh để gọi hàm, nhưng thường thì ai cho lisp cũng sẽ cho tên Hàm.
2. Copy rồi paste mã lệnh lisp trực tiếp vào dòng lệnh của AutoCAD.
  • 2

#9 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 10 May 2007 - 09:34 AM

Mọi người dùng đỡ cái này nhé:

http://www.cadviet.c...SP_Function.pdf
  • 1

#10 THANHHA1405

THANHHA1405

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 July 2016 - 09:48 PM

Mọi người dùng đỡ cái này nhé:

http://www.cadviet.c...SP_Function.pdf

tải không được vndesperados nhé!


  • -1