[风之影][基础]VisualLISP函数大全——每天整理一点
本帖最后由 cabinsummer 于 2018-3-26 11:17 编辑基本函数
应用程序处理函数
(arx) ;;;返回当前加载的ObjectARX应用程序列表
(arxload application ) ;;;加载ObjectARX应用程序
(arxunload application ) ;;;卸载ObjectARX应用程序
(autoarxload filename cmdlist) ;;;预定义加载关联ObjectARX文件的命令名
(autoload filename cmdlist) ;;;预定义加载关联AutoLISP文件的命令名
(initdia ) ;;;强制显示下一个命令对话框
(load filename ) ;;;计算文件中的AutoLISP表达式
(startapp appcmd file) ;;;启动Windows应用程序
(vl-vbaload "filename") ;;;加载Visual Basic工程
(vl-vbarun "macroname") ;;;运行Visual Basic宏
(vlax-add-cmd "global-name" unc-sym ["local-name" cmd-flags]) ;;;向AutoCAD的内置命令集中添加命令
数学函数
(+ ...) ;;;返回所有数值的总和
(- ...) ;;;从第一个数值中减去第二个和后面的数值,返回差值
(* ...) ;;;返回所有数值的乘积
(/ ...) ;;;用第一个数值除以后面其他数值的乘积,返回商值
(~ int) ;;;返回参数的按位非(即1的补码)
(1+ number) ;;;返回参数增1的结果
(1- number) ;;;返回参数减1的结果
(abs number) ;;;返回参数的绝对值
(atan num1 ) ;;;返回一个数的反正切值(以弧度为单位)
(cos ang) ;;;返回一个以弧度表示的角度的余弦值
(exp number) ;;;返回常数e的指定次幂
(expt base power) ;;;返回一个数的指定次幂
(fix number) ;;;截去实数的小数部分,将它转换成整数后返回该整数
(float number) ;;;将一个数转换成实数后返回该实数
(gcd int1 int2) ;;;返回两个整数的最大公约数
(log number) ;;;以实数形式返回一个数的自然对数
(logand ) ;;;返回一组整数逻辑按位与的结果
(logior ) ;;;返回一组整数逻辑按位或的结果
(lsh ) ;;;返回一个整数进行指定位逻辑移位后的结果
(max );;;返回给定的数中的最大值
(min );;;返回给定的数中的最小值
(minusp number) ;;;检查一个数是否为负数
(rem ) ;;;用第一个数除以第二个数,返回余数
(sin ang) ;;;以实数形式返回一个以弧度表示的角度的正弦值
(sqrt number) ;;;以实数形式返回一个数的平方根
(zerop number) ;;;检查一个数是否为0
等量和条件函数
(= numstr ...) ;;;如果所有参数的数值相等则返回T,否则返回nil
(/= numstr ...) ;;;如果所有参数的数值不相等则返回T,否则返回nil
(< numstr ...) ;;;如果所有参数的数值都小于它右边的参数则返回T,否则返回nil
(<= numstr ...) ;;;如果所有参数的数值都小于或等于它右边的参数则返回T,否则返回nil
(> numstr ...) ;;;如果所有参数的数值都大于它右边的参数则返回T,否则返回nil
(>= numstr ...) ;;;如果所有参数的数值都大于或等于它右边的参数则返回T,否则返回nil
(and ) ;;;返回一组表达式的逻辑与
(Boole func int1 ) ;;;用作一个通用的按位布尔函数
(cond [(test result...)...]) ;;;用作AutoLISP的主条件函数
(eq expr1 expr2) ;;;判断两个表达式是否相同
(equal expr1 expr2 ) ;;;判断两个表达式的值是否相等
(if testexpr thenexpr );;;根据条件计算表达式
(or ) ;;;返回一组表达式的逻辑或
(repeat int ) ;;;计算每个表达式指定的次数,返回最后一个表达式的值
(while testexpr ) ;;;计算测试表达式,如果结果不是nil,则计算其它表达式,重复这个计算过程,直到测试表达式的结果为nil
错误处理函数
(alert string) ;;;显示警告框,其中显示错误或警告信息,该信息以字符串形式传递
(*error* string) ;;;用户可定义的错误处理函数
(exit) ;;;强制退出当前应用程序
(quit) ;;;强制退出当前应用程序
(vl-catch-all-apply 'function list) ;;;将参数列表传递给指定的函数,并捕获异常
(vl-catch-all-error-message error-obj);;;从错误对象中返回信息
(vl-catch-all-error-p arg) ;;;判断vl-catch-all-apply返回的参数是否是错误对象
函数处理函数
(apply function lst) ;;;将参数表传递给指定的函数
(defun sym ( ) expr...) ;;;定义一个函数
(defun-q sym ( ) expr...);;;将函数定义为表
(defun-q-list-ref 'function) ;;;显示用defun-q定义的函数的表结构
(defun-q-list-set 'sym list) ;;;将函数定义为表
(eval expr) ;;;返回AutoLISP表达式的计算结果
(lambda arguments expr...) ;;;定义无名函数
(progn ...) ;;;按顺序计算每一个表达式,返回最后一个表达式的值
(trace function...) ;;;调试AutoLISP程序时的辅助工具
(untrace function...) ;;;清楚指定函数的跟踪标志
表操作函数
(acad_strlsort lst) ;;;按字母顺序对字符串进行排序
(append lst...) ;;;将任意数目的表合成一个表
(assoc item alist) ;;;从关联表中搜索一个表,如果找到则返回该关联表条目
(car lst) ;;;返回表的第一个元素
(cdr lst) ;;;返回指定的表,表的第一个元素除外
(cons new-first-element lst) ;;;基本的表构造函数
(foreach name lst ) ;;;将表的所有成员带入表达式求值
(last lst) ;;;返回表的最后一个元素
(length lst) ;;;以整数形式返回表中元素的数目
(list ) ;;;将任意数目的表达式合成一个表
(listp item) ;;;检查某个项目是否是表
(mapcar function list1... listn) ;;;将一个或多个表的各个元素作为函数的参数,返回该函数执行结果的表
(member expr lst) ;;;在表中搜索指定的表达式,并从第一次出现该表达式的位置开始返回表的其余部分
(nth n lst) ;;;返回表的第n个元素
(reverse lst) ;;;颠倒表中元素的顺序,然后返回修改后的表
(subst newitem olditem lst) ;;;在表中搜索某个旧项目,并用一个新项目替换表中的所有旧项目,然后返回修改后的表的副本
(vl-consp list-variable) ;;;判断表是否为nil
(vl-every predicate-function list ...);;;检查每个元素合并的预测是否为真
(vl-list* object ...) ;;;构造并返回表
(vl-list->string char-codes-list) ;;;将与整数表相关联的字符合并到字符串中
(vl-list-length list-or-cons-object) ;;;计算真表的表长度
(vl-member-if predicate-function list) ;;;判断表成员之一的预测是否为真
(vl-member-if-not predicate-function list) ;;;判断表成员之一的预测是否为nil
(vl-position symbol list) ;;;返回指定的表项目的索引
(vl-remove element-to-remove list) ;;;从列表中删除元素
(vl-remove-if predicate-function list) ;;;返回函数测试失败的表的所有元素
(vl-remove-if-not predicate-function list) ;;;返回通过函数测试的表的所有元素
(vl-some predicate-function list ...) ;;;检查元素合并的预测是否为nil
(vl-sort list less?-function) ;;;根据给定的比较函数对表中的元素排序
(vl-sort-i list less?-function) ;;;根据给定的比较函数对表中的元素排序,返回元素索引号
(vl-string->list string) ;;;将字符串转换为字符代码表
字符串处理函数
(read ) ;;;返回从字符串中获得的第一个表或原子数据
(strcase string ) ;;;将字符串中的所有字母转换成大写或小写,然后返回修改后的字符串
(strcat ...) ;;;将多个字符串拼接成一个字符串,然后返回新字符串
(strlen ...) ;;;返回代表字符串中字符数目的整数
(subst string start ) ;;;返回字符串的子串
(vl-prin1-to-string object) ;;;返回表示任意LISP对象的字符串,如同prin1函数输出的字符串
(vl-princ-to-string object) ;;;返回表示任意LISP对象的字符串,如同princ函数输出的字符串
(vl-string->list string) ;;;将字符串转换为字符代码表
(vl-string-elt string position) ;;;返回表示在字符串中指定位置的字符的ASCII码
(vl-string-left-trim character-set string) ;;;从字符串的开始位置删除指定的字符串
(vl-string-mismatch str1 str2 ) ;;;返回两个字符串的最长公共前缀的长度,指定位置的字符
(vl-string-position char-code str ]);;;在字符串中查找指定ASCII码的字符
(vl-string-right-trim characterset string) ;;;从字符串的末尾删除指定的字符串
(vl-string-search pattern string ) ;;;在字符串中搜索指定的模式
(vl-string-subst new-str pattern string ) ;;;用一个字符串替换另一个字符串中的子串
(vl-string-translate source-set dest-set str) ;;;用指定的字符集替换字符串中的字符
(vl-string-trim char-set str) ;;;从字符串的开始河末尾删除指定的字符
(wcmatch string pattern) ;;;在字符串上进行通配代码匹配
符号处理函数
(atom item) ;;;验证一个项目是否是原子数据
(atoms-family format ) ;;;返回当前定义符号列表
(boundp sym) ;;;检验值是否被绑定到符号上
(not item) ;;;验证项目的计算结果是否等于nil
(null item) ;;;验证项目是否被绑定到nil
(numberp item) ;;;验证项目是实数还是整数
(quote expr) ;;;返回表达式但不对它进行计算
(set sym expr) ;;;将被引号引起来的符号名的值设置成表达式
(setq sym1 expr1 ...);;;将符号的值设置成相关联的表达式
(type item) ;;;返回指定项目的类型
(vl-symbol-name symbol) ;;;返回包含符号名的字符串
(vl-symbol-value symbol) ;;;返回绑定到符号的当前值
(vl-symbolp object) ;;;标识指定的对象是否是符号
工具函数
转换函数
(angtof string )
(angtos angle ])
(ascii string)
(atof string)
(atoi string)
(chr integer)
(cvunit value from to)
(distof string )
(itoa int)
(rtos number ])
(trans pt from to )
设备访问函数
(grread ])
(tablet code )
显示控制函数
(graphscr)
(grdraw from to color )
(grtext ])
(grvecs vlist )
(menucmd string)
(menugroup groupname)
(prin1 ])
(princ ])
(print ])
(prompt msg)
(redraw ])
(terpri)
(textpage)
(textscr)
(vports)
文件处理函数
(close file-desc)
(findfile filename)
(open filename mode)
(read-char )
(read-line )
(vl-directory-files )
(vl-file-copy "source-filename" "destination-filename" )
(vl-file-delete "filename")
(vl-file-directory-p "filename")
(vl-file-rename "old-filename" "newfilename")
(vl-file-size "filename")
(vl-file-systime "filename")
(vl-filename-base "filename")
(vl-filename-directory "filename")
(vl-filename-extension "filename")
(vl-filename-mktemp ["pattern" "directory" "extension"])
(write-char num )
(write-line string )
几何函数
(angle pt1 pt2)
(distance pt1 pt2)
(inters pt1 pt2 pt3 pt4 )
(osnap pt mode)
(polar pt ang dist)
(textbox elist)
查询和命令函数
(acad_colordlg colornum )
(acad_helpdlg helpfile topic)
(command ...)
(getcfg cfgname)
(getcname cname)
(getenv "variable-name")
(getvar varname)
(help ]])
(setcfg cfgname cfgval)
(setenv "varname" "value")
(setfunhelp "fname" ["helpfile" ["topic" ["command"]]])
(setvar varname value)
(ver)
(vl-cmdf ...)
(vlax-add-cmd global-name func-sym )
(vlax-remove-cmd global-name)
用户输入函数
(entsel )
(getangle )
(getcorner pt )
(getdist )
(getfiled title default ext flags)
(getint )
(getkword )
(getorient )
(getpoint )
(getreal )
(getstring )
(initget )
(nentsel )
(nentselp )
选择集、对象和符号表函数
扩展数据处理函数
(regapp application)
(xdroom ename)
(xdsize lst)
对象处理函数
(entdel ename)
(entget ename )
(entlast)
(entmake )
(entmakex )
(entmod elist)
(entnext )
(entupd ename)
(handent handle)
(vlax-dump-object obj)
(vlax-erased-p obj)
(vlax-get-acad-object)
(vlax-method-applicable-p obj method)
(vlax-object-released-p obj)
(vlax-read-enabled-p obj)
(vlax-release-object obj)
(vlax-typeinfo-available-p obj)
(vlax-write-enabled-p obj)
选择集处理函数
(ssadd ])
(ssdel ename ss)
(ssget ] )
(ssgetfirst)
(sslength ss)
(ssmemb ename ss)
(ssname ss index)
(ssnamex ss index)
(sssetfirst gripset )
符号表和词典处理函数
(dictadd ename symbol newobj)
(dictnext ename symbol )
(dictremove ename symbol)
(dictrename ename oldsym newsym)
(dictsearch ename symbol )
(layoutlist)
(namedobjdict)
(setview view_description )
(snvalid sym_name)
(tblnext table-name )
(tblobjname table-name symbol)
(tblsearch table-name symbol )
(vlax-ldata-delete dict key)
(vlax-ldata-get dict key )
(vlax-ldata-list dict)
(vlax-ldata-put dict key data)
(vlax-ldata-test data)
内存管理函数
(alloc int)
(expand number)
(gc)
(mem)
可编程对话框函数
对话框打开和关闭函数
(done_dialog ) ;;;终止对话框
(load_dialog dclfile) ;;;加载DCL文件
(new_dialog dlgname dcl_id ]) ;;;开始并显示新对话框,也可以指定缺省动作
(start_dialog) ;;;显示对话框并开始接受用户输入
(term_dialog) ;;;终止所有当前对话框,就好像用户逐个取消这些对话框
(unload_dialog dcl_id) ;;;卸载DCL文件
控件和属性处理函数
(action_tile key action-expression) ;;;指定当用户选择对话框中的特定控件时要执行的动作
(get_attr key attribute) ;;;获取对话框属性的DCL值
(get_tile key) ;;;获取对话框控件的当前运行时的值
(mode_tile key mode) ;;;设置对话框控件的模式
(set_tile key value) ;;;设置对话框控件的值
列表框和弹出式列表框处理函数
(add_list string) ;;;在当前活动对话框列表中添加或修改一个字符串
(end_list) ;;;结束处理当前活动对话列表框
(start_list key ]) ;;;开始处理列表框中或弹出式列表对话框框控件中的列表
图像控件处理函数
(dimx_tile key)和(dimy_tile key) ;;;以对话框单位为单位获取控件的尺寸
(end_image) ;;;结束创建当前活动对话框图像
(fill_image x1 y1 wid hgt color) ;;;在当前活动对话框图像控件中绘制一个填充矩形
(slide_image x1 y1 wid hgt sldname) ;;;在当前活动对话框图像控件中显示一个幻灯片
(start_image key) ;;;开始在对话框中创建一个图像
(vector_image x1 y1 x2 y2 color) ;;;在当前活动对话框图像中绘制一个矢量
特定应用程序处理函数
(client_data_tile key clientdata) ;;;将应用程序管理的数据与对话框控件相关联
Visual LISP的AutoLISP扩展
(vl-load-com)
ActiveX集合操作函数
(vlax-for symbol collection ])
(vlax-map-collection obj function)
ActiveX数据转换函数
(vlax-3D-point list)
(vlax-3D-point x y )
(vlax-ename->vla-object entname)
(vlax-make-safearray type '(l-bound . u-bound) ['(l-bound . u-bound)...])
(vlax-make-variant value type)
(vlax-safearray-fill var 'element-values)
(vlax-safearray-get-dim var)
(vlax-safearray-get-element var element)
(vlax-safearray-get-l-bound var dim)
(vlax-safearray-get-u-bound var dim)
(vlax-safearray-put-element var element value)
(vlax-safearray-type var)
(vlax-safearray->list var)
(vlax-tmatrix list)
(vlax-variant-change-type var type)
(vlax-variant-type var)
(vlax-variant-value var)
(vlax-vla-object->ename obj)
ActiveX方法调用函数
(vlax-invoke-method obj method list)
(vlax-method-applicable-p obj method)
ActiveX对象处理函数
(vlax-dump-object obj)
(vlax-erased-p obj)
(vlax-get-acad-object)
(vlax-method-applicable-p obj method)
(vlax-object-released-p obj)
(vlax-read-enabled-p obj)
(vlax-release-object obj)
(vlax-typeinfo-available-p obj)
(vlax-write-enabled-p obj)
ActiveX特性处理函数
(vlax-get-property obj property)
(vlax-property-available-p obj prop )
(vlax-put-property obj property arg)
曲线测量函数
(vlax-curve-getArea curve-obj)
(vlax-curve-getDistAtParam curve-obj param)
(vlax-curve-getDistAtPoint curve-obj point)
(vlax-curve-getEndParam curve-obj)
(vlax-curve-getEndPoint curve-obj)
(vlax-curve-getParamAtDist curve-obj param)
(vlax-curve-getParamAtPoint curveobj point)
(vlax-curve-getPointAtDist curve-obj dist)
(vlax-curve-getPointAtParam curveobj param)
(vlax-curve-getStartParam curve-obj)
(vlax-curve-getStartPoint curve-obj)
(vlax-curve-isClosed curve-obj)
(vlax-curve-isPeriodic curve-obj)
(vlax-curve-isPlanar curve-obj)
(vlax-curve-getClosestPointTo curve-obj givenPnt )
(vlax-curve-getClosestPointToProjection curve-obj givenPnt normal )
(vlax-curve-getFirstDeriv curve-obj param)
词典函数
(vlax-ldata-delete dict key)
(vlax-ldata-get dict key )
(vlax-ldata-list dict)
(vlax-ldata-put dict key data)
(vlax-ldata-test data)
对象处理函数
(vlax-create-object "prog-id")
(vlax-dump-object obj)
(vlax-erased-p obj)
(vlax-get-acad-object)
(vlax-get-object "prog-id")
(vlax-get-or-create-object "prog-id")
(vlax-import-type-library :tlb-filename filename [:methods-prefix mprefix :properties-prefix pprefix :constants-prefix cprefix])
(vlax-method-applicable-p obj method)
(vlax-object-released-p obj)
(vlax-read-enabled-p obj)
(vlax-release-object obj)
(vlax-typeinfo-available-p obj)
(vlax-write-enabled-p obj)
反应器函数
(vlr-acdb-reactor data callbacks) ;;;构造一个数据库(全局)反应器对象
(vlr-add obj) ;;;启用被禁用的反应器对象
(vlr-added-p obj) ;;;测试判断反应器对象是否被启用
(vlr-beep-reaction ) ;;;产生蜂鸣声
(vlr-current-reaction-name) ;;;如果从反应器回调中调用,则返回当前时间的名称(符号)
(vlr-data obj) ;;;返回与反应器相关联的应用特定数据
(vlr-data-set obj data) ;;;覆盖与反应器相关联的应用特定数据
(vlr-deepclone-reactor obj data) ;;;构造一个编辑器反应器对象,用于通知深度克隆事件
(vlr-docmanager-reactor obj data) ;;;构造一个反应器对象,用于通知MDI相关的事件
(vlr-dwg-reactor obj data) ;;;构造一个编辑器反应器对象,用于通知图形事件(例如:打开或关闭图形文件)
(vlr-dxf-reactor obj data) ;;;构造一个编辑器反应器对象,用于通知读写DXF文件的事件
(vlr-editor-reactor data callbacks) ;;;构造一个编辑器(全局)反应器对象
(vlr-linker-reactor data callbacks) ;;;构造一个链接器(全局)反应器对象
(vlr-miscellaneous-reactor data callbacks) ;;;构造一个编辑器反应器对象,不属于其它任何编辑器反应器类型
(vlr-mouse-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知鼠标事件(例如:双击)
(vlr-notification reactor) ;;;判断反应器毁掉函数在相关的名称空间未活动时是否执行
(vlr-object-reactor owners data callbacks) ;;;构造一个对象反应器对象
(vlr-owner-add reactor owner) ;;;向对象反应器的所有者列表中添加对象
(vlr-owner-remove reactor owner) ;;;从对象反应器的所有者列表中删除对象
(vlr-owners reactor) ;;;返回对象反应器的所有者列表
(vlr-pers reactor) ;;;使反应器永久生效
(vlr-pers-list ) ;;;返回当前图形中永久生效的反应器列表
(vlr-pers-p reactor) ;;;判断反应器是否永久生效
(vlr-pers-release reactor) ;;;使反应器暂时生效
(vlr-reaction-names reactor-type) ;;;返回某种反应器类型的所有回调条件列表
(vlr-reaction-set reactor eventfunction) ;;;在反应器中添加和替换回调函数
(vlr-reactions reactor) ;;;返回反应器的(event-name . callback_function)点对表
(vlr-reactors ) ;;;返回指定类型的反应器列表
(vlr-remove reactor) ;;;禁用一个反应器
(vlr-remove-all reactor-type) ;;;禁用指定类型的所有反应器
(vlr-set-notification reactor range) ;;;判断反应器回调函数在相关的名称空间未活动时是否执行
(vlr-sysvar-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知对相同变量的更改
(vlr-toolbar-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知对工具栏中的位图的更改
(vlr-trace-reaction) ;;;在“追踪”窗口中打印一个或多个回调参数的预定义回调函数
(vlr-type reactor) ;;;返回表示反应器类型的符号
(vlr-types) ;;;返回反应器类型的列表
(vlr-undo-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知放弃事件
(vlr-wblock-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知与写块相关的事件
(vlr-window-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知与移动或缩放Windows窗口相关的事件
(vlr-xref-reactor data callbacks) ;;;构造一个编辑器反应器对象,用于通知与附着或修改外部参考相关的事件
VLX名称空间函数
(vl-arx-import ) ;;;
(vl-doc-export 'function) ;;;
(vl-doc-import ['function | application]);;;
(vl-doc-ref symbol) ;;;
(vl-doc-set symbol value) ;;;
(vl-exit-with-error "msg") ;;;
(vl-exit-with-value value) ;;;
(vl-list-exported-functions ["appname"]) ;;;
(vl-list-loaded-vlx) ;;;
(vl-unload-vlx "appname") ;;;
(vl-vlx-loaded-p "appname") ;;;
名称空间通讯函数
(vl-bb-ref 'variable) ;;;从黑板名称空间中返回一个变量的值
(vl-bb-set 'variable value);;;从黑板名称空间中设置一个变量的值
(vl-load-all "filename") ;;;将一个文件加载到当前打开的所有文档及当前AutoCAD任务期间后续打开的文档中
(vl-propagate 'variable) ;;;将一个变量的值复制到当前打开的所有文档及当前AutoCAD任务期间后续打开的文档中
Windows注册表函数
(vl-registry-delete reg-key ) ;;;从Windows注册表中删除指定的主键/键值
(vl-registry-descendents reg-key ) ;;;为指定的注册表主键返回一个子键或值名称的列表
(vl-registry-read reg-key ) ;;;返回Windows注册表中指定主键/键值所对应的数据
(vl-registry-write reg-key );;;在Windows注册表中创建主键
(vlax-product-key) ;;;返回AutoCAD注册路径
这个意义不大 用功能来分类的话比用字母分类更方便查 因为对于我们初学者,编程过程中往往先想到的是想实现什么功能,而不是想到以什么字母开头 一晃,十一年就过去了。你还好吗,风。遥记得当年你比较喜欢炫技,然后他们有点排挤你。我很愤愤不平呢^_^ 很好,顶!!
至少对新手和像我这样基本功不扎实的比较有用! 至少对像我这样新手的比较有用! 这个对我们新手来说是好东西 谢谢楼主! 好东西,很难得这么全的函数了,顶 楼主太伟大了,用功能来分类的话比用字母分类更方便查
因为对于我们初学者,编程过程中往往先想到的是想实现什么功能,而不是想到以什么字母开头
好高学问。。。 很实用,方便编程时候调用 出自图书编辑的都是好贴,赞一个