数字测图原理与应用——Lisp语言的学习和使用

合集下载

Lisp程序语言的具体实现和运用浅析

Lisp程序语言的具体实现和运用浅析

Lisp程序语言的具体实现和运用浅析一、引言:随着工业技术和生活水平的提高,室外管线的种类越来越多,对室外管线设计的要求就越来越高。

室外管网不仅仅需要在平面上按照相关的规范规程进行综合排布,还需要在竖向高度上进行精心安排,才能在有限的空间合理组织各种管线的布置。

而这种需求必然要求设计师拥有比较强大的软件来进行室外管线设计的工作。

然而目前国内许多设计机构在管线综合方面主要靠手工综合,而且竖向标高的碰撞上面基本不进行设计,都是靠施工单位在施工现场根据实际情况自行避让。

这样导致室外管网排布的混乱,既不规范,甚至带来安全隐患等因素。

往往发生拆了又建,建了又拆,很难统筹管理,后期维护困难等问题。

上面的情况一再发生,无论是地方政府还是设计单位、业主等都越来越意识到室外管网合理规划,统一综合设计的重要性和必要性。

而且手工进行综合设计已经难以胜任这样的工作,迫切需要强大的软件进行辅助设计。

目前能进行室外管网综合的软件主要有一些国产软件和AutoDesk公司的Revit系列软件,但是一些国产软件使用繁琐复杂,难以满足设计师的需求,而Revit这样的BIM软件虽然在管线碰撞等方面很有优势,但是对硬件要求高,需要专门培训,使用起来也比较复杂。

因此,开发出真正适合管网综合的程序就显得很有必要。

二、LISP和BIM的简介:LISP(LISt Processor,即列表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。

可以说Lisp语言抽象复杂却又大道至简,它的主要的特点:1代码量小,2功能全,3易扩展。

AutoLISP是由Autodesk公司开发的一种LISP程序语言,嵌入在AutoCAD 内部,具有智能的特点的编程语言。

通过AutoLISP编程,可以节省工程师很多时间。

AutoLISP程序语言在室外管网综合方面得天独厚的优势。

近几年BIM技术的方兴未艾,室外管网综合的性质决定了它比较适合采用BIM技术。

LISP连线程序在数字化测图中的应用

LISP连线程序在数字化测图中的应用

LISP连线程序在数字化测图中的应用摘要:在我们的数字化测图中会遇到大量的线状或者面状地物,这些地物往往又会以交叉的形式存在,,通过CASS自带的命令我们很难准确快速的完成地形图的内业编绘工作,本文旨在介绍如何通过在CASS软件中加载LISP程序实现对野外采集的线状地物的快速绘制。

关键字:LISP程序设计数字化测图展点号1 引言南方CASS软件作为在CAD下开发的测绘软件,因其简单易学、界面直观、操作方便等优点受到广大测绘工作者的喜爱。

但是在我们的数字化测图的实际工作中,每天的外野数据采集工作会采集大量的碎部点,然而在内业数据的编绘中,线状或者面状地物是通过将外野采集的某些碎部点按照其实际形状按照一定的顺序连接起来形成。

然而在内业编绘过程中通过CASS自身命令很难判断出哪些碎部点属于同一线状地物,只能通过人工去判断,因此在内业处理上会花上大量的时间还容易出错。

这个时候我们可以通过LISP 这个CAD二次开发工具来量身订做我们需要的特殊功能,从而实现快速准确的内业数据编绘。

2 LISP程序简介LISP是List Processor(表处理程序)的缩写,主要用于人工智能(AI)领域。

AutoLISP是人工智能语言CommonLISP的简化版本,作为通用LISP语言的一个小子集,AutoLISP严格遵循其语法和惯例,但又添加了许多针对AutoCAD的功能。

Autodesk公司在AutoCAD 2.1版引入AutoCAD作为应用程序编程接口(API),用于扩展和自定义AutoCAD功能。

借助AutoLISP,用户可以用适合编写图形应用程序的强大的高级语言来编写宏程序和函数,并开发各种软件包。

AutoLISP易于使用,并且非常灵活,多年来一直是自定义AutoCAD的标准。

从AutoCAD R14开始,Visual LISP 被引入到AutoCAD中,它增强并扩展了AutoLISP语言,可以通过 Microsoft ActiveX Automation接口与对象交互,并扩展了AutoLISP响应事件的能力。

LISP语言教程(1)

LISP语言教程(1)
quote
(quote x)返回x.为了可读性我们把(quote x)简记为'x.
> (quote a)
a
> 'a
a
> (quote (a b c))
(a b c)
atom
(atom x)返回原子t如果x的值是一个原子或是空表,否则返回().在Lisp中我们按惯例用原子t表示真,而用空表表示假.
> (atom 'a)
(cond ((atom z)
(cond ((eq z y) x)
('t z)))
('t (cons (subst x y (car z))
(subst x y (cdr z))))))
偶然地我们在这儿看到如何写cond表达式的缺省子句.第一个元素是't的子句总是会成功的.于是
(cond (x y) ('t z))
等同于我们在某些语言中写的
if x then y else z
一些函数
既然我们有了表示函数的方法,我们根据七个原始操作符来定义一些新的函数.为了方便我们引进一些常见模式的简记法.我们用cxr,其中x是a或d的序列,来简记相应的car和cdr的组合.比如(cadr e)是(car(cdr e))的简记,它返回e的第二个元素.
示例
假设我们要定义函数(subst x y z),它取表达式x,原子y和表z做参数,返回一个象z那样的表,不过z中出现的y(在任何嵌套层次上)被x代替.
> (subst 'm 'b '(a b (a b c) d))
(a m (a m c) d)
我们可以这样表示此函数
(label subst (lambda (x y z)

数字测图原理与方法

数字测图原理与方法

数字测图原理与方法数字测图是一种通过数字化设备对实际物体进行测量和记录的技术,它在地理信息系统、工程测量、地质勘探等领域有着广泛的应用。

数字测图的原理和方法对于提高测绘精度、简化测量流程、提高工作效率具有重要意义。

本文将就数字测图的原理和常用方法进行介绍。

一、数字测图的原理。

数字测图的原理是利用数字化设备对实际物体进行采集和记录,通过对采集到的数据进行处理和分析,最终生成数字化的地图或图像。

数字测图的原理主要包括数据采集、数据处理和数据输出三个环节。

1. 数据采集。

数据采集是数字测图的第一步,主要通过全站仪、GPS定位仪、激光测距仪等设备对实际物体进行测量和采集。

采集到的数据包括坐标、高程、角度等信息,这些数据是数字测图的基础。

2. 数据处理。

数据处理是数字测图的核心环节,主要包括数据编辑、数据配准、数据融合等步骤。

通过对采集到的数据进行处理,可以消除误差、提高精度,最终得到准确的数字化地图或图像。

3. 数据输出。

数据输出是数字测图的最后一步,通过打印、输出文件等方式将处理好的数字化地图或图像呈现出来,以便后续的应用和分析。

二、数字测图的方法。

数字测图的方法包括全站仪测量法、GPS定位法、激光测距法等多种技术手段,下面将对其中几种常用的方法进行介绍。

1. 全站仪测量法。

全站仪是一种综合了测角、测距、测高等功能的测量仪器,通过全站仪对地物进行测量,可以得到高精度的三维坐标信息。

全站仪测量法在工程测量、地质勘探等领域有着广泛的应用。

2. GPS定位法。

GPS定位法是利用全球卫星定位系统对地物进行定位和测量的方法,通过GPS定位仪可以实现对地物位置的快速准确测量,适用于大范围地物的测量和监测。

3. 激光测距法。

激光测距法是利用激光测距仪对地物进行距离测量的方法,通过激光测距仪可以实现对地物距离的快速高精度测量,适用于复杂地形和难以接近的地物测量。

以上介绍了数字测图的原理和常用方法,数字测图技术的不断发展将为各行各业带来更多的便利和可能,希望本文能对数字测图技术的学习和应用有所帮助。

LISP语言在CAD方面的运用

LISP语言在CAD方面的运用
4 结束语 通过以上一些肤浅的介绍, 只希望给新加入测绘行业的同行一 些 提 示 。 你 喜 欢 朝 阳 、晚 霞 吗 ? 美 的 东 西 总 是 存 在 的 , 就 看 你 怎 样 去 发 现 。 就 如 你 的 前 景 , 去 努 力 、去 实 践 , 就 会 美 好 。 参考文献 [1] 黎 新 懿 , 赵 景 亮 : 用 Visual LISP 开 发 AutoCAD2004 应 用 程 序 . 科 学 出 版 社 , 2003.
(0 . " LWPOLYLINE" )表 说 明 所 选 则 的 实 体 为 LWPOLYLINE 线 。 (下 转 63 页 )
- 57 -
科技论坛
中国高新技术企业
立数学模型, 有时即使建立了数学模型, 也难于获得数值解。这时, 模拟法则成为一种有效的工具。模拟法十分灵活, 且不受系统规模 限 制 , 它 可 以 详 细 模 拟 事 故 前 的 备 件 、发 电 和 输 电 停 运 及 运 行 中 的 实 际 问 题 , 但 耗 时 多 而 且 精 度 不 高 , 这 种 方 法 主 要 用 于 发 、输 电 组 合 系统及变电站的可靠性评估中。
3.2 文字的特性 下面再来看看说 明 所 选 则 的 实 体 在 DLSS 层 。 (6 . " X2 " )则 表 示 此 线 条 的 线 型 为 X2 , X2 为 用 户 定 义 的 线 型 。 (90 . 4 )说 明 此 线 有 4 个 端 点 。 (70 . 128 )表 明 此 线 没 有 封 闭 。 如 为 129 则 表 示 多 义 线 首 尾 相 连, 是严格闭合。 (43 . 0 .1 )显 示 此 线 的 宽 度 为 0 .1 米 。 (10 41 .3308 23 .3799 )则 给 出 了 端 点 的 坐 标 值 。依 次 下 去 分 别 为 各端点的坐标。 (- 3 (" SOUTH" (1000 . " 164100 " ))))表 示 此 实 体 的 扩 展 特 性 , 一 般为编程者的意图。 针对所提的第一个问题, 对比下面的等外公路特性。

神秘的编程语言:了解Lisp、Scala等特殊语言

神秘的编程语言:了解Lisp、Scala等特殊语言

神秘的编程语言:了解Lisp、Scala等特殊语言编程语言是计算机和程序员之间沟通的工具,不同的编程语言具有各自独特的特点和用途。

在众多编程语言中,有一些被认为是神秘的特殊语言,其中包括Lisp和Scala。

它们因其独特、深奥的特性而受到了广泛的关注和使用。

Lisp(LISt Processing)是一种由约翰·麦卡锡在1958年首次设计的编程语言。

它是世界上第二个被广泛使用的高级编程语言,仅次于Fortran。

Lisp的设计目标是提供一种强大的符号处理和元编程能力,使程序员能够通过修改语言本身来构建更高级的工具和领域特定语言。

Lisp的一个特点是其基于表达式的语法结构。

在Lisp中,程序由一系列的嵌套列表(list)组成,每个列表都可以作为一个函数调用或运算表达式来求值。

这种表达式的结构使得Lisp具有极高的灵活性和表达能力,可以用非常简洁的方式来表达复杂的算法和逻辑。

除了基于表达式的语法结构,Lisp还引入了一种被称为S表达式(S-expression)的数据表示形式。

S表达式是一种将符号和列表组合起来的方式,可以表示各种数据结构和程序代码。

这种数据表示形式赋予了Lisp强大的元编程能力,使得程序可以通过操作语言本身来实现自定义的编程语言扩展和代码转换。

Lisp的强大和灵活性使其在人工智能、符号计算和自然语言处理等领域得到广泛应用。

Lisp的方言Scheme在学术界和教育领域也非常受欢迎。

另一个神秘的编程语言是Scala。

Scala是一种功能强大的多范式编程语言,它结合了面向对象编程和函数式编程的特性。

Scala最早由马丁·奥德斯基在2001年设计并开发,它的目标是充分利用Java虚拟机(JVM)的优势,并提供一种更简洁、更灵活的编程语言。

Scala的特点之一是其面向对象编程支持的强大和灵活。

与Java不同,Scala允许程序员使用更简洁、更优雅的方式来定义类和对象,并支持一些高级的面向对象编程特性,如模式匹配和混入(mixin)等。

初探LISP语言在测绘作业中的应用

初探LISP语言在测绘作业中的应用

初探LISP语言在测绘作业中的应用[摘要]CASS作为在CAD 底下开发的测绘软件,因其易学,界面友好,操作方便等特点受到广大测绘工作者的喜爱。

而并非所有你需要的命令都在其中,这个时候就需要借助LISP这个CAD二次开发工具来量身定做你需要的特殊功能。

有的时候灵活的运用LISP程序进行二次开发,对于节省人力、物力、财力有着立竿见影的效果,如地籍测量后期资料的批量提供。

[关键字]CAD LISP 测绘地籍测量程序开发0 前言AutoLISP是由Autodesk公司开发的一种LISP 程序语言。

AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。

例如,AutoCAD 中没有在图形文本对象内绘制矩形及作全局改变的命令等其他一些命令。

通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。

事实上,可以用AutoLISP 编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。

Lisp语言以其语法简单,功能函数强大,撰写的环境不挑剔,直译式程序等优点,而受到广大编程爱好者的喜欢。

由于近一两年全国的第二次城镇土地调查开展的如火如荼。

结合在作业过程中的灵活运用LISP程序的个别案例简单介绍如下:1 第二次城镇土地调查简介城镇土地调查即城镇地籍调查,是依照国家的相关法规,通过权属调查和地籍测量,查清宗地的权属、界址线、面积、用途和位置等情况,形成数据、图件、表册等调查成果,为土地登记、核发证书提供依据的一项集行政、技术于一体的工作。

我们单位的作业方法是前期的地籍图以及街坊图的制作都是在CASS9.1 软件下完成的,后期的建库数据再以这些图件为基础来进行提取。

城镇地籍调查形成的图件很多,如街坊图、土地利用现状图、宗地图、界址调查表等。

其中最多的图件算是宗地图和界址调查表了,因为每宗地都有其对应的宗地图和界址调查表。

这样算下来一个调查区域也就是一个作业区域的宗地图数目和界址调查表数目就非常可观了,少说也得上万宗地。

CAD中LISP程序使用方法

CAD中LISP程序使用方法

CAD中LISP程序使用方法2007-08-06 19:13:32| 分类: 学习园地 |字号订阅1. 对于提供附件下载的,把附件下载就可以了2. 对于提供的源LISP代码,把代码拷贝、粘贴到一个文件,自己起个名或者若程序里面注释推荐了文件名,就用推荐的,然后保存成扩展名是LSP的文件即可了。

LISP程序使用方法:加载LISP1. 可以使用APPLOAD命令,然后去找到要加载的LISP文件,加载即可。

2. 可以自己从文件管理器把LISP文件拖动到ACAD的图形窗口,也可以加载3. 在命令行后用,(load "c:\\temp\\xxx.lsp")也可以加载,路径名请输入实际的路径。

另:对于一个LSP程序,(defun 后面的既是命令或者函数,一般程序应该有提示,若没有,标志符c:后面的单词是可以在ACAD下使用的命令,既可以在COMMAND:后面直接输入,即可执行。

CAD快速切换图层LISP代码(方法2)给楼主发一个图层更改的lisp程序,按对应数字键就可以切换到相应的图层。

很方便。

0————01————OBJ2————6t3————SCETR。

8————BORDER如果这些不是你想要的图层,将lisp用笔记本打开,把里边的OBJ,6t等图层名改为你想要的就可以了。

以后要切换图层时,按相应的数字键即可。

(defun YH_chlayer (YH_layer / YH_S)(if (null (tblsearch "LAYER" YH_layer))(entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")(cons 2 YH_layer) ;图层名称'(70 . 0) ;图层状态'(62 . 7) ;图层颜色'(6 . "bylayer") ;图层线型 )))(setq YH_S (cadr (ssgetfirst))) (if YH_S(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")(setvar "clayer" YH_layer))(princ))(defun c:0 ()(YH_chlayer "0"))(defun c:1 ()(YH_chlayer "OBJ"))(defun c:2 ()(YH_chlayer "6t"))(defun c:3 ()(YH_chlayer "SCETR"))(defun c:4 ()(YH_chlayer "HIDD"))(defun c:5 ()(YH_chlayer "DIM"))(defun c:6 ()(YH_chlayer "DASH"))(defun c:7 ()(YH_chlayer "TEXT"))(defun c:8 ()(YH_chlayer "BORDER") ) #Cad到上面一行为址,保存为lsp格式。

LISP语言在测绘作业中的应用

LISP语言在测绘作业中的应用

3 程序 开发 的基 础 和 设 计

它嵌 入到菜单 中 , 样定 制你 的系统 会 取 得更 高 的效 这
如 图 1 图 2所示 , 1 宗地 图 , 2为相对应 的 、 图 为 图 本 宗地 的界址 调查 表 。由于城镇 地籍 调查所 涉 及 的宗
No .1
中图 分 类 号 :2 9 P 0
文 献 标 识 码 : B
LS IP语 言 在测 绘 作 业 中 的 应 用
任航 科
( 建 省 八 闽 测 绘 院 , 建 厦 福 福 32 0 ) 60 0

要 :A S作 为 在 C D 下 开发 的 测 绘 软 件 , CS A 因其 易 学 , 面友 好 , 作 方 便 等 特 点 受 到 广 大 测绘 工作 者 的 喜 爱 。 而 界 操
并非所有你 需要的命令都在其 中, 这个 时候就需要借 助 LS IP这个 C D二次开发工具来量身定做 所需要的特殊 功能。 A
有 的 时候 灵 活的 运 用 LS 序 进 行 二 次开 发 , 于 节 省人 力 , 力 , 力有 着 立 竿 见 影 的 效 果 , 地 籍 测 量 后 期 资 料 IP程 对 物 财 如
业方 法 是 前 期 的 地 籍 图 以 及 街 坊 图 的 制 作 都 是 在
C S . 软件下 完 成的 , 期 的建库 数 据再 以这 些 图 A S7 1 后 件 为基础 来 进 行 提 取 。城 镇 地 籍 调 查 形 成 的 图件 很 多 , 街 坊 图 、 地 利 用 现 状 图 、 地 图 、 址 调 查 表 如 土 宗 界 等 。其 中最 多 的 图件算 是 宗 地 图 和 界址 渊 查表 了 , 因
2 1 年 2月 01

数字测图原理与应用——Lisp语言的学习和使用

数字测图原理与应用——Lisp语言的学习和使用

数字测图原理与应用——Lisp语言的学习和使用主要内容AutoLisp语言介绍AutoLisp语言的基本知识赋值与数值计算函数自定义函数程序分支与循环函数逻辑运算函数字符串与类型转换函数表处理函数交互数据输入函数及相关的计算函数与文件有关的函数实体和设备访问类函数其它函数一、AutoLisp语言介绍LISP(List Processing)是一种计算机的表处理语言。

LISP语言是人工智能领域中广泛应用的一种程序语言。

AutoLISP语言是一种运行在AutoCAD环境下的LISP编程语言,或称为AutoCAD的一种嵌入式语言。

它采用了与CommandLISP(一种通用的LISP语言版本)相近的语法及习惯约定,并吸收了LISP语言的主要函数,同时增加了针对AutoCAD特点的许多功能,如:可以把AutoLISP和AutoCAD的绘图命令透明地结合起来,使设计和绘图完全融为一体。

利用AutoLISP语言编程可以实现对AutoCAD当前图形数据库进行直接访问和修改。

在LISP语言中,最基本的数据类型是符号表达式。

LISP语言的特点是程序和数据都采用符号表达式的形式,即一个LISP程序可以把另一个LISP程序作为它的数据进行处理。

因此使用LISP语言编程十分灵活,看起来是一个一个的函数调用。

支持递归定义也是Auto LISP语言的重要特性。

AutoLISP语言是提供给用户的主要二次开发工具之一。

用AutoLISP语言编写应用程序,可以为AutoCAD增加新的命令或修改AutoCAD,以适应用户的特殊需要。

AutoCAD软件的开发者——AutoDesk公司许诺,将保证今后AutoCAD 软件对AutoLISP语言的支持。

掌握使用和编制AutoLISP应用程序的方法和技术将大大提高用户的工作效率和二次开发水平,增强AutoCAD的灵活性,并将得到长期、稳定的技术支持。

二、AutoLISP语言的基本知识2.1 AutoLISP语言的特性AutoLISP语言是一种解释型语言,它的特点如下:1.解释型语言编程语言有两种基本类型:解释型和编译型。

Lisp语言在数字化测绘方面的运用探讨

Lisp语言在数字化测绘方面的运用探讨

中经常碰 到的许多 问题 , 如块 的替换 、 诸 图层管理 、 坐标 系之
间 的 转 换 以及 不 同软 件 版 本 之 间 或 同一 版 本 不 同 用 图之 间
(ec x O (o s 2 g l7 ) ; s tl x c n c ) 构造 新 列 表 1
(ec x la s c 2 e t ) s tl x (s o n )
维普资讯
La d& s u c sHe ad n Re o r e r l
经 验 荟 摹
肖祥红
雷宇斌
( 湖南省 第二 测绘 院
摘 要: 利用 L 语 言编程来解决数字化测绘生产 过程 ip s
湖南
长沙
4 O1) 1 19
(ec n m (s a e d n e ) s tl a e s nm d id x ) (ec e te t e a e ) s tl n (n g tn m )
(e u :m 0 dfnCjd (c g)
T x (3 .0 ) et) 7 ) 。它分 别表 示 高 程 点注 记 的 图元 名 、 型 、 线 块名、 标、 坐 宽度 、 度 、 体 等 属 性 。利 用 (se “ "搜 集 不 高 字 sgtx)
(o a d 一 a e … S J D - ) 打 开 居 民点层 cm n ly r M -; (o a d 一 a e o f } cm n ly r f …

同的选择 集 , 出每一 个元素 自身 的特 性代码 , 找 再按要 求提
出预 定 义 对 象 代 码 、 表 、 换 、 新 、 新 生 成 图 形 数 据 库 , 列 替 更 重 就 能 达 到 其 所 需 要 的 目 的 。 下 面 是 一 个 将 埋 石 图 根 点 块 “ C 1 ’专 为 非埋 石 图根 点 ‘C 1 ” 程 序 。我 们 发 现 巧 G 16, 换 车 G17的

从Lisp语言了解编程语言的解释与执行

从Lisp语言了解编程语言的解释与执行

从Lisp语言了解编程语言的解释与执行作者:唐诗来源:《计算机应用文摘》2022年第24期关键词:Lisp函数;过程;程序执行1过程与数据抽象对任何程序语言的学习,最终都主要集中在三个方面:基本元素,基本元素的组合功能,对组合后复合对象的抽象功能。

Lisp中的基本元素是表达式。

其组成和现在流行的程序语言并没有太大差别,如数字运算符+/,判定谓词eq?等,Lisp作为一个语族,不同的方言(如rocket)会有不同的规定,但大体功能上和C或者Java等相比并没有什么本质的区别。

在Lisp中表达式的组织形式是采用括号来构成各项求值表达式,且过程对于参数的调用采用的是前缀式。

这在现在的程序语言中比较少见,但这合理有效且不会造成歧义。

我们可以从离散数学中采用前缀式来标识二元关系的案例,以找到类似的痕迹。

在Lisp中,将基本元素组合构成复合对象或复合表达式。

本质上,这要求语言提供一种类似于“胶水”的东西,能将两个或者更多的对象黏在一起。

从最简单的开始,将两个对象组合在一起构成一个对象,可以通过某种操作,从这个对象中提取出原本的两个对象。

用同样的方式,将这个组合后的对象和新的对象再用之前的组合方式构成一个新的对象,如此反复,就可以构成任意数量的元素,且我们可以有一定的方式将构成的元素从其中取出。

这种愿望思维构成的合理推导,最终将问题规约为两个元素的组合,并能通过一定的方式将其从中取出。

Lisp 在这里提供的工具叫做序对(pair),具体的表现形式如下。

( define x(cons 1 2));定义出x( car x);结果为1( cdr x);结果为2其中,cons就是这个语言中的胶水工具,我们放入其中的元素有顺序之分,且可以通过car与cdr的方式按照顺序取出。

有了这个基本的工具,我们就可以在此基础上进一步构造复合对象。

这就是上文中提到的语言的第三个重要部分——将复合对象作为一个整体,将其像基本元素一样,进一步进行组合操作。

cad_lisp基础教程

cad_lisp基础教程
e.g. (SETQ OCCUPATION NIL) 要显示变量所储存的数据,可以使用内建函数 PRINC(可用于绘图模式的指令行或 AutoLISP 程序),其语法如下 :
(PRINC 变量名称 ) e.g. COMMAND : (PRINC NAME) Result : David"David" 在绘图模式中,亦可于指令行中使用感叹号 ! 来显示变量内容,或作为指令选项的输 入值;语法如下 : !变量名称 e.g. COMMAND : !NAME Result : "David" 在 Visual LISP 的主控台窗口中,于提示符号 _$ 后键入要显示的变量名称 _$变量名称 e.g. _$NAME
字符串 (STR) 一般文字,其前后必须加上双引号 " e.g. "AutoCAD" 控制字符或脱逸码必须为小写,且须在字符前加上反斜线 \ e.g.
"\AutoCAD"
像素名称 (ENAME) 是指定给图文件内对象的指针(Pointer,为 16 进位的数字卷标)
e.g. <Entity name:14e5180> 像素名称在图文件内是唯一的,不会重复 对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象
2
符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外: 左括号 ( 右括号 ) 句点 . 单引号 ' 双引号 " 分号 ;
表 (LIST) 亦称为串行,是放在一对小括号 ( ) 内,一个或多个元素的有序集合
e.g. (1.0 "Lisp" ( ) (5.6 7)) 元素可以是字符串,符号,整数或实数;也可以是另一个表 元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格 为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为 0,

lisp语言入门

lisp语言入门

Lisp语言入门Lisp是一门历史悠久的语言,全名叫LISt Processor,也就是“表处理语言”,它是由John McCarthy于1958年就开始设计的一门语言。

和Lisp同时期甚至更晚出现的许多语言如Algo等如今大多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了Fortran和COBOL。

但唯独Lisp,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从Lisp分支出来的Scheme、ML等语言在很多场合的火爆程度甚至超过了许多老牌明星。

那么这颗常青树永葆青春的奥秘究竟在哪里呢?如果你只接触过C/C++、Pascal这些“过程式语言”的话,Lisp可能会让你觉得十分不同寻常,首先吸引你眼球(或者说让你觉得混乱的)一定是Lisp程序中异常多的括号,当然从现在的角度来讲,这种设计的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当务之急了。

Lisp的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如规则最简单的围棋却有着最为复杂的变化一样,Lisp使用最基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。

废话少说,现在我们就来看看Lisp语言中的基本元素。

Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如a b c;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如:a b c()(a b c x y z)(a b(c)d)最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。

正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。

如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

Lisp入门

Lisp入门

Lisp⼊门Lisp ⼊门LISP 是 LISt Processor 的缩写,是“列表处理语⾔”意思。

Lisp语⾔最初是由美国的 John McCarthy 在 1958 年提出来的,是最早的计算机语⾔之⼀。

然⽽,半个多世纪后的今天,Lisp 语⾔仍然在使⽤,并且还会继续被使⽤,这和它独特的结构是分不开的。

Lisp的基本框架可以容下任何修订或扩充。

⽽且 LISP 语⾔在符号处理⽅⾯的优势,LISP 最初使⽤于⼈⼯智能处理。

(早期有部分⼈⼯智能的研究者认为:“符号演算系统可以衍⽣出智能。

”)《⿊客与画家》的作者 Paul Graham 就对 Lisp 语⾔赞誉有加,认为⼤部分的现代语⾔都在向 Lisp 靠近。

安装 Mac 环境在已安装 HomeBrew 前提下在 Terminal 键⼊brew install sbcl开始Terminal 中键⼊sbcl会有This is SBCL 1.4.6, an implementation of ANSI Common Lisp.More information about SBCL is available at </>.SBCL is free software, provided as is, with absolutely no warranty.It is mostly in the public domain; some portions are provided underBSD-style licenses. See the CREDITS and COPYING files in thedistribution for more information.*这个就是 Lisp 的解释器,在这⾥我们⾸先要知道退出是 (quit)。

解译器的功能就是对⼀个输⼊的表达式求值的东西。

函数在 Python 中1+21 + 2⽽在 Lisp 中1+2(+ 12)在Python中 + 是运算符,⽽在 Lisp 中 + 是运算符,同时也是函数,但它是前缀表达。

什么是C,LISP,PERL,初学怎样学习

什么是C,LISP,PERL,初学怎样学习

什么是C,LISP,PERL,初学怎样学习
分类:电脑/网络
问题描述:
另外哪个网有相关内容
解析:
C语言是一种功能非常强大的高级语言,是目前最常用的程序设计语言之一.
LISP是一种比较简单的动态语言,在美国常用于初学者学习程序设计的入门语言.
Perl 是一种自由且功能强大的编程语言。

它被用作 Web 编程、数据库处理、XML 处理以及系统管理等等—它能够完成所有这些工作,同时仍然是处理小的日常工作的完美工具。

Perl 快速、有趣,而且特别有用。

很多人因为需要Perl 而使用它,又因为热爱它而继续使用它。

目前国内关于LISP和Pear的资料不是很多,尤其是书籍方面,所以建议初学C,不过学C有一定难度,可以以谭浩强的<<C语言程序设计>>为教材进行学习.
网上的相关内容可以到各大搜索引擎上去查找,C语言的相关资料网上很多
比如:C 语言之家 cstudyhome/wenzhang06/default
C语言编程宝典 ool/tianyige/puter/tc/index。

LISP

LISP
LISP作为弱类型这优点相对缺点则是运行效率的低下。原始定义简洁的缺点使到大型开发工程变得困难,自 底层到高层,自二维表查询到面向对象,使用者需要嵌入更多的函数来实现,致使LISP众多方言的衍生 。
语言组成
数据类型 语句结构
பைடு நூலகம்
关键字 语言执行
LISP只有两种数据结构,原子(atom)和表(list)。原子为标识符形式的符号或数字的字面值,表则是由 零个或多个表达式组成的序列。基本上,LISP程序,并不需要使用一般表处理所必需的任意插入及删除操作。
自1960代末年至1980年初年,各种更新LISP版本涌现,有源自加利福尼亚大学伯克利分校的Franz Lisp、 在AutoCAD运行的AutoLISP前身XLISP、犹他大学开展的Standard Lisp及Portable Standard Lisp、专属于 Lisp机器上运行的ZetaLisp、源自法国国家信息与自动化研究所的LeLisp、以及MIT人工智能实验室的Gerald Sussman与Guy Steele所开发的Scheme等。
LISP的语法是简洁的典型,程序代码与数据的形式完全相同,以圆括号为边界的表。例如,表: (A B C D) 按数据来解释时,它是一个有4个元素的表,按代码来解释时,它是将名为A的函数作用于3个参数B、C和D。 在指定表结构时将表的元素放在圆括号中,简单表的元素仅限原子而成的方式是: (A B C D) 嵌套表结构亦是以圆括号来表示,例如,表: (A (B C) D (E (F G))) 由4个元素组成。 第1个元素是原子A,第2个是子表(B C),第3个是原子D,第4个是子表(E(F G)),它的第2个元素是子表(F G)。
LISP
计算机程序设计语言
01 历史背景
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字测图原理与应用——Lisp语言的学习和使用主要内容AutoLisp语言介绍AutoLisp语言的基本知识赋值与数值计算函数自定义函数程序分支与循环函数逻辑运算函数字符串与类型转换函数表处理函数交互数据输入函数及相关的计算函数与文件有关的函数实体和设备访问类函数其它函数一、AutoLisp语言介绍LISP(List Processing)是一种计算机的表处理语言。

LISP语言是人工智能领域中广泛应用的一种程序语言。

AutoLISP语言是一种运行在AutoCAD环境下的LISP编程语言,或称为AutoCAD的一种嵌入式语言。

它采用了与CommandLISP(一种通用的LISP语言版本)相近的语法及习惯约定,并吸收了LISP语言的主要函数,同时增加了针对AutoCAD特点的许多功能,如:可以把AutoLISP和AutoCAD的绘图命令透明地结合起来,使设计和绘图完全融为一体。

利用AutoLISP语言编程可以实现对AutoCAD当前图形数据库进行直接访问和修改。

在LISP语言中,最基本的数据类型是符号表达式。

LISP语言的特点是程序和数据都采用符号表达式的形式,即一个LISP程序可以把另一个LISP程序作为它的数据进行处理。

因此使用LISP语言编程十分灵活,看起来是一个一个的函数调用。

支持递归定义也是Auto LISP语言的重要特性。

AutoLISP语言是提供给用户的主要二次开发工具之一。

用AutoLISP语言编写应用程序,可以为AutoCAD增加新的命令或修改AutoCAD,以适应用户的特殊需要。

AutoCAD软件的开发者——AutoDesk公司许诺,将保证今后AutoCAD 软件对AutoLISP语言的支持。

掌握使用和编制AutoLISP应用程序的方法和技术将大大提高用户的工作效率和二次开发水平,增强AutoCAD的灵活性,并将得到长期、稳定的技术支持。

二、AutoLISP语言的基本知识2.1 AutoLISP语言的特性AutoLISP语言是一种解释型语言,它的特点如下:1.解释型语言编程语言有两种基本类型:解释型和编译型。

AutoLISP属于解释型语言。

在解释型语言中,用户编写的源程序直接由解释器解释并执行。

而在编译型的语言中,源代码首先要编译为一种中间格式(目标文件),然后再与所需的库文件链接,生成机器码可执行文件。

AutoCAD本身是用编译型语言写成的。

解释型语言的主要优点是在执行这种语言编写的程序之前不需要中间步骤,用户可以交互、独立于其它部分来试验或验证程序段或程序语句,而不需像编译型语言那样,每当试验程序时,要全部地编译和链接整个程序。

2.平台和操作系统独立AutoLISP语言的另一个优点是可移植性。

AutoLISP程序可以在运行于多种支持平台(如Windows、DOS、UNIX和Macintosh等)上的AutoCAD中执行而与CPU或操作系统无关。

3.AutoCAD的版本独立AutoLISP程序除平台和操作系统独立外,AutoLISP的设计还考虑了向下的兼容。

这样,任一版本AutoCAD编写的AutoLISP程序一般不加修改就可以在以后版本的AutoCAD中运行。

4.AutoLISP与主流编程语言的比较AutoLISP与目前使用比较多的编程语言(如C/C++,BASIC等)之间有一些明显的差别。

具体可体现在下述几个方面:(1)AutoLISP与其它大多数语言之间最重要的差别是它用表(List)存放数据。

AutoLISP........没有数组、联合、结构及记录,所有复杂的数据集均由表来表...........................示和处理....。

(2)AutoLISP的变量没有明确的类型。

LISP变量的类型是在赋值时动态确定的。

(3)AutoLISP不需要预先声明变量或函数。

(4)与C/C++,BASIC等语言不一样,LISP没有语句、关键词及运算符。

它是函数定位的语言,其所有运算都是由函数调用完成。

2.2 AutoLISP语言中的数据类型AutoLISP支持下述10种数据类型:●整型数●实型数●字符串●符号●表●文件描述符●AutoCAD实体名●AutoCAD选择集●内部函数(AutoLISP子程序)●外部函数(ADS、ARX函数)整型数整型数是一种不带小数点的数字,它可由0,1,2……,9,+,-共12个字符组成,例如:123,-76,+322等。

实型数实型数是带有小数点的数,它可由0,1,2……,9,+,-,E,e共14个字符组成。

实数有两种表示方法,即十进制表示法和科学计数表示法。

例如:十进制表示法:12.3,-7.6,+3.22科学计数表示法:6.1E5(610000),-0.12E2(-12),-0.45E-2(-0.0045)字符串字符串(字符串常数)由一对双引号(”)括起来的字符序列组成。

这对双引号是字符串的定界符。

字符串常数最大长度为132个字符,但表示字符串的符号名所约束的值可以是任意长度,因而可以利用“STRCAT“(字符串拼接)函数无限制地增加其长度。

字符串中,同一字母的大小写认为是不同的字符,空格是一个有意义的字符。

字符串的长度是指字符串一对双引号之间的字符个数(不包括一对双引号)。

如果字符串的定界符之间无任何字符(即””)称为空串,其长度为零。

字符串中可以包含ASCII码中任一字符,通用的表示形式为“\nnn“,nnn 为八进制形式的ASCII码。

例如:“\101\102 \103”表示“ABC”,两者的作用完全相同。

由于反斜杠“\”已作为字符串中的前导转义符,因而当字符串中要使用反斜杠时,必须加转义符,即用双反斜杠“\\”表示字符串中一个反斜杠“\”,也可以用反斜杠的ASCII码表示(即“\114”)。

同样,由于双引号已作为字符串的定界符使用,因而字符串中的双引号可以用“\””或“\042”表示。

对于一些常用的控制字符,其ASCII代码见下表。

字符代码表例如:下面的表达式表示在显示提示内容前先进行换行,然后再显示字符串内容。

(prompt “\nEnter filename:”)或(prompt “\012Enter filename:”)二者效果完全相同。

符号AutoLISP中符号用于存储数据,因此“符号”和“变量”这两个词含义相同,可以互相交换使用。

符号名可以由除下列6个字符外的任何可以打印的长度不限的字符序列来组成:“(”、“)“、“,”、“’”、“””、“;”,当这6个字符中的任一字符在符号名中出现时,将终止符号名。

不允许使用数字符号作为第一个字符。

下列为合法的符号名:ABC,!A,&AB,A3下列为不合法的符号名:(A),A.B,3A在AutoLISP中符号名的大小写是等价的。

LISP中“约束”是指对一对符号和值,当把一个值赋给一个符号时,也即把这个符号约束为那个值。

例如:(setq a 6)“!a”将显示6,表示a是一个整数,其值为6。

(setq a 6.0)“!a”将显示6.0,表示a是一个实数,其值为6.0。

(setq a “6.0”)“!a”将显示6,表示a是一个字符串,其值为“6.0”。

表表是指在一对相匹配的左右圆括号之间的元素的有序集合。

表中的每一项称为表的元素,表中的元素可以是整数、实数、字符串和符号,也可以是另一个表。

为了处理图形中点的坐标,AutoLISP对二维和三维点的坐标按如下规则表示:二维点:以分别代表x,y坐标的两个实数所构成的表(x y)的形式表示,如:(3.21 7.58)三维点:以分别代表x,y,z坐标的三个实数所构成的表(x y z)的形式表示,如:(3.21 7.58 4.68)。

表的大小用其长度来度量。

长度是表中顶层元素的个数。

例如:(setq a 6) 表的长度为3(setq a (+ c (/ d 2) ) ) 表的长度为3表有两种基本类型:标准表和引用表。

标准表是从左括号开始到配对的右括号结束。

表中的第一个元素(0号元素)必须是一个合法的已存在的AutoLISP函数。

引用表是在左括号前加一撇号,表示不对此表作求值处理.........................。

文件描述符当AutoLISP打开一个文件时,系统将给该文件赋一个数字标号,在以后要访问该文件时(读或写文件),可利用该文件描述符对指定的文件进行操作。

例如:打开一个名为:“myfile.dat”的文件,把打开文件时的文件描述符赋给符号f,再把“This is a sample under AutoLISP.”写入该文件。

(setq f (open “c:\\myfile.dat” “w”) )(print “This is a sample under AutoLISP.” f)实体名实体名是AutoCAD系统在绘图过程中赋予所绘实体的一个数字标号。

实际是指向一个AutoCAD系统内部的数据文件的一个指针。

例如:(setq elast (entlast) )注:entlast 是获取数据库中最新图元的名称。

选择集选择集一个或多个实体的集合。

它类似AutoCAD的实体选择过程。

在AutoLISP程序中也可以构造一个选择集,并把它赋予一个符号供其它函数使用。

例如:(setq ss (ssget “p”))子程序和外部子程序由AutoLISP提供的函数称为子程序(内部函数),外部子程序是由ADSRX或ARX应用程序定义的子程序。

2.3 程序结构C,VC,VB等采用“中缀表示法”例如:X=3.4AutoLISP采用的是“前缀表示法“例如:(setq x 3.4)表达式X=(A+B)*C在AutoLISP中表示为:(setq X (* ( + A B) C) )(setq a 2.3 )(setq b 6.7)(+ a b )(defun C:ff(/)(setq a 2.3 )(setq b 6.7)(setq c (+ a b ) ))2.4 求值、表达式及变量求值每个LISP程序的核心是一个求值器。

求值器读入用户的输入行(一个符号表达式),对其进行计算,然后返回计算结果。

AutoLISP的求值过程如下:(1)整形数、实型数、字符串对、文件指针和子程序以它们本身的值作为结果。

(2)符号以它们当前的约束值作为计算结果。

(3)表根据其第一个元素的类型来进行求值。

表达式所有AutoLISP表达式均为下述形式:(function_name [arguments]……)左边以左括号“(”开始,其后由函数名和函数的参数组成,最后以右括号“)”结束。

每个表达式都有一个返回值。

表达式的参数可以是一个表达式,它的返回值将被外层表达式使用。

变量AutoLISP的变量有四种类型:整型数、实型数、字符串和表。

相关文档
最新文档