【Visual Lisp】表处理专题
表处理大全
;;★★★01.创建表★★★
(setq lst '());;创建一个空表
(list 1 2 3 4) '(1 2 3 4) ;;构造表的两种形式
(vl-list* 1 "TT" 2);;构造表,如果最后一个参数是原子则返回点对(1 "TT" . 2),如果只有单一原子则返回原子,如果最后一个参数是表则返回表
;;★★★02.表元素获取和表修改更新★★★
(car '(1 2 3 4));;获取表的第一个元素1
(cdr '(1 2 3 4));;获取去掉第一个元素1后的表'(2 3 4)
(caddr '(1 2 3 4));;a和d的组合获取第三个元素,从右到外左d再d再a,也就是先去掉第一个元素后的表,再去掉第一个元素后的表,再取第一个元素。
(last '(1 2 3 4));;获取表最后一个元素4
(nth 2 '(1 2 3 4));;获取表中第三个元素3,nth的第一个参数是表中序号,从0开始
(append '(1 2 3 4) (list 5));;多个表的元素组成一个表'(1 2 3 4 5)
(cons 0 '(1 2 3 4 5));;将元素0插入表头'(0 1 2 3 4 5);如果第二个参数不是表则构成点对,比如(cons '(1 2) 3) 返回((1 2) . 3)
(reverse '(0 1 2 3 4 5));;反转表中元素'(5 4 3 2 1 0)
(assoc 10 entlst);;根据表内第一层子表的第一个元素搜索并返回这个子表
(subst '(1 123) '(1 234) lst);;用'(1 123)替换表lst中的'(1 234)
;;★★★03.表元素处理★★★
(length '(1 2 3 4));;表元素的个数4,如果是点对表则返回错误
(vl-list-length '(1 2 3 4));;返回表的元素个数,如果是点对表则返回nil
(vl-position 3 '(1 2 3 4));;返回元素在表中的索引位置,从0开始。如果不在表中,返回nil
(listp '(1 2 3));;判断是否是表,是表返回T,否则返回nil
(vl-consp '(1 2 3));;判断表是否有元素,有则返回T,无则返回nil
(member 2 '(1 2 3 4));;返回第一个参数表达式在第二个参数表中开始出现后的表(2 3 4)
(vl-member-if '(lambda (x) (= (cdr x) "CIRCLE")) lst2);;将表中每一个元素传如表达式,如果不是nil则返回从这个元素开始的表。如果lst2是圆的组码表,则返回(0 . "CIRCLE")和后面子表的表((0 . "CIRCLE") (330 . <图元名: 7ef93fa8>) (5 . "7F") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbCircle") (10 126.404 159.429 0.0) (40 . 42.1645) (210 0.0 0.0 1.0))
(vl-member-if-not 测试表达式 表);;此函数是要返回nil,而vl-member-if是要非nil
(vl-some '(lambda (x) (if (>= x 4) x)) '(1 2 3 4 5));;将表的每个元素传给测试表达式,如果返回值非nil则返回这个元素经过测试表达式的结果(停止后面元素的传递执行)。如果都是nil,则返回nil
(vl-remove-if '(lambda (x) (<= x 2)) '(1 2 3 4 5));;将每个元素传给测试表达式,如果非nil,则保留这些元素(3 4 5)
(vl-remove-if-not 测试表达式 表);;与vl-remove-if相反
(vl-remove 2 '(1 2 3 4));;移除表中某元素(1 3 4)
;;★★★04.处理表内所有元素★★★
(foreach tempt lst [(表达式)]...);;遍历表内元素
(mapcar '(lambda (x) (+ x 1)) '(1 2 3));;表内每一个元素单独执行lambda表达式后再返回为表(2 3 4)
(apply '+ '(1 2 3));;将表中所有元素同时传入表达式,返回表达式执行后的结果6
(vl-every '(lambda (x) (> x 0)) '(1 2 3));;将表中每个元素传入表达式,每个元素传入表达式执行后值均为非nil时才返回T
(vl-string->list "你好啊1");;将字符串转换为对应ascii码表(196 227 186 195 176 161 49),汉字用两个数表示,196 227 表示"你"
(vl-list->string '(196 227 49));;将表示字符串的ascii码数值表转换为对应字符串"你1"
(vl-sort '(1 3 2 1) '<);;表内元素排序,注意如果出现两个元素则排序后只有一个(1 2 3)
(vl-sort-i '(1 3 2 1) '<);;根据排列方法(从大到小或者从小到大)排序,列出元素索引表(从0开始)(3 0 2 1)
【Visual Lisp】表处理专题的更多相关文章
- 【Visual Lisp】人机交互与数据处理(表除外)-lisp
;;本专题所讲述的内容是人机交互以及常规数据处理技术;;★★★01.人机交互★★★;;△△△键盘输入交互△△△(getint "请输入整数");;从键盘输入整数,如果不是整数则重复 ...
- 在Visual Lisp中处理自动化错误
Handling Automation errors in Visual LISP 翻译自原文Kean's blog:http://through-the-interface.typepad.com/ ...
- 【Visual Lisp】Visual Lisp属性与方法
说明:Visual Lisp属性的获取.赋值和方法的执行有多种形式.然而对于初学者来说一次性就要全部掌握显然是没有必要的,有时候每种方法都是通用的功能都一样我们就没有必要把所有方法都记住.我们只需要掌 ...
- 【Visual Lisp】图元选择集专题
图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...
- 【Visual Lisp】块专题
;;关于块 ;;(0)模型空间→块表记录→块图元:顶层的是模型空间→模型空间下有很多图元和一些块表记录→块表记录又有很多图元(此时块表记录就相当于模型空间),一个块表记录可以有多个insert块→同一 ...
- 【Visual Lisp】两种出错处理方式
两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...
- 【Visual Lisp】驱动器、目录、文件和注册表
;;驱动器.目录.文件.和注册表;;★★★01.获取并创建驱动器盘符组成的表★★★(setq Drives (vlax-get-property (vlax-create-object "S ...
- 【Visual Lisp】变体与安全数组
(vlax-make-variant) ;;创建一个未初始化的变体 ;;01.整型值变体(setq myvar (vlax-make-variant 10)) ;;创建整型值变体,返回 #<va ...
- Visual Lisp获得网络时间的方法
(defun c:tt (/ ie-obj) (setq ie-obj (vlax-get-or-create-object "Msxml2.xmlhttp")) ) (vlax- ...
随机推荐
- ctags+cscope
a opensource study website http://www.lanedo.com/2013/the-hidden-pearls-of-tracker-2/ http://www.lan ...
- IPTV视频基本概念
480x320, 640x480 标清 1024x720p 高清 1920x1080i (隔行扫描) 也属于高清 1920x1080p 全高清 3840x2160,7680x4320 超(高)清 ...
- js体验
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java学习第9天
形式参数和返回值的问题 (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类 ...
- django1.7取消syncdb后不能创建model相应表的问题
一.在运行一个django程序时,无法创建自定义model相应的表. 我检查seetings.py文件,发现自定义的app,blog已经写到INSTALLED_APPS中, INSTALLED_APP ...
- C#winform如何最小化主窗口
1.如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为false;2.如果想让程序启动时就最小化,请设置窗体的属性WindowState设置为Minimized.(Minim ...
- 利用Resgen.exe 批量生成resources文件
Resgen.exe(资源文件生成器) 您可以直接如图操作 转换时在 文本中先写好要转换的文件然后 全选 复制到控制台中 Filename.resx 要转换的文件 ResName1.resource ...
- 查看某个线程占得CPU高
jps得到pid pidstat -p [pid] -t 1 5 -t表示显示该进程里面所有的线程的信息 06:20:32 PM TGID TID %usr ...
- codeforces 360 C - NP-Hard Problem
原题: Description Recently, Pari and Arya did some research about NP-Hard problems and they found the ...
- 利用js对象的特性,去掉数组中的重复项