【Visual Lisp】人机交互与数据处理(表除外)-lisp
;;本专题所讲述的内容是人机交互以及常规数据处理技术
;;★★★01.人机交互★★★
;;△△△键盘输入交互△△△
(getint "请输入整数");;从键盘输入整数,如果不是整数则重复提示输入整数直到输入的是整数。类似的函数[输入整数 getreal][输入字符串 getstring][控制和输入关键字 initget getkword]
;;△△△数据输出△△△
(princ "The \"allowable\" tolerance is\"" fileDsc);;输出到文件中为 The "allowable" tolerance is" 反斜杆\表转义,但是返回值还是有斜杆,只有输出到文件中时无斜杆,而prin1和print则不管是输入到文件中还是返回值斜杆还是斜杆;对于prompt只能输出在命令行不能输入文件,反斜杆\同样与princ一样表示转义
(vl-prin1-to-string "c:\\");;返回 "\"c:\\\\\"" 类似于prin1的输出
(vl-princ-to-string "c:\\");;返回 "c:\\" 类似于princ的输出
;;△△△屏幕交互△△△
(getpoint);;屏幕取点返回点;类似的有[带基点出现矩形框取点 getcorner][两点取长度 getdist][输入十进制度或鼠标指定返回弧度 getangle getorient]
(polar pt ang dist);;根据点、方位角和距离求点[求两点距离 distance][两点连线的角度 angle][求交点 inters 最后一个参数为nil时交点可以在延长线上][对象捕捉获取特殊点 osnap][屏幕点两点取长度 getdist]
(trans '(1 2 3) 0 1);;将点从一个坐标系转换为另外一个坐标系内的点,也就是点的实际位置不变但是在不同的坐标系内点的坐标值不一样。
;;★★★02.数据处理★★★
(+ 1 2 3);;加法运算,同类的数的运算有[减 - ]、[乘 * ]、[除 / ]、[余数 rem ]、[最大公约数 gcd ]、[最大值 max ]、[最小值 min ]、[e的N次幂 exp]、[10为底N的对数 log]、[数的N次方 expt]、[开方 sqrt]、[绝对值 abs]、[是否是负数 minusp]、[数是否是0 zerop]、[是否是数 numberp]、[数转实数 float]、[数取整 fix]、[正弦 sin]、[余弦 cos]、[反正切 atan]
(quote a);;禁止求值,返回 a 也可以用 'a 表示,返回的也是a
(eval b);;对b求值,返回求值结果(setq a 3) (setq b 'a),返回值为3。
(type data);;返回data的数据类型,数据类型包括有图元名(ename)、外部objectArx应用程序(exrxsubr)、文件描述符(file)、整数(int)、表(list)、函数分页表(pagetb)、选择集(pickset)、浮点数(real)、safearray、字符串(str)、内部AutoLISP函数(subr)、符号(sym)、变体(variant)、从lisp中加载的用户定义函数(usubr)、Active对象(VLA-object)
(atom 'a);;判断是否是原子,是则返回T,否则返回nil
(null a);;判断是否为空,是空返回T,否则返回nil
(boundp 'a);;判断是否非空,非空返回T,否则返回nil。例子(setq a 1) (boundp 'a) 返回T。注意格式,a前面有单引号
(equal 表达式1 表达式2 [允许误差]);;判断两个表达式的值是否在允许的误差范围内,如果是则返回T,否则返回nil
;;△△△转换△△△
(cvunit 1 "minute" "second");;单位转换,将1分钟转换为秒为单位的值60
(ascii "a");;将字符串字符转换为对应ascii码;[数字ascii码转对应字符的字符串 chr]
(itoa 123);;整数转字符串;[字符串转整数 atoi][字符串转实数 atof][根据模式和精度将数转换为字符串 rtos 互补函数为distof][弧度转指定模式角度的字符串 angtos 互补函数 angtof]
;;△△△字符串处理△△△
(strcat "ab" "c");;将几个字符串按先后顺序拼接为一个字符串"abc"
(substr "abcdef" 1 2);;截取字符串,序号从1开始
(strcase "abcDEF" T);;字符串大小写转换,此处是转换为小写,最后一个参数不写则转换为大写
(strlen "你123");;字符串长度
(wcmatch "A123sdfew" "A*");;字符串正则表达式匹配
(vl-string-elt "123abc" 3);;返回字符串内指定位置字符的ascii码值 97
(vl-string-left-trim "123456" "12b3456d");;删除第二个参数左边的在第一个参数字符串字符出现过的字符.也就是开始遍历第二个参数的第一个字符,如果在第一个参数字符串中有这个字符就删除,如果遇到遍历到的字符在第一个参数字符串中不存在此字符就停止遍历删除.就像此例的b,所以返回值是"b3456d"[类似的从右边来删除 vl-string-right-trim][两边都进行 vl-string-trim 相当于执行了前面两个函数]
(vl-string-mismatch "vl-abc" "vl-def");;返回字符串从指定位置开始字符相同的长度 3
(vl-string-position (ascii "a") "123abc");;返回指定ascii码值对应字符在字符串中的位置,从0开始.可以指定开始搜索的位置和是从左开始还是从右开始,默认从左从0开始
(vl-string-search "abc" "123abcdef");;搜索指定子串在字符串中出现的位置,可以指定搜索的开始位置.序号从0开始
(vl-string-subst "789" "abc" "456abc");;子字符串的替换,用"789"替换"456abc"中的"abc"返回"456789"
(vl-string-translate "abcABC" "123123" "A is a, B is b, C is C");;用第一个参数中的字符一一对应第二个参数中的字符替换第三个参数字符串返回"1 is 1, 2 is 2, 3 is 3"
(vl-string->list 字符串);;详见《表处理专题》
------end------
【Visual Lisp】人机交互与数据处理(表除外)-lisp的更多相关文章
- Lisp的本质(The Nature of Lisp)
Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet 译者 Alec Jang 出处: http://w ...
- visual studio的项目属性表
最近发现一个有趣的东西:visual studio的项目属性表 我下载了cocos2d-x-3.0alpha1,然后发现HelloLua项目配置里没有配include搜索目录和依赖库以及一个Marco ...
- 清理Visual Studio 2017的项目历史记录或手工修改Visual Studio 2017的注册表设置
Visual Studio 2017的"最近的文件列表"和"项目列表"总是删了之后重启电脑又出现(PS:这期间没有打开过项目,更没打开过VS). 一怒之下,按照 ...
- lisp学习总结(二)-----lisp应该探索发展的方向
现在流行一种语言叫做Clojure,他是lisp直接嫁接到java的结果,但是我就感觉这却成为lisp的失败. 因为lisp最强大最有优势的能力是构造抽象,构造设计思想,而不是运行期以确定的方式运行, ...
- Visual Studio Code 键盘参考表
2019年4月6日,对照中英翻译. 一般 Ctrl+Shift+P, F1 显示命令调色板 Ctrl+P 快速打开,转到文件… Ctrl+Shift+N 新建窗口/实例 Ctrl+Shift+W ...
- Lisp简明教程
此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程 ...
- 转-为什么Lisp语言如此先进?(译文)
之前在看黑客与画家的时候看过,今天重温,完全不一样的感觉! 原文地址:http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html ...
- C,C++,Lisp,Java,Perl,Python
(译注:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来. 巴别塔不建自毁,与其说上帝的分化将 ...
- 奇怪的Lisp和难懂的计算机程序的构造和解释
最近用新买的 Kindle 看<黑客与画家>的Lisp部分,发现作者 Paul Graham 很推崇 Lisp 语言,并且认为其它语言都没有Lisp简洁“成熟”,并且举例证明其它语言都在往 ...
随机推荐
- LeetCode 445 Add Two Numbers II
445-Add Two Numbers II You are given two linked lists representing two non-negative numbers. The mos ...
- jquery实现动画
animate() 方法 语法: $(selector).animate({params},speed,callback); 必需的 params 参数定义形成动画的 CSS 属性. 可选的 spee ...
- msdn webcast 下载地址整理
http://blog.csdn.net/he_8134/article/details/2069194
- thinkphp ajax分页
临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: 复制代码 <?php namespace Fenye\libs; /** file: page.class.php ...
- ViewFlipper(翻转视图)的使用
android developers java.lang.Object --android.view.View ----android.view.ViewGroup ------android.wid ...
- let it be
回家路上听到电台里主持人在介绍这首歌,听得我两眼模糊,真的太应最近的心情了. let it be.
- css中一些必要的公共样式
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend ...
- oracle pl/sql split函数
在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号 ...
- nodejs npm常用命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包. 1.npm install m ...
- 【Lua】Lua的几点优化原则
Lua是一门以性能著称的脚本语言,被广泛的应用在很多方面,比如很多游戏的插件. 很多时候,没有必要去考虑性能的问题,不过,如果我们在开始编写代码的时候就以更适当,性能更高的方式与结构去组织代码,对于程 ...