lisp

阅读 / 问答 / 标签

cad如何计算不同圆的数量(lisp) AutuCAD中四个不同直径的圆,怎么用lisp计算出来

我想四个和一个是一样的,举个例子(sslength(ssget "x" "((0 . "CIRCLE") (40 . 50))))返回的是图纸中半径是50的圆的个数

Reddit 为什么放弃 Common Lisp 用 Python

Lisp太强大了,难以控制,所以那么多年了,它一直在那里被人仰望,但仅仅只是仰望,从未成为真正的主流语言。

autolisp 中nth是什么意思

函数名。语法 :(nth n list)功能及参数 此函数将返回 表list 中的第 n 个元素, 其中 n 是返回元素的顺序号码 (第一个元素由零开始的)。如果 n 的数目超过 list 中的数目时, 本函数将返回 nil。范例: (nth 1 "(0 1 2 3 4 5 6 7 8 9)) ;返回 1 (nth 3 "(a b c d e)) ;返回 D (nth 0 "(a b c d e)) ; 返回 A (nth 5 "(a b c d e)) ;返回 nil

如何将LISP源程序编译成fasvlx格式?

1、打开Visual LISP编辑器;2、点文件/生成应用程序/新建应用程序向导3、如文件品种单一,则选简单模式,如用几种类型文件,如LISP,DCL等等,则选择专家模式4、按程序要求,选择你已有的程序文件所在文件夹,并填写你想要的编译后的VLX文件名称如123;5、最在当出现编译应用程序时,默认为打勾项。此时点击完成按钮,就KO了。6、打开你已有的程序文件所在文件夹,把124.VLX文件找出来,就可以加以应用了。

cadlisp二次开发实例?

AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前大家广泛使用的是AutoCAD2000或2002,最新版本是AutoCAD2004,其二次开发语言及工具也在不断地涌现1AutoLISPAutoLISP的全名是LISTProcessingLanguage,她出现于1985年推出的AutoCADR2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,她一直是低版本AutoCAD的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。3ADSADS的全名是AutoCADDevelopmentSystem,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。4ObjectARXObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARXforAutoCAD2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(AutoCAD数据库)和AcEd(AutoCAD编译器),另外还有其它的一些重要库组件,如AcRX(AutoCAD实时扩展)、AcGi(AutoCAD图形接口)、AcGe(AutoCAD几何库)、ADSRX(AutoCAD开发系统实时扩展)。ObjectARX还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。5VisualLISPVisualLISP已经被完整地集成到AutoCAD2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。其特点为自身是AutoCAD2000中默认的代码编辑工具;用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于AutoCAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。6VBAVBA即Mcrosoftoffice中的VisualBasicforApplications,它被集成到AutoCAD2000中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。

LISP程序中如何输入点的三维坐标

输入三维坐标?(setq x1 (getreal " enter number: x1=") y1 (getreal " enter number: y1=") z1 (getreal " enter number: z1=") p1(list x1 y1 z1))前三行输入坐标,最后一行将坐标合成一个点,之后直接用p1表示这个点了~

AutoCAD软件的Lisp语句含义解释

(defun c:0( / l5) (setq l5 (cdr (assoc (entget (car (entsel)))))) (command "layer" "lo" "*" "" "layer" "u" l5 "" "layer" "s" l5 ""))最简单就是这样了

请教lisp高手,这段代码错在哪了?总是提示错误: SETQ 中参数太少

看下第6行和第9行,似乎有写法错误,少空格了另外,(setq P3 ......那一段你看下,括号应该有问题

怎么在启动CAD时自动加载Lisp的工具及插件

  网上有很多非常有用的CAD插件,手动加载后就可以执行,但每次用的时候都要加载挺麻烦的,能不能在启动软件的时候把自己常用的插件加载进来?   方法1:添加到启动组   CAD的`工具插件都可以通过appload(ap)命令来加载,在弹出的“加载卸载应用程序”对话框中,可以找到“启动组”。不同CAD不一样,AutoCAD是在“启动组”下面有一个“内容”按钮,点击此按钮就可以需要启动时自动加载的程序加进去;浩辰CAD有一个“添加到启动组”按钮,可以将“历史记录列表”中加载过的程序添加到启动组中。添加到启动组后,下次启动CAD的时候这些程序就会自动加载。   这种方式比较简单易行,任何操作起来都没有难度。   方法2:在启动的lisp文件加入LOAD语句。   无论是AutoCAD还是浩辰CAD等国产CAD,启动时都会有一个自动加载的LISP程序,AutoCAD加载的是acad.lsp或acadxxxx.lisp(xxxx为版本号),acaddoc.lsp等(通常在AutoCAD的support目录下),很多CAD病毒正是利用了这一点来加载从而影响CAD的应用;浩辰CAD等自动加载的LSP名为icadautoload.lsp,在安装的根目录下,浩辰CAD8以后的版本为SUPPORT目录下的gcad2013doc.lsp。   需要做的就是用记事本打开这些LSP,在里面加上类似下面的语句:   (LOAD "x:\xxxxx\sp2pl.lsp")   如果觉得写路径太麻烦,你就可以将程序复制刚才哪些自动加载LISP所在的路径。   关于CAD病毒   因此如果遇到AutoCAD莫名奇妙出现不正常状态,你可以搜索所有acad*.lsp,看看在图纸所在目录是否有此类文件,是否有多个相同大小的此类LSP,如果有,删除掉后可以看看CAD是否恢复正常。如果有兴趣可以用记事本打开看看,到底这些CAD病毒做了什么手脚。当然现在CAD病毒也有变种成acad*.vlx或acad*.fas的,这些文件就没法打开看了,如果有此类文件,建议直接删除。

怎么配置lisp for linux

你好,配置方案如下:1. install Steel Bank Common Lisp from:http://www.sbcl.org/platform-table.htmltar -xjf sbcl-1.0.58-x86-linux-binary.tar.bz2cd sbcl-1.0.58-x86-linuxsush install.shsbcl is install to /usr/local/bin/sbclusing (quit) to quit2. downlaod emacs from:http://mirror.bjtu.edu.cn/gnu/emacs/./configuremake make install3. download quicklisp from:http://beta.quicklisp.org/quicklisp.lispquicklistp is used to search for and install Common Lisp librariesNext, run sbcl and type in the following:(load "/path/to/quicklisp.lisp")After it loads, run:(quicklisp-quickstart:install)Quicklisp will install by default in ~/quicklispFinally, run:(ql:add-to-init-file)$cat ~/.sbclrc;;; The following lines added by ql:add-to-init-file:#-quicklisp(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)))) (when (probe-file quicklisp-init) (load quicklisp-init)))4. install slime to sbclFirst in SBCL run:(ql:quickload "quicklisp-slime-helper")5. make relation with emacsTo do that, add the following to ~/.emacs:(setq inferior-lisp-program "sbcl")(load (expand-file-name "~/quicklisp/slime-helper.el"))6. start you emacs and enjoy lisp launch Emacs, type Alt-x (Meta-x, technically), and type in “slime”. Hit enter and you should find yourself at a CL-USER prompt within Emacs.

用LISP程序画函数曲线

3. (defun c:pwx () (setq pt1 (getpoint" The first point, please")) (setq pt2 (getpoint" The second point,please")) (setq pt3 (getpoint" The third point,please")) (setq n (getdist " Segment number")) (setq f (open "pwx.inp" "w")) (print (car pt1) f) (print (cadr pt1) f) (print (car pt2) f) (print (cadr pt2) f) (print (car pt3) f) (print (cadr pt3) f) (print fdx f) (close f) (command "shell" "pwx") (setq f (open "pwx.dat" "r")) (setq a (atof (read-line f))) (setq b (atof (read-line f))) (setq c (atof (read-line f))) (close f) (setq dx (- (car pt3) (car pt1))) ;(setq n (fix (/ (+ (abs dx) 0.5) fdx))) (setq ddx (/ dx n)) (command "pline" pt1) (setq i 1) (while (<= i n) (setq x (+ (car pt1) (* ddx i))) (setq y (+ (* a x x) (* b x) c)) (setq pt (list x y)) (command pt) (setq i (1+ i)) (command "") ) (defun break (message / loop) (princ message) (setq loop t) (while loop (princ " >:") (setq query (read-line)) (if (/= query "") (princ (eal (read query))) (setq loop nil) ) (princ) )用LISP程序画阿基米德螺线的程序如下:AJMD.LSP(defun func (hansu / p x0 y0 s e d v p1 p2) (initget 1) (setq sp (getpoint " 输入中心点: ")) (setq x0 (car sp)) (setq y0 (cadr sp)) (setq s (getreal " 起始角度(弧度值)<0>:")) (if (not s) (setq s 0.0)) (setq e (getreal " 终端角度(弧度值)<2pi>:")) (if (not e) (setq e (* 2 pi))) (setq d (getreal " 步长(弧度值)<0.1>:")) (if (not d) (setq d 0.1)) (setq r (getreal " 半径(mm)<20.0>:")) (if (not r) (setq r 20.0)) (setq v s p1 (hansu v)) (while (< v (+ e 0.001)) (setq v (+ v d) p2 (hansu v)) (command "line" p1 p2 "") (setq p1 p2) ))(defun ajmd (b / x y) (setq x (+ x0 (* r b (cos b))) y (+ y0 (* r b (sin b)))) (list x y))(defun c:ajmd() (func ajmd) (redraw) (princ))

求CAD加开图层LISP

;初学者写的小程序 , 自动生成图层,图层颜色区分开,并置为当前图层,“NL” “TC-”改为自己喜欢的就好了(defun c:NL()(setvar "cmdecho" 0)(if (> NewLayerNumber 0) (setq NewLayerNumber NewLayerNumber) (setq NewLayerNumber 0))(setq NewLayerNumber (+ NewLayerNumber 1))(setq NewLayerName (strcat "TC-" (itoa NewLayerNumber)))(command "layer" "M" NewLayerName "c" NewLayerNumber "" "")(print (strcat "Layer already created , Current Layer is :" NewLayerName))(princ))

既然 Lisp 以及基于此的语言好到不行,为什么基于 C 的语言一经问世便占据统治地位?

我们假设要解决的特定问题的复杂性是恒定的(即完全解耦后子问题的复杂性)。解决这个问题的复杂性等于解决方案加上常数所引入的复杂性。我们解决问题的工具是编程语言和库、运行环境和支持环境(如IDE、社区、文档、业务支持等)。现代Lisp无疑是非常优雅的,但这种优雅是以牺牲可用性为代价的。什么是可用性?这是快速建立解决方案的可能性。这依赖于一个强大的库,而库依赖于语言的直观性和简单性。Lisp并不是简单的C语言,虽然这个想法很简单,但是在深入的学习中你会发现很多地方可以理解(参考Lisp最佳实践)。例如,至少有三种不同的等价深度。Lisp不符合大规模使用的物理机器模型。一度雄心勃勃的Lisp机器后来丢失了,Lisp不适合硬件实现。这种错误的一个后果是,对硬件的理解无助于您对软件的理解。这种知识分割是致命的,尤其是在编程语言的早期开发中。而C则直接基于简单的抽象硬件。写在LISP后面的一页纸可以写下来。它给前端带来了很多的复杂性。Lisp程序员需要做许多需要注意的编程语言。(Lisp的爱好者对基于Lisp构建自己的编程世界很感兴趣),这应该是Lisp听众非常小的重要原因之一。解决实际问题需要成熟的工程实践、一致的接口、模型、范例,甚至是纪律。Lisp自由风扇,这是约束吗?当涉及到支持环境时,Lisp社区的混乱是显而易见的,而且业务支持是好的。有成百上千的方言,而其他语言的程序员如果学习Lisp,一周内可以得到另一种方言。现在普通Lisp和两个系列的山水似乎是平等的。但仍有许多问题。一句话,Lisp可以玩,不是要投入太多精力,因为它不使用无用的技能。

怎么能将Lisp代码编译成EXE文件??

  编译lisp源代码的时候要写一段说明放在源代码后面让编译器知道想要做什么。  源代码,目的是使用 f 12 23 22这样的命令求出12 23 22这三个数字的阶乘。 =============================== (defun main (&rest args) (defun factorial (n) (if (= n 0) 1 (* n (factorial (- n 1))) ) ) (loop for i in *args* do (print (factorial (parse-integer i)))) (quit)) (EXT:SAVEINITMEM "f" :QUIET t :INIT-FUNCTION "main :EXECUTABLE t :NORC t) =============================== 保存在文件a.txt里面,然后运行命令 $ clisp a.txt 就编译好了。这里面有个小幽默。一开始把“EXT”那一段放在了main函数前面,经过在lisp环境调试,发现如果把这个文件load两遍就能够编译出正确结果,load一遍就不行,load三遍四遍啥的都没问题。我感觉到超级奇怪。过了很久才明白过来。这样编译出来的是巨大的可执行文件,在文件里lisp把自己也放进去了。  如果要编译纯粹的lisp目标代码,执行起来就没这么痛快了,但是文件会小很多。  那个时候删掉(EXT)那一段,用命令 $ clisp -c a.txt 即可。

LISP的语言应用

LISP是函数式程序设计的先锋,其诸多革命性的创新思维影响了后续编程语言的发展,亦完全垄断人工智能领域的应用长达三分之一个世纪。曾在开展初年出现的低效率因素亦在集体改良中被移去,成就了现在广被应用于软件开发、电子商务及金融系统的Common Lisp、Scheme、Emacs Lisp和Clojure等。

lisp错误: 参数太多

貌似运行起来没什么错误吧~

请教大家:怎样用lisp 命令画个矩形,然后把矩形作成块?

(entmake "((0 . "INSERT"))) 中间用LISP的(entmake (list......))或者调用CAD命令(command "具体命令" "该命令所需要的数据或者选项") 绘制你需要制作成块的图元,可以有很多个至于你说的要一个矩形,简单起见可以用(COMMAND "rectangle“(getpoint)(getpoint))来完成它 (entmake "((0 . "SEQEND"))最后的代码就是entmake "((0 . "INSERT")))(COMMAND "rectangle“(getpoint)(getpoint))(entmake "((0 . "SEQEND"))

在lisp中四舍五入函数怎么使用呀?

rtos将数字转换成字符串(rtos number [mode [precision]]) 根据 mode、precision 参数和系统变量 UNITMODE、DIMZIN、LUNITS 和 LUPREC 的设置,rtos 函数返回代表 number 的字符串。参数number数值。mode整数,指定现行单位模式。mode 的取值对应于 AutoCAD 系统变量 lunits 的允许值,如下所示:1 科学2 小数3 工程(英尺和十进制英寸)4 建筑(英尺和分数英寸)5 分数precision整数,指定精度。mode 和 precision 参数对应于系统变量 LUNITS 和 LUPREC。如果省略这两个参数,rtos 函数使用 LUNITS 和 LUPREC 的当前值。返回值字符串。当选择了工程记数格式、建筑记数格式或分数单位格式时(即 mode 值为 3、4 或 5),UNITMODE 系统变量对返回的字符串有影响。示例设置变量 x:命令: (setq x 17.5)17.5将 x 的值转换为科学记数格式的字符串,精度为 4:命令: (setq fmtval (rtos x 1 4))"1.7500E+01"将 x 的值转换为小数格式的字符串,精度为 2:命令: (setq fmtval (rtos x 2 2))"17.50"将 x 的值转换为工程记数格式的字符串,精度为 2:命令: (setq fmtval (rtos x 3 2))"1"-5.50""将 x 的值转换为建筑格式的字符:命令: (setq fmtval (rtos x 4 2))"1"-5 1/2""将 x 的值转换为分数格式的字符:命令: (setq fmtval (rtos x 5 2))"17 1/2"当系统变量 UNITMODE 设为 1 时,则设定显示单位与输入单位相同,由 rtos 返回的字符串会因“工程”(mode = 3)、“建筑”(mode = 4) 和“分数”(mode = 5) 的单位不同而异。例如:命令: (setvar "unitmode" 1)1命令: (setq fmtval (rtos x 3 2))"1"5.50""命令: (setq fmtval (rtos x 4 2))"1"5-1/2""命令: (setq fmtval (rtos x 5 2))"17-1/2"

lisp 任何形状 生成矩形

编程即可实现

利用lisp给cad直线取整?

如修改图形很麻烦,坐标点,线段长如是程序生成,要修改这lisp源代码,使之生成整数。如是数据,设置精度,就简单。

CAD lisp中,是否可以获取自己所在的lisp源代码文件的当前所在路径名?

(setq version_path (vlax-product-key)) (setq software_name (vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object ))))) (setq lsp_path (vl-registry-read (strcat "HKEY_CURRENT_USER\" version_path "\Profiles\" software_name "\Dialogs\Appload") "MainDialog"))

lisp怎么调用其他程序

因为在lisp中做一些工程计算比较麻烦,拟把这些工程计算用C语言来完成,程序名为a.exe。执行a.exe生成txt文件保存计算结果。在执行lisp命令时调用a.exe,并取得a.exe生成的文本数据。这样根据a.exe生成数据再在lisp中画图就可以了。不知能否做到,如何实现,

怎样在LISP中修改标注样式

结尾少了半边括号标注文字样式有问题

CAD切换标注样式的LISP

工具autolist,visual,LISP编辑器,可以切换标注样式。lisp语言适用于cad二次开发,你可以通过lisp语言编程来增加自己想要但是通用模块里没有的命令,比如你想画个螺钉,但是cad通用模块中不提供这个命令,这时候你就可以通过lisp语言编程编写一个画螺钉的命令,在画图过程中,你只需要输入命令,然后输入螺钉的基本参数就可以很快画出一个螺钉。

lisp CAD二次开发

这样写(DEFUN C:CU () (COMMAND "-LAYER" "S" (ssget) "" ))还可以这样写(DEFUN C:CU () (COMMAND "-LAYER" "S" pause "" )) 晕,楼主赶紧收掉这个问题吧,

lisp 中vlax-ename->vla-object是什么意思

这是cad自带的vlisp函数,你的cad可能加载了一些自定义程序,这些程序用了这个函数。 而你的cad里这个函数似乎丢失了。 解决的办法就是重新安装cad, 06版本以上的cad。

lisp创建编组

(command "GROUP" "C" "*" "*" en1 en2 en3 en4 "");;编组编组的功能我不是很清楚,只是用到这个的时候才研究了一下,编组的时候要命名,但是对象一多的话,命名就显的多余了,所以用"*"取消命名。en1 en2 这个对象,如果用ssget选择&kw的话,对象就是i=0,(setq en1 (ssname &kw i))(setq i (+ i 1))的方法提取。如果用entsel选择的对象&kw的话,对象就是(setq en1 (car &kw));如果是刚刚绘制的图形用(setq en1 (entlast))得到的图形就是图元名。创建了选择集后将此选择集保存为一个编组,我没有测试,不过可以试试这样的方法你测试一下:&kw是(ssget)选择集:(setq &k1 (ssname &kw 0));;提取(ssget)选择集里面的第一个对象(setq i 2);;(command "GROUP" "C" "*" "*" &k1);;这个对象加入并准备编组,根据多段线绘制方法差不多 (setq &k1 (ssname &kw 1));;提取第二个对象,编组的话,应当要两个对象以上, (while &k1;;选择循环 (command &k1);;加入编组 (setq &k1 (ssname &kw i));;取得第三个对象如果没有就结束循环 (setq i (+ i 1));; ) (command "");;编组结束你测试一下是不是可行,我没有测试,就是提供思路给你。

凸度的CAD lisp定义

凸度定义设圆弧所包含的圆心角为A(弧度表示),则凸度=四分之一圆心角之正切值lisp表示(setq 凸度 ((sin ( A / 4.0)) / (cos ( A / 4.0))))C#表示凸度=sin(A/4)/cos(A/4)凸度值的范围即sin(A/4)/cos(A/4)的取值范围,A=0~2*PI0到正无穷,当A=360时,cos90=0,所以值无效凸度的正负表明弧的方向

lisp选择集的问题?

你的目标是删除所有名为"TCH_SYMB_SECTION"的图元。如果你的代码不能成功删除图元,并返回错误0,可能的原因是`ssget`函数并未选中任何图元,因此`D1`可能是一个空集,所以`COMMAND "ERASE"`无法删除任何图元。你的代码应该是正确的,只要你的CAD文件中存在类型为"TCH_SYMB_SECTION"的图元。如果无法成功执行,你可能需要检查你的CAD文件是否确实存在这样的图元。以下是你的代码,它应该可以删除所有名为"TCH_SYMB_SECTION"的图元:(setq D1 (ssget "X" "((0 . "TCH_SYMB_SECTION")))) 注意,我在`ssget`函数中的选择集过滤器参数中添加了点号`.`,因为在AutoLISP中,点号`.`用于构造点对(pair),这是`ssget`函数的选择集过滤器参数需要的格式。如果这段代码仍然无法工作,你可以试着使用以下的代码,它会打印出所有名为"TCH_SYMB_SECTION"的图元的详细信息,以便你进行调试:(setq D1 (ssget "X" "((0 . "TCH_SYMB_SECTION"))))(mapcar "entget (vl-remove-if "listp (mapcar "cadr D1)))这段代码会使用`vl-remove-if`函数来移除所有列表元素(因为我们只关心图元名称),然后对每个图元使用`entget`函数来获取其详细信息。

CAD实用LISP文件放哪里

C:Program FilesAutoCAD 2007Express

lisp函数是不是cad的命令?

lisp本身就是cad所属的开发程序,他提供一些简单的函数计算,剩下的就全是针对autocad的绘图功能了。lisp程序类似与数据库中的存储过程,可以批量的处理绘制cad图形。学习lisp是很简单的,只要掌握了几个主要命令的使用就行,就是对语句格式要求很研,本身lisp的函数相当多,不必去记。加载LISP1.可以使用APPLOAD命令,然后去找到要加载的LISP文件,加载即可。2.可以自己从文件管理器把LISP文件拖动到ACAD的图形窗口,也可以加载3.在命令行后用,(load"c: empxxx.lsp")也可以加载,路径名请输入实际的路径。另:对于一个LSP程序,(defun后面的既是命令或者函数,一般程序应该有提示,若没有,标志符c:后面的单词是可以在ACAD下使用的命令,既可以在COMMAND:后面直接输入,即可执行。

如何用lisp程序提取选择的属性块中的length属性,并加合,最后给出结果

一般有两个方案第一个方案:用AutoLisp方案,首先用 取得图块这个图元,然后用 entnext 逐一找到属性块来找到其中length的属性,然后将它的值给找出来,然后进行运算,注意 entnext 的运用。这个很简单,你自己应该写吧。第二个方案:用VisualLisp方案,注意vla-getattributes,vlax-variant-value,vlax-safeArray->list这几个函数的运用,以下为 VisualLisp的例子(Defun C:Test () (setq en0 (car (entsel))) ;;此处请选有属性定义的图块 (setq vn0 (vlax-ename->vla-object en0)) (setq lstVar (vla-getattributes vn0)) (setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar))) (setq TextString nil) (foreach attr lstAttrs (setq TagString (vla-get-TagString attr)) (if (equal TagString "length") ;此处为你想要的元素 (setq TextString (vla-get-TextString attr)) ) ) (if TextString (princ (strcat "The content of length = " TextString)) (princ "没有找到length ") ) (prin1))

lisp有什么比较好用的编译器么

因为编译器只是个命令工具没什么叫"好用"的...我假设你问的是"编辑器"而不是"编译器":首先, 你问的是哪种lisp, 因为lisp有很多种.如果你需要对所有lisp都好用的编辑器, 估计只有emacs和vim可以满足你要求. 如果只要最常见的那些lisp, 除了这两个一般都有些专门为他优化的插件支持的编辑器, 比如 clojure有lighttable和nightcode, racket 有GRacket 等如果你真的问的是编译器的话, 请具体说是哪种lisp,因为不同的lisp编译器是完全不一样的, 比如common lisp 我是喜欢 ccl (很多人更喜欢sbcl), 比如scheme的话显然chez是最好得编译器

Scheme/Lisp有类型系统吗

lisp是一门反人类的语言,有两个特征,函数式编程,和它是一门面向语言的语言关于第一个特征:没有赋值,状态变量不能保存,只能通过不停调用函数地运作,强制要你进行递归性的思考,由此而衍生出非常抽象的概念和晦涩的技巧,如以函数作为算子运算出函数的函数,堪称计算机领域的泛函语言,由于在思维上与数学有天然的契合度,lisp适合于类型推演等理论方向。关于第二个特征:lisp即list processing,表处理语言,对于数据和代码都只采用同一种结构来表示,这意味着lisp可以很优雅地将它的代码当作数据来处理。。。是的,在lisp里面,数据跟代码的界限是非常模糊。所以lisp是可以生成代码的语言,你完全可以利用lisp发明出属于你自己的特定语言,此所谓面向语言的语言。。。什么人在用:基于上述两点,你可以知道lisp非常难学,也非常难用。那么谁在用呢?有四类人:学生。SICP听过吧?全球知名课程,这类人基本是闲的无聊,用用lisp来折磨折磨自己的大脑,感受感受这种当今世界中最接近神的宗教式的语言Geek。这类人痴迷一切小众装13的技术,lisp自然成为喜欢泡在代码堆里的他们饭后闲暇的谈资,睡前冥想的材料,周末消遣的玩意; 此外,Geek也是希望通过lisp找到一条通往天堂的路计算机科学家。这类人喜欢思考,尤喜那些错综复杂、扑所迷离的概念,抽象复杂却又大道至简的lisp自然正合其意,也是顺便找个可以发paper升职加薪的方向凡人。lisp有很多方言,所谓方言,即lisp的变种。如Autolisp,用在制图领域;Elisp,用在配置编辑器emacs。这里面有不少伪用户(当然elisp高手除外),他们只是工作的需要而泛泛一用,对lisp的本质和方法未做深思,也谈不上了解

CAD加载LISP命令,出现函数被取消,建议将(command)调用转换为(command-s)

一步解决

怎么在启动CAD时自动加载Lisp的工具和插件

在工具里面设置一下就行

LISP的语言标准

衍生LISP语言曾认证于以下标准:  ANSI X3.226-1994 - 1994年,程式语言Common Lisp(Common Lisp Programming language )  IEEE standard 1178–1990 (R1995) 1995年, 程式语言Scheme(Scheme Programming language )  ISO/IEC 13816:1997- 1997年,程式语言ISLISP(ISLISP Programming language )已撤回  ISO/IEC 13816:2007 - 2007年,程式语言ISLISP(ISLISP Programming language )

"Lisp"值得去学习吗?

 一、  如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。  二、  1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。  这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?  让我告诉你原因。  这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。  所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不 应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最 快的通用排序方法。  三、  Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展 为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语 言。  1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。  Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。 Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过 四十年的时间,一步步变得更强大。  直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。  四、  Lisp语言诞生的时候,就包含了9种新思想。其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次是:  1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。  2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。  3. 递归。Lisp是第一种支持递归函数的高级语言。  4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。  5. 垃圾回收机制。  6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。  区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。  后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。  7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。  8. 代码使用符号和常量组成的树形表示法(notation)。  9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。  在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编 译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension language);在运行期读取代码,使得程序之间可以用S-表达式(S-expression)通信,近来XML格式的出现使得这个概念被重新"发 明"出来了。  五、  Lisp语言刚出现的时候,它的思想与其他编程语言大相径庭。后者的设计思想主要由50年代后期的硬件决定。随着时间流逝,流行的编程语言不断更新换代,语言设计思想逐渐向Lisp靠拢。  思想1到思想5已经被广泛接受,思想6开始在主流编程语言中出现,思想7在Python语言中有所实现,不过似乎没有专用的语法。  思想8可能是最有意思的一点。它与思想9只是由于偶然原因,才成为Lisp语言的一部分,因为它们不属于John McCarthy的原始构想,是由他的学生Steve Russell自行添加的。它们从此使得Lisp看上去很古怪,但也成为了这种语言最独一无二的特点。Lisp古怪的形式,倒不是因为它的语法很古怪,而 是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基 本数据结构。  用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。  术语"宏"在Lisp语言中,与其他语言中的意思不一样。Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。  就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古 怪。另一个可能的原因是,如果你想为自己的语言添上这种终极武器,你从此就不能声称自己发明了新语言,只能说发明了一种Lisp的新方言。  我把这件事当作笑话说出来,但是事实就是如此。如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、 atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。事实上,Lisp语言 就是这样定义的,John McCarthy把语言设计成这个样子,就是为了让这种推导成为可能。  六、  就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?  如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?  另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥 作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟 悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。  那么,Lisp的编程优势体现在哪里呢?  七、  语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。  代码的数量很重要,因为开发一个程序耗费的时间,主要取决于程序的长度。如果同一个软件,一种语言写出来的代码比另一种语言长三倍,这意味 着你开发它耗费的时间也会多三倍。而且即使你多雇佣人手,也无助于减少开发时间,因为当团队规模超过某个门槛时,再增加人手只会带来净损失。Fred Brooks在他的名著《人月神话》(The Mythical Man-Month)中,描述了这种现象,我的所见所闻印证了他的说法。  如果使用Lisp语言,能让程序变得多短?以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。但是最 近,New Architect杂志上有一篇介绍ITA软件公司的文章,里面说"一行Lisp代码相当于20行C代码",因为此文都是引用ITA总裁的话,所以我想这 个数字来自ITA的编程实践。 如果真是这样,那么我们可以相信这句话。ITA的软件,不仅使用Lisp语言,还同时大量使用C和C++,所以这是他们的经验谈。  根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。  你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设使用功能较弱的语言,也能开发出同样的软 件。但是事实上,程序员使用某种语言能做到的事情,是有极限的。如果你想用一种低层次的语言,解决一个很难的问题,那么你将会面临各种情况极其复杂、乃至 想不清楚的窘境。  所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。事实上,按照大多数公司的实际情况,计划中五年完成的项目,很可能永远都不会完成。  我承认,上面的例子太极端。ITA似乎有一批非常聪明的黑客,而C语言又是一种很低层次的语言。但是,在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。

Lisp 值得去学习吗

Lisp值得去学习。LISP语言(LISP,List Processing的缩写)是一种早期开发的、具有重大意义的表处理语言。它适用于符号处理、自动推理、硬件描述和超大规模集成电路设计等。特点是,使用表结构来表达非数值计算问题,实现技术简单。LISP语言已成为最有影响,使用十分广泛的人工智能语言。在LISP语言中,数据和函数都是采用符号表达式定义的,这种符号表达式称为S一表达式,它是原予和表的总称。原子分为符号原子和数原子。符号原子是指有限个大写字母和数字组成的字符串,其中第一个符号必须是字母。原子NIL和T分别表示逻辑假(或空表)和逻辑真。数原子是指一串数字,通过符号表示其正负。扩展资料:LISP语言版本很多,常用的有:(1)MACLISP语言:1971年由MIT人工智能实验室研制,它比较注重效率、地址空间的保护和构造工具的灵活性。(2)INTERLISP语言:1978年由DEC和XEROX公司开发,它强调即使在速度和存贮空间方面有所损失,也要尽可能地提供最好的程序环境。(3)ZETALISP语言;在LISP机上实现。它和MACLISP关系密切,有很好的兼容性。并且对MACLISP进行了很多改进,提供了新的性能。(4)QLISP语言:它嵌在INTERLISP中,能灵活处理大型数据库,具有返回追踪与模式调用功能。(5)CommonLISP语言:它是在MACLISP的基础上发展起来的,并参考了INTERLISP和ZETALISP,因而功能较强且拥有其它版本的一些优点,已被广泛使用。(6)GCLISP语言:它作为CommonLISP在PC机上实现的第一个缩本,自然具有ConlmonLISP的通用性特点,其程序电容易移植到其它版本的LISP环境之中。GCLISP和CommonLISP核心部分兼容,与ZETALISP的某些概念吻合,此外还拥有若干先进的数据类型,着眼于让机器有较强的处理能力和记忆功能,因而效率较高,用户易于掌握,使用比较广泛。

Auto cad中的LISP语言是什么?有怎样的用途?

lisp语言是用于CAD二次开发,你可以通过lisp语言编程来增加自己习想要但是通用模块里没有的命令,比如你想画个螺钉,但是CAD通用模块中不提供这个命令,这时候你就可以通过lisp语言编程编写一个画螺钉的命令,在画图过程中你只需要输入命令然后输入螺钉的基本参数就可以很快画出一个螺钉。不知道我说的是否够清楚!你可以到网上找个小程序试下。

lisp 扩展数据

写入扩展数据,下面有些自己写的函数,希望对你有用。(defun regapp-new (appname) (if (tblsearch "appid" appname) ; Checks if already registered. T (if (= (regapp appname) nil) ; Some other problem. nil T ) ))(defun get-xdata (ent appname / ent-data ex-data);;; (get-xdata (car (entsel)) "appname") (setq ent-data (entget ent "("*"))) (if (and (setq ex-data (assoc -3 ent-data)) (setq ex-data (assoc appname (cdr ex-data))) ) (cdr (assoc 1000 (cdr ex-data))) ))(defun overwrite-xdata (ent appname value / ent-data ex-data ex-data-old ex-data-new );;; (overwrite-xdata (car (entsel)) "appname" "需要记录的内容") (setq ent-data (entget ent "("*"))) (setq ex-data (assoc -3 ent-data)) (setq ex-data-old (assoc appname (cdr ex-data))) (if ex-data-old (progn (setq ex-data-new (subst (cons 1000 value) (assoc 1000 (cdr ex-data-old)) ex-data-old ) ) (setq ex-data (subst ex-data-new ex-data-old ex-data ) ) ) (if (regapp-new appname) (progn (setq ex-data-new (cons appname (list (cons 1000 value)) ) ) (setq ex-data (append (if ex-data ex-data "(-3) ) (list ex-data-new) ) ) ) ) ) (entmod (append (entget ent) (list ex-data))))

visual lisp和auto lisp有什么区别?和lisp语言有什么关系?lisp语言有版本

vlisp是alisp的一个加强版。在cad中的lisp语言,就是运用的lisp的语法格式,对于vlisp中的函数具有专一性,主要用于cad的二次开发。没有版本之分。基本上写的程序可以用于cad2002-2016都可以

lisp语言如何编写圆弧,请给与详细解释

用command函数画出来就是了。LISP中command()非常强大,还应用简单。

如何使用LISP命令来实现修改 "块"的名字

rename这个命令还要手动操作,选择. 有没有用LISP命令来实现已知块名修改成另外块名的方式. 使用LISP语言来自动实现,中间不需要鼠标操作的.

在cad中如何创建lisp程序?以及大神们所说的lisp解决重复性劳动问题是怎么回事?

CAD支持AutoLisp程序设计语言, AutoLisp代码可以在任意的文本编辑器中创建.不过AutoCAD也提供了Visual Lisp编辑器,可以支持语法高亮,调试编译什么的.打开Visual Lisp编辑器有两种方式:1. AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"---->"Visual Lisp编辑器".(”AutoLisp"---->"导入应用"这个命令是用来加载AutoLisp脚本的.2. AutoCAD2009及之后的版本, 在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。首先,AutoLisp也是一个程序设计语言,作为一个编程语言,AutoLisp能做的很多:扩充AutoCAD的原有命令。任何带有C:前缀的AutoLisp函数,在AutoCAD中都可以像"line" "circle" "dim"等命令一样使用。编写代码直接根据国标图库要求来绘出一些常用图库标准件什么的,或是代替人查找各种设计手册中的相关数据并继续使用。进行参数化绘图,对于一些不特别复杂的系统,提供窄范围、大深度的专业设计自动化或者辅助系统,如发动机装配工具设计、纵使机主轴箱设计等。以上这些功能都可以解决重复性劳动,前提是你得先学会AutoLisp编程语言.

用简单lisp程序编制

(defun c:zfx(/ A ANG p1 p2 p3 p4 p5 os cmd) (SETQ CMD (GETVAR "cmdecho")) (SETVAR "cmdecho" 0) (setq os (getvar "osmode")) (setq A (getreal" :输入边长")) (setq ANG (getreal" :输入角度")) setq r (getreal" :输入半径")) (setq p1 (getpoint" :指定起点")) (setvar "osmode" 0) (setq p2 (polar p1 (* pi (/ ANG 180)) A)) (setq p3 (polar p2 (* pi (+ 0.5 (/ ANG 180))) A)) (setq p4 (polar p1 (* pi (+ 0.5 (/ ANG 180))) A)) (command "pline" p1 p2 p3 p4 "c") (SETQ p5 (polar p1 (+ (* pi (/ ANG 180)) (* 0.25 pi)) (* A (sin (/ pi 4))))) (command "circle" p5 r) (setvar "osmode" os) (SETVAR "cmdecho" CMD) (PRINC))

LISP提示错误“输入的列表有缺陷”

(defun c:txy( / xc yc r n m id ) (defun getdata() (setq xc(atof(get_tile "X"))) (setq yc(atof(get_tile "Y"))) (setq r(atof(get_tile "R"))) (setq n(atof(get_tile "N"))) (setq m(atof(get_tile "M"))) )(setq sdt 0) (setq id(load_dialog "C:\Users\daili\Desktop\CAD\tongxinyuan.dcl")) (if (< id 0)(exit)) (setq xc 50 yc 50 r 5 n 10 m 5) (if (not (new_dialog "txy" id))(exit)) (set_tile "X" (rtos xc 2 2)) (set_tile "Y" (rtos yc 2 2)) (set_tile "R" (rtos r 2 2)) (set_tile "N" (rtos n 2 2)) (set_tile "M" (rtos m 2 2)) (action_tile "accept" "(getdata) (done_dialog 1)") (action_tile "cancel" "(done_dialog -1)") (setq sdt (start_dialog)) (unload_dialog id) (if (> sdt 0) (Repeat n (Command "circle" (list xc yc) r) (Setq r (+ r m)) ) (princ) ))没什么问题 最后一个括号没有用美式用的是中式 另外最后再补一个括号就好了 上面是我改好的 只要是列表有缺陷 你就查括号有没有少或者不对 用一个专门的代码编辑器吧 比较容易看出括号形式或数量不对求采纳为满意回答。

Lisp 和 Haskell 各有什么优缺点?学哪个好

思维方式而言,两者相差并不多。考虑到函数式编程并不是如今程序开发的主流,无论是 Lisp 还是 Haskell,它们和主流工程实践都相差很多。但具体到函数式程序设计语言之间,基本的思路是类似的。函数式程序设计的风格的实质:去除赋值的副作用,自包含上下文的高阶函数,以「值」的流动而不是操作的变化为中心设计程序,这在两门语言中都是一样的。当然,在细节上两门语言仍然有区别:Lisp 的宏展开,弱类型/动态类型,Haskell 的惰性求值,强类型,都有各自的区别。具体开始使用时,需要注意其特性才能用好。在社区上,Lisp 有固定的社区,但由于大量 Lisp 方言的存在,导致如今的分裂得很厉害。除了 Common Lisp 这个大型社区外,还有各种小型 Lisp 社区,星罗棋布。这使得 Lisp 社区事实上很难形成合力做出一个各个方言通用的平台——是的,即使 Common Lisp 是最大的社区,从源流上看,它也依然是方言之一。我必须承认,这一点上 Haskell 要好得太多。Haskell 的社区通过 http://www.haskell.org 很好地被统一在一起,无论是教学还是开发,都容易集合整个社区的力量。谈到工程领域,至少目前为止,Haskell 社区在宣传时一直是将其定位为一门通用程序设计语言的。但恕我直言,现在这个社区还没有找到真正适合自己的工作场景,或者说,这个社区的成熟程度还不足以支撑一个适合自己的工作场景。在我的眼里,这个社区的核心,仍然是一门玩具语言。反观 Lisp 社区,他们的应用场景简单而专注:符号推演和人工智能;与此同时,许多 Lisp 方言也将自己的触角伸进实际工程领域,配合其他语言使用。也有 Emacs 和 Gimp 这样各自领域内公认的通用软件。

怎么能将Lisp代码编译成EXE文件??

  编译lisp源代码的时候要写一段说明放在源代码后面让编译器知道想要做什么。  源代码,目的是使用 f 12 23 22这样的命令求出12 23 22这三个数字的阶乘。 =============================== (defun main (&rest args) (defun factorial (n) (if (= n 0) 1 (* n (factorial (- n 1))) ) ) (loop for i in *args* do (print (factorial (parse-integer i)))) (quit)) (EXT:SAVEINITMEM "f" :QUIET t :INIT-FUNCTION "main :EXECUTABLE t :NORC t) =============================== 保存在文件a.txt里面,然后运行命令 $ clisp a.txt 就编译好了。这里面有个小幽默。一开始把“EXT”那一段放在了main函数前面,经过在lisp环境调试,发现如果把这个文件load两遍就能够编译出正确结果,load一遍就不行,load三遍四遍啥的都没问题。我感觉到超级奇怪。过了很久才明白过来。这样编译出来的是巨大的可执行文件,在文件里lisp把自己也放进去了。  如果要编译纯粹的lisp目标代码,执行起来就没这么痛快了,但是文件会小很多。  那个时候删掉(EXT)那一段,用命令 $ clisp -c a.txt 即可。

怎么在启动CAD时自动加载Lisp的工具和插件

添加到CAD加载程序对话框界面里的【内容】--启动组

cadlisp二次开发实例?

AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前大家广泛使用的是AutoCAD2000或2002,最新版本是AutoCAD2004,其二次开发语言及工具也在不断地涌现1AutoLISPAutoLISP的全名是LISTProcessingLanguage,她出现于1985年推出的AutoCADR2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,她一直是低版本AutoCAD的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。3ADSADS的全名是AutoCADDevelopmentSystem,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。4ObjectARXObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARXforAutoCAD2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(AutoCAD数据库)和AcEd(AutoCAD编译器),另外还有其它的一些重要库组件,如AcRX(AutoCAD实时扩展)、AcGi(AutoCAD图形接口)、AcGe(AutoCAD几何库)、ADSRX(AutoCAD开发系统实时扩展)。ObjectARX还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。5VisualLISPVisualLISP已经被完整地集成到AutoCAD2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。其特点为自身是AutoCAD2000中默认的代码编辑工具;用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于AutoCAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。6VBAVBA即Mcrosoftoffice中的VisualBasicforApplications,它被集成到AutoCAD2000中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。

lisp程序图元选取问题

一般有两个方案第一个方案:用AutoLisp方案,首先用 取得图块这个图元,然后用 entnext 逐一找到属性块来找到其中length的属性,然后将它的值给找出来,然后进行运算,注意 entnext 的运用。这个很简单,你自己应该写吧。第二个方案:用VisualLisp方案,注意vla-getattributes,vlax-variant-value,vlax-safeArray->list这几个函数的运用,以下为 VisualLisp的例子(Defun C:Test () (setq en0 (car (entsel))) ;;此处请选有属性定义的图块 (setq vn0 (vlax-ename->vla-object en0)) (setq lstVar (vla-getattributes vn0)) (setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar))) (setq TextString nil) (foreach attr lstAttrs (setq TagString (vla-get-TagString attr)) (if (equal TagString "length") ;此处为你想要的元素 (setq TextString (vla-get-TextString attr)) ) ) (if TextString (princ (strcat "The content of length = " TextString)) (princ "没有找到length ") ) (prin1))

如何编写lisp

用cad的visual lisp编辑器编写,或者用txt编写代码并将txt文档另存为.lsp文件。打开cad,工具->加载应用程序....->在弹出的对话框中选择.lsp文件程序加载后,输入命令运行lsp。这里的命令是代码里面自己设计的命令。我这里有简单的入门资料,需要的话给我发邮件 sepsnow@126.com

LISP的介绍

由阿澄佳奈、片冈あづさ及原纱友里三位美少女所组成的超至近距离声优团体【LISP】。2010年10月27日以数位单曲在日本出道。

CAD里面的lisp有什么作用啊,怎么用,要具体的,能让我明白加分

AutoCAD只是提供了基本功能,同时提供了二次开发编程接口,可以加载autolisp程序。比较有名的【天正】插件,AutoCAD加载以后,提供各种功能,提高了绘图功能。由于天正越来越完善,越来越多的设计院使用天正来绘制图形。当然,这个编程可以自己写,Autodesk公司提供了autolisp函数,格式简单,很容易学会。autolisp编程有名的教材是【AutoCAD程序设计魔法书 [AutoLISP DCL基础篇]】,把里面的内容看完,基本上会写程序。总的讲,要想提高工作效率,一定要学会使用autolisp插件。可能的话,学会编写程序。

Lisp编程:为什么人工智能很多要用lisp呢?

我认为是历史原因造成的,人工智能需要的是解释性语言,在人工智能开始研究的时候,只有lisp一个是解释性语言,什么java,python都还没发明,用着用着就成习惯了,但目前lisp并不是最好的选择(开发效率太次),美国的火星探测器的程序都是java的~~~。如果要类比,你看书店里大部分数据结构的书都喜欢用C来描述,而不是python或者java或者C#,也是这个道理。因为在我看来,语言就是个工具,基本的逻辑有了,干嘛都行,现成的东西多的语言肯定是首选,成本啊,同学

lisp语言的定义

约翰麦卡锡定义lisp当然早已有了各种计算模型--最著名的是图灵机. 但是图灵机程序难以读懂. 如果你要一种描述算法的语言,你可能需要更抽象的,而这就是约翰麦卡锡定义 Lisp的目标之一.约翰麦卡锡于1960年定义的语言还缺不少东西. 它没有副作用,没有连续执行 (它得和副作用在一起才有用),没有实际可用的数,[4] 没有动态可视域. 但这些限制可以令人惊讶地用极少的额外代码来补救. Steele和Sussman在一篇叫做``解释器的艺术""的著名论文中描述了如何做到这点.[5]如果你理解了约翰麦卡锡的eval,那你就不仅仅是理解了程序语言历史中的一个阶段. 这些思想至今仍是Lisp的语义核心. 所以从某种意义上,学习约翰麦卡锡的原著向我们展示了Lisp究竟是什么. 与其说Lisp是麦卡锡的设计,不如说是他的发现. 它不是生来就是一门用于人工智能,快速原型开发或同等层次任务的语言. 它是你试图公理化计算的结果(之一).随着时间的推移,中级语言,即被中间层程序员使用的语言,正一致地向Lisp靠近. 因此通过理解eval你正在明白将来的主流计算模式会是什么样.注释把约翰麦卡锡的记号翻译为代码的过程中我尽可能地少做改动. 我有过让代码更容易阅读的念头,但是我还是想保持原汁原味.在约翰麦卡锡的论文中,假用f来表示,而不是空表. 我用空表表示假以使例子能在Common Lisp中运行. (fixme)我略过了构造dotted pairs,因为你不需要它来理解eval. 我也没有提apply,虽然是apply(它的早期形式,主要作用是引用自变量),被约翰麦卡锡在1960年称为普遍函数,eval只是不过是被apply调用的子程序来完成所有的工作.我定义了list和cxr等作为简记法因为麦卡锡就是这么做的. 实际上 cxr等可以被定义为普通的函数. List也可以这样,如果我们修改eval,这很容易做到,让函数可以接受任意数目的自变量.麦卡锡的论文中只有五个原始操作符. 他使用了cond和quote,但可能把它们作为他的元语言的一部分. 同样他也没有定义逻辑操作符and和not,这不是个问题,因为它们可以被定义成合适的函数.在eval.的定义中我们调用了其它函数如pair.和assoc.,但任何我们用原始操作符定义的函数调用都可以用eval.来代替. 即(assoc. (car e) a)能写成(eval. "((label assoc.(lambda (x y)(cond ((eq (caar y) x) (cadar y))("t (assoc. x (cdr y))))))(car e)a)(cons (list "e e) (cons (list "a a) a)))麦卡锡的eval有一个错误. 第16行是(相当于)(evlis. (cdr e) a)而不是(cdr e),这使得自变量在一个有名函数的调用中被求值两次. 这显示当论文发表的时候,eval的这种描述还没有用IBM 704机器语言实现. 它还证明了如果不去运行程序,要保证不管多短的程序的正确性是多么困难.我还在麦卡锡的论文中碰到一个问题. 在定义了eval之后,他继续给出了一些更高级的函数--接受其它函数作为自变量的函数. 他定义了maplist:(label maplist(lambda (x f)(cond ((null x) "())("t (cons (f x) (maplist (cdr x) f))))))然后用它写了一个做微分的简单函数diff. 但是diff传给maplist一个用x做参数的函数,对它的引用被maplist中的参数x所捕获.[6]这是关于动态可视域危险性的雄辩证据,即使是最早的更高级函数的例子也因为它而出错. 可能麦卡锡在1960年还没有充分意识到动态可视域的含意. 动态可视域令人惊异地在Lisp实现中存在了相当长的时间--直到Sussman和Steele于 1975年开发了Scheme. 词法可视域没使eval的定义复杂多少,却使编译器更难写了.About this documentAbout this document ... This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)Copyright &copy; 1993,1994,1995,1996,Nikos Drakos,Computer Based Learning Unit,University of Leeds.Copyright &copy; 1997,1998,1999,Ross Moore,Mathematics Department,Macquarie University,Sydney.The command line arguments were:latex2html -split=0 roots_of_lisp.texThe translation was initiated by Dai Yuwen on 2003-10-24 [1]欧几里德对几何的贡献.``Recursive Functions of Symbolic Expressions and Their Computation by Machine,Part1."" Communication of the ACM 3:4,April 1960,pp. 184-195.[2]当表达式以七个原始操作符中的五个开头时,它的自变量总是要求值的.[3]以另外两个操作符quote和cond开头的表达式以不同的方式求值. 当 quote表达式求值时,它的自变量不被求值,而是作为整个表达式的值返回. 在 一个正确的cond表达式中,只有L形路径上的子表达式会被求值.[4]逻辑上我们不需要为了这定义一个新的记号. 在现有的记号中用 一个叫做Y组合器的函数上的函数,我们可以定义递归函数. 可能麦卡锡在写 这篇论文的时候还不知道Y组合器; 无论如何,label可读性更强.没有实际可用的数,在麦卡锡的1960 年的Lisp中,做算术是可能的,比如用一个有n个原子的表表示数n.... 的艺术""的著名论文中描述了如何做到这点.5Guy Lewis Steele,Jr. and Gerald Jay Sussman,``The Art of the Interpreter,or the Modularity Complex(Parts Zero,One,and Two),"" MIT AL Lab Memo 453,May 1978.... 对它的引用被maplist中的参数x所捕获.6当代的Lisp程序 员在这儿会用mapcar代替maplist. 这个例子解开了一个谜团: maplist为什 么会在Common Lisp中. 它是最早的映射函数,mapcar是后来增加的.

LISP的发展历程

1960年4月,麦卡锡以《递回函数的符号表达式以及由机器运算的方式,第一部》为题,于ACM通讯上发表LISP设置。麦卡锡的学生Steve Russell根据该论文,以IBM 704于麻省理工学院的计算机运算中心成功执行了第一版的LISP。  1962年,麦卡锡及人工智能小组按LISP 1的编译基础上改良出LISP 1.5版本。  1969年9月,史丹福大学人工智能实验室的Lynn Quam与Whitfield Diffie推出的Stanford LISP 1.6广泛地被应用于使用TOPS-10系统的PDP-10计算机系中。可是,Stanford LISP 1.6版本自麻省理工智能项目更新LISP 1.5成MACLISP及BBN科技公司推出的InterLisp成功后,渐被弃置。  自1960代末年至1980年初年,各种更新LISP版本涌现,有源自加利福尼亚大学伯克利分校的Franz Lisp、在AutoCAD运行的AutoLISP前身XLISP、犹他大学开展的Standard Lisp及Portable Standard Lisp、专属于Lisp机器上运行的ZetaLisp、源自法国国家信息与自动化研究所的LeLisp、以及MIT人工智能实验室的Gerald Sussman与Guy Steele所开发的Scheme等。  1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。  自稳定运行的Common Lisp出现起,再有各机构按各自所需而开展后续Lisp,包括1990年来自欧洲用户的EuLisp、运行于Java虚拟机的Clojure、受到Maclisp影响而创的Emacs Lisp、以及自由开源来自卡内基·梅隆大学的CMUCL、还有IsLisp,Racket,ACL2等蓬勃涌现。  自2000年起,LISP共享者合力支援的自由开源社区逐渐形成,致力于LISP后续发展。  2002年10月,第一届国际LISP会议于美国旧金山开展,其后LISP大会不定期于全球各地举行,包括2014年在加拿大蒙特利尔大学以移动概念作主题的会议。

lisp 可以做什么

比较常见的是与cad的二次开发用 就目前自己使用的感觉来说 数字 字符串等数据处理不如主流语言好用 胜在与cad结合很好

CAD LISP 是什么

AutoLISP 应用程序源代码可以执行的一种CAD程序

学习Lisp如何入门?

LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为因应人工智能而设计的语言,是第一个函数式程序设计语言,有别于C、Fortran等命令式程序设计语言和Java、C#等面向对象语言。LISP名称源自列表处理(LISt Processing)的英语缩写,由来自麻省理工学院的人工智能研究先驱约翰·麦卡锡(John McCarthy)在1958年基于λ演算所创造,采用抽象数据列表与递归作符号演算来衍生人工智能。1960年4月,McCarthy以《递回函数的符号表达式以及由机器运算的方式,第一部》为题,于ACM通讯上发表LISP设置。McCarthy的学生Steve Russell根据该论文,以IBM 704于麻省理工学院的计算机运算文中心成功执行了第一版的LISP。  1962年,McCarthy及人工智能小组按LISP 1的编译基础上改良出LISP 1.5版本。  1969年9月,史丹福大学人工智能实验室的Lynn Quam与Whitfield Diffie推出的Stanford LISP 1.6广泛地应用于使用TOPS-10系统的PDP-10计算机系中。Stanford LISP 1.6版本自麻省理工智能项目更新LISP 1.5成MACLISP及BBN科技公司推出的InterLisp成功后,渐被弃置。  自1960代末年至1980年初年,各种更新LISP版本涌现,有源自加大伯克来分校的Franz Lisp、在AutoCAD运行的AutoLISP前身XLISP、犹他大学开展的Standard Lisp及Portable Standard Lisp、专属于Lisp机器上运行的ZetaLisp、源自法国国家信息与自动化研究所的LeLisp、以及MIT人工智能实验室的Gerald Sussman与Guy Steele所开发的Scheme等。  1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。  自稳定运行的Common Lisp出现起,再有各机构按各自所需而开展后续Lisp,包括1990年来自欧洲用户的EuLisp及自由开源的IsLisp,ACL2等

lisp语言的介绍

Lisp 语言最早是在 20 世纪 50 年代末由麻省理工学院(MIT)为研究人工智能而开发的。Lisp 语言的强大使它在其它方面诸如编写编辑命令和集成环境等显示其优势。而 GNU Emacs Lisp 主要由 Maclisp 发展而来,该语言由 MIT 在 20 世纪 60 年代写成。它在某种程度上继承了 Common Lisp,而 Common Lisp 在 20 世纪 80 年代成了一种标准。 Lisp 代表 LISt Processing,即表处理,这种编程语言用来处理由括号(即“(”和“)”)构成的列表。

LISP的语言特点

LISP为函数式程序设计语言,所有运算都能以函数作用于参数的方式来实现。  LISP没有命令式语言程序中常见赋值语句和变量,重复的过程可以使用递归的函数调用来表示,并不需要使用循环模式。  LISP是古老的函数语言、弱类型、动态推断,其代码本身就是各种列表。每一个表项均可以储存任何类型的数据如数字、函数、符号或一个子表等,在编码时,可以随时操作以更新列表。  LISP核心的操作符只有7个操作符:quote、atom、eq、car、cdr、cons、cond。前三者quote、atom、eq用于符号的推断;car、cdr、cons操纵表格;cond负责分支判断。这种简洁定义,非常接近图灵机原型的纯函数式语言,是现代语言完全无法比拟的。  LISP作为弱类型这优点相对缺点则是运行效率的低下。原始定义简洁的缺点使到大型开发工程变得困难,自底层到高层,自二维表查询到面向对象,使用者需要嵌入更多的函数来实现,致使LISP众多方言的衍生。

lisp语言的快速入门

Common Lisp语言快速入门: Lisp是软件领域的分裂力量。一方面,Lisp爱好者誓言Lisp比软件领域内的其它语言都更加快捷、整洁和强大;而反对者则辩称,不可靠的执行和库支持不足使得开发者难以在其中编写任何真正的软件。事实上,他们都有各自的道理。第一版Lisp于大约50年前推出,这使得它和FORTRAN一样,成为现在仍在使用的最古老的编程语言之一。可以证明,它拥有(它们将会拥有)最庞大的特性列表,它也是第一种包括一整套今天我们全都认为是标准语言特性的语言,如垃圾收集、递归、函数作为对象、甚至是普通的if-then-else子句。同时,人们也认为它是一款优秀的教学语言:MIT使用方案、Lisp衍生物,传授它们的介绍性编程类。我们将一起学习最强大和项目就绪的Lisp版本:Common Lisp,使其正常运行,并了解一些Lisp应用。 代码和数据并无差异——在Lisp中,代码只是一个函数对象列表。源代码和数据源之间不存在区别,允许Lisp把它的内在呈现给编译器、注释器和程序员。这允许你方便地本地读入和评估代码,甚至可以允许你使用宏。宏——定义和重新定义任何语言元素。不喜欢条件、或循环或函数的运行方式吗?好,你可以定义自己的注释。如果你在代码中多次执行某个特定的任务,把那个特性添加到语言中不是更加方便吗?应用Lisp,你可以实现上述功能。速度——虽然在许多情况下Common Lisp不如C或OCaml这类速度巨人快捷,但它在一系列测试中表现良好,特别是在执行一小段程序的情况下。了解一些基本的编译器知识,你就能够编写出处理列表和大型数字的代码,在执行速度和内存使用方面都要优于其它语言。简化——Lisp的一切功能都基于一些基本的理念——一旦你了解那些理念,你就几乎能够处理任何问题。Lisp程序员常常自夸说,仅仅用几百行代码,你就能在几乎任何语言(如C++或Haskell)中执行一个Lisp注释器。灵活——以你喜欢的任何方式编写代码。更喜欢功能性的编程方法吗?没问题!想要完全反复编程吗?草草写下几个快速的宏就可以完成任务。你可以用最方便最高效的方式编写程序,而且这些程序都能良好地运行。 好,行!我选择了Lisp,我如何进行安装呢?这是棘手的问题。不像是Python或C#一样,Common Lisp没有标准执行——该语言由一个规范,而不是执行来定义。Common Lisp也没有C语言的特点,及在每一个平台上都是一种支配性的执行或流行的执行。每个版本都应执行上述标准,但有一些细节要由编译器或注释器来处理,这使得每个执行都稍有不同。你可以使用几种选项——在本文中我使用CLISP,它在Windows、Linux和Mac(仅PPC)上运行良好。如果你使用英特尔Mac,则必须使用其它执行,如Allegro Common Lisp或SBCL。对于这篇快速入门中的简单例子,你使用哪个执行都不要紧。使用Lispbox可以快速安装Common Lisp系统,但遗憾的是,Lispbox在2012年停止了更新。Lispbox为你提供一个Common Lisp执行、Emacs、SBCL和Slime——Emacs高级Lisp整合模式,许多Lisp程序员会告诉你说,这个组合是使用Lisp的唯一方法。如果你并非Emacs用户(我本人也和你一样),不要担心,它并非必要条件,只是使得编写Common Lisp程序更加简便。而如果想要使用最新的Emacs、SBCL和Slime,网络上也有许多教程关于如何配置它们。安装过程因平台而异,在Windows中你只能运行安装程序,多数Linux软件包管理器提供安装包等。选择一个执行并遵循安装指令即可。打开Common Lisp (CLisp)交互环境的方式是M-x slime,如果你不理解这是什么意思的话可以通过Ctrl+h松开后按t来学习Emacs的基本操作。但由于Emacs的默认字体不支持中文,所以为了避免教程乱码,点击程序窗口左上角的Options,选择Set Default Font,选择支持中文的字体后保存。打开REPL(交互式提示符)之后再返回这里,我们继续往后讲。 REPL代表“阅读-评估-打印-循环”(Read-Evaluate-Print-Loop),它简单表示注释器的一个交互式提示符。你可以从这里输出一些简单的Lisp代码。如果你使用另一种注释器提示符,你可以在这里使用提示符作为计算器输出一些基本的数学表达式——但它不能正常运行。在CLISP中输入5*2不会返回任何有意义的结果:> 5 * 25> 55> 22Lisp并非以那种方式运行,运算符,如“+”不是在数字之间,而是在数字前面,就好像它们是函数名称一样。因此,如果你想将REPL当作计算器使用,你必须输入:> (* 5 2)10> (+ 1 2 3 4)10> (+ (* 5 2) (* 10 3) (/ 100 4))65对你来说,理解这种用法可能更难一些,但它拥有一些优势:它便于编译器解析、它对所有函数和运算符都一样、它让你给函数添加尽可能多的自变量——例如,在上面的第二个例子中,你可以任意扩充加数,使得加法函数和总计函数完全一样。另外你会注意到,函数名在括号内,而不像许多其它语言一样函数名在括号以外。这表示你要写(函数自变量)而不是函数(自变量)。每个Lisp表达式会返回一个值,一个函数总是返回最后一个表达式的结果——即使是NIL,NULL在Java或C++中的对等值也是这样。因此在Lisp中显示“Hello World”相当简单:> Hello WorldHello World如果你希望在屏幕上打印一些内容,并返回其它内容,你应该使用打印函数:> (print Hello World)Hello WorldHello World这个字符串显示两次,一个是打印结果,一个是函数返回的结果。Lisp表示LIST Processor(列表处理器),Lisp中的几乎所有内容都以列表的形式存在,因此有时你必须处理列表。定义列表非常容易:> (list 1 2 3 4 5)(1 2 3 4 5)> "(1 2 3 4 5)(1 2 3 4 5)第二种定义方法叫做引用,除定义简单的列表外,它还有更多用途,不过我们必须在后面的另一篇文章中讨论那个主题。 Lisp拥有全部标准控制流程方法。定义一个重复一个值的简单循环相当容易:> (dotimes (i 10) (print i))0123456789NIL同样,重复一个列表也很简单:> (dolist (i "(0 1 2 3 4 5 6 7 8 9)) (print i))0123456789NIL以上两个函数都是DO函数的特殊版本,它就像在其它语言中组合使用while和for函数一样。它由三个部分组成:循环变更定义、终止条件和语句主体:> (do ((i 0 (+ 1 i))) ((> i 10)) (print i))012345678910NIL在这个例子中,变更定义部分为((i 0 (+ 1 i))),它定义变量i为0,并在每次循环时调用函数(+ 1 0)。终止条件为((> i 10)),表示在i大于10时函数终止运行。最后主体部分打印i的值。Lisp中也有条件函数,最基本的条件函数为if函数:> (if (> 10 20) (print Hello) (print World))WorldWorldif函数由三部分组成:条件、then语句和else语句。如果条件为真,则执行then语句,否则就执行else语句。你可能已经注意到,到现在为止我们仅使用了单个的语句——但如果你需要把几个语句连接在一起,那该怎么办呢?在Lisp中,要将几个语句连接起来,你需要使用progn这个特殊的控制流程函数:> (progn (print Hello) (print World))HelloWorldWorld例如,上例允许你在条件函数和循环中使用几个语句。如果你想要更进一步的了解和学习Common Lisp,可以搭配学习ANSI Common Lisp 和Practical Common Lisp (实用Common Lisp编程),如果你想再更进一步,可以看一看On Lisp 等参考书。

LISP代码是什么

你说的这是emacs lisp吧

Lisp是什么样的语言?

Lisp是第一个函数式程序语言,区别于C语言、Fortran等命令型程序语言和Java、C#、Objective-C等面向对象程序语言。由于历史的原因,Lisp长期以来被认为主要用于人工智能领域,但Lisp并不是只为人工智能而设计,而是一种通用的程序语言。

Lisp 语言优点那么多,为什么国内很少运用?

之前在学校学编程的时候,偶然间听过这种语言,还是挺意外的,毕竟在中国这种语言太冷门了。有些人估计都没听说过这种语言啊。定义首先来看下这种语言是什么?同样类似目前已经渐渐被忘记的语言还有一个就是FORTRAN。定义中的是LISP为函数式程序设计语言,所有运算都能以函数作用于参数的方式来实现。LISP没有命令式语言程序中常见赋值语句和变量,重复的过程可以使用递归的函数调用来表示,并不需要使用循环模式。优点和缺点任何语言都有利有弊,任何语言并不能说是最好的语言。而相对与别的语言来讲,LISP语言最突出的优点就是弱类型这个优点了。LISP作为弱类型这优点相对缺点则是运行效率的低下。原始定义简洁的缺点使到大型开发工程变得困难,自底层到高层,自二维表查询到面向对象,使用者需要嵌入更多的函数来实现,致使LISP众多方言的衍生。失败的原因我认为一个语言的没落失败必定是因为他不适应这个社会的需求和发展。只有随时顺应社会人编程的需求和习惯还能更好的别使用。Lisp失败的原因是因为它的碎片化,并且它的碎片化是因为其语言天性与特定领域方案的风格造成的。而网络效应则恰恰相反。越来越少的程序员使用相同的方言,因此它相对与ALGOL语言家族的总价值下降。

都有什么人用lisp

程序员,闲着没事的人。

Auto cad中的LISP语言是什么?有怎样的用途?

AutoLISP语言是在普通的LISP语言基础上,又扩充了许多适用于CAD应用的功能而形成的一种程序设计语言。它是一种解释性求值语言,速度较慢,难以保密,可用任何文字编辑软件编辑,用纯文本的格式保存。AutoLISP语言中的一切成分都是以函数形式给出的,它没有语句概念或其他语法结构。执行AutoLISP程序就是执行一些函数,再调用其它函数。(setq pt1 (getpoint " 请选择圆心插入点"))。(command "CIRCLE" pt1 100);命令这个插入点绘制圆,半径为100。扩展资料:LISP语言(LISP,List Processing的缩写)是一种早期开发的、具有重大意义的表处理语言。它适用于符号处理、自动推理、硬件描述和超大规模集成电路设计等。特点是,使用表结构来表达非数值计算问题,实现技术简单。LISP语言已成为最有影响,使用十分广泛的人工智能语言。在LISP语言中,数据和函数都是采用符号表达式定义的,这种符号表达式称为S一表达式,它是原予和表的总称。原子分为符号原子和数原子。符号原子是指有限个大写字母和数字组成的字符串,其中第一个符号必须是字母。原子NIL和T分别表示逻辑假(或空表)和逻辑真。数原子是指一串数字,通过符号表示其正负。LISP语言不仅在专家系统和CAD领域有广泛的应用,在符号代数、定理证明、机器人规划等领域也有广泛的应用。影响LISP语言使用的主要原因有:一是LISP是非可视化语言;二是LISP在通用计算机上的运行效率较低;三是LISP的数值计算能力较差;四是人们对函数型语言的编程风格不习惯。参考资料来源:百度百科-lisp语言

Lisp 值得去学习吗

 一、  如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。  二、  1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。  这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?  让我告诉你原因。  这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。  所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不 应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最 快的通用排序方法。  三、  Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展 为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语 言。  1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。  Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。 Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过 四十年的时间,一步步变得更强大。  直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。  四、  Lisp语言诞生的时候,就包含了9种新思想。其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次是:  1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。  2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。  3. 递归。Lisp是第一种支持递归函数的高级语言。  4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。  5. 垃圾回收机制。  6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。  区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。  后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。  7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。  8. 代码使用符号和常量组成的树形表示法(notation)。  9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。  在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编 译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension language);在运行期读取代码,使得程序之间可以用S-表达式(S-expression)通信,近来XML格式的出现使得这个概念被重新"发 明"出来了。  五、  Lisp语言刚出现的时候,它的思想与其他编程语言大相径庭。后者的设计思想主要由50年代后期的硬件决定。随着时间流逝,流行的编程语言不断更新换代,语言设计思想逐渐向Lisp靠拢。  思想1到思想5已经被广泛接受,思想6开始在主流编程语言中出现,思想7在Python语言中有所实现,不过似乎没有专用的语法。  思想8可能是最有意思的一点。它与思想9只是由于偶然原因,才成为Lisp语言的一部分,因为它们不属于John McCarthy的原始构想,是由他的学生Steve Russell自行添加的。它们从此使得Lisp看上去很古怪,但也成为了这种语言最独一无二的特点。Lisp古怪的形式,倒不是因为它的语法很古怪,而 是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基 本数据结构。  用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。  术语"宏"在Lisp语言中,与其他语言中的意思不一样。Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。  就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古 怪。另一个可能的原因是,如果你想为自己的语言添上这种终极武器,你从此就不能声称自己发明了新语言,只能说发明了一种Lisp的新方言。  我把这件事当作笑话说出来,但是事实就是如此。如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、 atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。事实上,Lisp语言 就是这样定义的,John McCarthy把语言设计成这个样子,就是为了让这种推导成为可能。  六、  就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?  如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?  另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥 作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟 悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。  那么,Lisp的编程优势体现在哪里呢?  七、  语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。  代码的数量很重要,因为开发一个程序耗费的时间,主要取决于程序的长度。如果同一个软件,一种语言写出来的代码比另一种语言长三倍,这意味 着你开发它耗费的时间也会多三倍。而且即使你多雇佣人手,也无助于减少开发时间,因为当团队规模超过某个门槛时,再增加人手只会带来净损失。Fred Brooks在他的名著《人月神话》(The Mythical Man-Month)中,描述了这种现象,我的所见所闻印证了他的说法。  如果使用Lisp语言,能让程序变得多短?以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。但是最 近,New Architect杂志上有一篇介绍ITA软件公司的文章,里面说"一行Lisp代码相当于20行C代码",因为此文都是引用ITA总裁的话,所以我想这 个数字来自ITA的编程实践。 如果真是这样,那么我们可以相信这句话。ITA的软件,不仅使用Lisp语言,还同时大量使用C和C++,所以这是他们的经验谈。  根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。  你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设使用功能较弱的语言,也能开发出同样的软 件。但是事实上,程序员使用某种语言能做到的事情,是有极限的。如果你想用一种低层次的语言,解决一个很难的问题,那么你将会面临各种情况极其复杂、乃至 想不清楚的窘境。  所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。事实上,按照大多数公司的实际情况,计划中五年完成的项目,很可能永远都不会完成。  我承认,上面的例子太极端。ITA似乎有一批非常聪明的黑客,而C语言又是一种很低层次的语言。但是,在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。

ssget怎样选择所有的多线lisp语言里面……

(setq #kw (ssget "X" (list "(0 . "LWPOLYLINE") "(70 . 0))));这个是全选;"X"表示全选; "(0 . "LWPOLYLINE");表示多段线; "(70 . 0);表示不封闭,"(70 . 1);表示封闭如果是(setq #kw (ssget "X" (list "(0 . "LWPOLYLINE"))));所有的多段线全部选择包括封闭的不封闭的。以下是我搜集到的ssget用法给你参考:;可以模拟带过滤的entsel;选择拾取框内的实体,选择不到就结束(defun c:test1()(setq ss (ssget ":E:S" "((0 . "line")))) (command "erase" ss ""));?(defun c:test2()(setq ss (ssget ":N" "((0 . "insert")))) (command "erase" ss ""));会累加选择的实体同一个块选择两次个数就会乘以2(看命令行);去掉":D"你试试结果(看命令行)(defun c:test3()(setq ss (ssget ":D" "((0 . "insert")))) (sslength ss));只选择一次自动结束选择;用处省了回车(defun c:test4()(setq ss (ssget ":S" "((0 . "line")))) (command "erase" ss ""));会提示有几个在锁定图上 并且不选择在锁定图层的实体(看命令行);去掉":L"你试试结果(看命令行)(defun c:test5()(setq ss (ssget ":L" "((0 . "insert")))) (sslength ss));上次的的选择集 (这个好理解)(defun c:test6()(setq ss (ssget "P" "((0 . "insert")))) (sslength ss));?(defun c:test7()(setq ss (ssget "+." "((0 . "insert")))) (sslength ss));可以模拟带过滤的entsel;选择拾取框内的实体,选择不到就不结束,选择到不右键也不结束注意和":E:S"的区别(defun c:test8()(setq ss (ssget ":E" "((0 . "insert")))) (sslength ss));自动选择所有的满足条件的实体(好理解)冻结的也可选择到(defun c:test9()(setq ss (ssget "X" "((0 . "insert")))) (sslength ss));自动选择不包括冻结的满足条件的实体(感谢masterlong)(defun c:test10()(setq ss (ssget "A" "((0 . "insert")))) (sslength ss));只选择含数字的文本(好理解)(defun c:test11()(setq ss (ssget "((1 . "*[0-9]*")))));只选择含数字的文本( 同上)(感谢caoyin提供)(defun c:test11()(setq ss (ssget "((1 . "*#*")))));只选择数字文本(defun c:test12()(setq ss (ssget "((0 . "text,mtext") (1 . "~*[~-.0-9]*" ))) ));选择不含数字的文本(defun c:test13()(setq ss (ssget "((-4 . "<NOT") (1 . "*[0-9]*") (-4 . "NOT>")) )));选择不含数字的文本(同上)(caoyin 提供的)(defun c:test13()(setq ss(ssget "((1 . "~*#*")))));只选择含字母的文本(好理解)(defun c:test14()(setq ss (ssget "((1 . "*[a-A-z-Z]*")))));只选择字母文本(defun c:test15()(setq ss (ssget "((0 . "text,mtext") (1 . "~*[~a-A-z-Z]*" )))));只选择不含字母的文本(defun c:test16()(setq ss (ssget "((-4 . "<NOT") (1 . "*[a-A-z-Z]*") (-4 . "NOT>")))));只选择不含字母的文本(同上)(defun c:test16()(setq ss (ssget "((1 . "~*[a-A-z-Z]*")))));选择半径大于800小于8000的圆(defun c:test17()(setq ss (ssget "((-4 . "<and") (0 . "circle") (-4 . ">")(40 . 800) (-4 . "<")(40 . 8000) (-4 . "and>")) )));选择图层表("图层1" "图层2" "图层3" "图层4" ---------------有很多个图层)内的线(这个要感谢网友eachy,感谢学院派xyp1964进行了优化)(defun c:test18() (setq la "("1" "2" "3" "4") ss (ssget (list "(0 . "line") (cons 8 (apply "strcat (mapcar "(lambda (x) (strcat x ",")) la))))) ));选择经过某点的实体,(defun c:test19()(setq pt (getpoint))(setq ss (ssget “c” pt pt)));选择0层以外的线(defun c:test20()(setq ss (ssget "((-4 . "<AND") (0 . "line") (-4 . "<NOT") (8 . "0") (-4 . "NOT>") (-4 . "AND>")))));选择0层以外的线(同上)(感谢caoyin提供)(defun c:test20()(setq ss (ssget "((0 . "line")(8 . "~0")))));选择图层名不含字母以外的线(根据caoyin提供几个实例进行了重新组合还可以组合出来很多)(defun c:test21()(setq ss (ssget "((0 . "line")(8 . "~*[a-A-z-Z]*")))));选择带扩展数据的实体(defun c:test22()(setq ss (ssget "((0."CIRCLE") (-3 ("APPNAME"))))));窗选择 包含在框内的被选择 相交的不选择和"c"比较一下;屏幕外的选择不到(defun c:test23()(setq pt1 (getpoint))(setq pt3 (getcorner pt1))(setq ss(ssget "w" pt1 pt3 "((0 . "insert"))));"wp"后面换成点集 (setq ss(ssget "wp" ptl "((0 . "insert")))));框选择 包含在框内的及和框相交的被选择 和"w"比较一下;屏幕外的选择不到(defun c:test24()(setq pt1 (getpoint))(setq pt3 (getcorner pt1))(setq ss(ssget "c" pt1 pt3 "((0 . "insert"))));"cp"后面换成点集 (setq ss(ssget "cp" ptl "((0 . "insert")))));线相交的线删除(屏幕外的选择不到郁闷所以要用zoom "ob")(defun c:test25() (setq ptl nil) (while (setq pt (getpoint)) (setq ptl (cons pt ptl)) )(setq ss (ssget "f" ptl "((0 . "line")))) (command "erase" ss "") );删除点(0 0)和点(1000 1000)形成的矩形内的实体(在屏幕外面的也可以),(感谢masterlong)(defun c:test26()(setq pt1 "(0 0)) ;窗口左下角点(setq pt3 "(1000 1000)) ;窗口右上角点 (setq ss (ssget "x" (list "(-4 . "<and") "(0 . "insert") "(-4 . ">,>,*") (cons 10 pt1) "(-4 . "<,<,*") (cons 10 pt3) "(-4 . "and>")))) (command "erase" ss ""))

对Lisp 新手来说,学习哪种方言,使用哪些参考书和开发软件更适合

为什么学?用来解决什么问题?背景很重要。

Lisp 对于编程语言的发展有哪些贡献

这么说吧,现代编程语言中最基本的也是标配的 if-then-else 判断结构最早就是 McCarthy 为了写 Lisp 而创造出来的。树形结构、垃圾回收机制、动态类型也是最早在 Lisp 中体现。如果按照「假如丘处机没有路过牛家村」的思路,我们还可以说 Alan Kay 受到 Lisp 的影响发明了 Smalltalk 语言——而 Smalltalk 基本上被认为是面向对象编程的鼻祖。上面的这些都是现代编程语言要考虑的问题。我不相信有任何一个语言作者能做到完全闭门造车而不受前人影响。说到函数式编程,Lisp 则算是最早的实践者。这个直接影响了所有具有函数式编程特性的编程语言如 Ruby、Python、JavaScript、Haskell、Scala、Lua、Cloujure 等等。当然,这个背后要归功于 Alan Church 和 Stephen Cole Kleene 提出的 lambda 算子。对于 Lisp 本身的魅力,则可以用 @Neo Lee 在 Twitter 上的一推来说明:「1960 年 John McCarthy 在一篇论文中创造了 Lisp 语言,整个语言构建在7个函数和2个特型之上(atom car cdr cond cons eq quote lambda label),这种简洁纯粹的美感能够媲美人类历史上创造的任何艺术品。」

cad lisp怎样读取 mbd

试试这个代码行不行;lisp中读取1行数据,怎么读取这行数据的资料例如M1 0.4 0.12 2-6 (setq dat-file (getfiled "圆柱销类型" "F:/CAD/test11" "txt" 2)) (setq ff (open dat-file "r")) (setq jgb nil) ;先将文件中所有以"M"开头的行读取并保存到表jgb中 (while (setq data (read-line ff)) (if (wcmatch data "M#*") (setq jgb (cons data jgb)) ) ) (close ff) ;将文件关闭 (setq jgb (reverse jgb)) (if jgb ;如果表jgb中有数据 ;则输入圆柱销规格进行查询 (while (setq gg (getstring (strcat " 请选择圆柱销规格" data ":"))) (setq zbb jgb) (setq fhz nil) (while (= fhz nil) (setq zb (car zbb)) (setq zbb (cdr zbb)) ;如果表中某项与圆柱销规格字符串+"*"相匹配 (if (wcmatch zb (strcat gg "*")) ;则将赋值给fhz,并结束循环 (setq fhz zb) ) ) ;如果查询到符合要求数据 (if fhz ;则显示查询到的结果 (princ (strcat " 查询到符合要求的结果为:" fhz)) ;否则显示 (princ " 你选择的圆柱销规格在文件中不存在!") ) ) )

Lisp语言 可以推荐我一本入门书籍吗

Common Lisp和Scheme是Lisp家族的两大主要方言,通用性比较好,ELisp和AutoLisp只能在特定的环境下使用,所以不推荐。如果你只是想学习FP的思想,可以直接学习Scheme,FP的思想都有了,还比较简单,只不过库不太完备。如果追求CL的强大可以看看Racket,是PTL Scheme的进化版。作者:Aloys寒风来源:知乎推荐几本lisp的书.首先,如果你对这语言很陌生,我建议你看看paul graham的the roots of lisp,只有十三页,看完以后,你就知道lisp的七条公理,知道lisp是如何构建起来的了。同时你也会被lisp语言的优美和强大而感到惊讶。其次你可以确定一下你的方向。lisp的方言众多,很多都是专业领域内的东西,general purpose的被广泛采用的主要是两个:common lisp(简写CL)和scheme(原名schemer)我是用common lisp的,对于scheme了解甚少。但事实上两个东西差不多。对于common lisp,如果你觉得paul graham的那文章很好看,那么就继续读他的ANSI Common Lisp 吧,这本书篇幅不大,只有四百页左右(我没有记错的话)。而且对于语言有很详细的介绍、例子和参考手册。看完以后绝对收益匪浅。如果你看了中毒了,那好还有一本他写的书: On Lisp: Advanced Techniques for Common Lisp。如果想对于common lisp有更加深厚的了解,那么可以看看Common Lisp: The Language,这本书的地位是圣经性质的,相当于the c programming language在c领域中的地位,可惜篇幅太长,我没有看,只是需要时参考一下。对于scheme而言,最好的教科书莫过于 Abelson, Sussman, and Sussman的Structure and Interpretation of Computer Programs了。这本书是MIT的著名的6.001,即计算器导论课程的教科书,在MIT是必修科目,甚至我推荐一心搞cl的人也看一看。这本教材从80年代初一直用到现在,影响力是不言而喻的。事实上scheme比CL简单,刚才提到的Common Lisp: The Language足足有1000多页长,然而scheme的定义只有50页。那就是RnRS,Revised nth Report on the Algorithmic Language Scheme,其中n是修订数,现在的版本号是5,即R5RS,是1995年修订的,事实上不必考虑版本,从来没有人说请用scheme1995标准编写你的程序(与之相对的,请用gcc3.2编译kde,用c99标准等等)。其它对于scheme的我不敢多说,生怕误导人。最近也开始看有关scheme的书,所以是和大家一起学习。最后,大家知道,lisp和人工智能是紧密联系在一起的,下面几本书关于人工智能。我对这个领域很无知,所以这些书目,是MIT的几个学生的推荐:作为消遣的书:我也不知道为什么他们推荐这些书,但我觉得很有趣。Godel, Escher, Bach : An Eternal Golden Braid (GEB),这本书有中文译本,可读性很强,非常有趣。the society of mind,今天在图书馆泡了一下午看这本书。很有收获,大致知道什么叫做人工制能。深入研究的书:Artificial Intelligence: A Modern Approach by Russell and NorvigMachine Learning by Tom MitchellParadigms of AI Programming: Case Studies in Common Lisp by Peter Norvig所以总的来说,如果你想学common lisp, 看到paul graham的书,买来就是了。想学scheme,那就上一下MIT的6.001课程。如果想搞人工制能(我大概就没那么大能耐了),看到Peter Norvig的书就买,别管价钱。

LISP语言中使用quote的疑问

我个人觉得是你自己没有把程序弄明白,程序的正确表示应该是:(cdr "(A B)) ,返回(B);CDR的意思是指返回表(A B)中去除第一个元素后得到的表,也就是其返回值仍然是一个表。而list是将任意数目的表达式组合成一个表,所以(list (cdr "(A B)))等同(list "(B))我不知道自己说得够明白不,希望你能够弄懂啦

lisp如何调用find这个命令

(DEFUN C:XX()(ssget (list (cons 0 "TEXT") (cons 1 “TS3”)))))

求讲解CAD LISP中layer的用法及格式

(if (null (tblsearch "layer" "图层名称")) (entmake (list"(0 . "LAYER")"

懂LISP程序的来帮忙改写完善

两个疑问,1、”3,输入 新图层名称后,该图层关闭“,是重命名还是图层关闭?原代码是重命名2、至于你说的屏幕中心显示,是指对话框?改为如下,:(defun c:t1 () (setvar "cmdecho" 0) (vl-load-com) (princ " ★功能:点选图元更改其所在图层的名字。") (command "undo" "be") (while (progn (setq sel (entsel " 请点选直线、多段线、样条曲线、标注、圆弧、圆、椭圆(不支持选图块) " ) ) (wcmatch (cdr (assoc 0 (entget (car sel)))) "*LINE,*TEXT,ARC,CIRCLE,ELLIPSE,DIMENSION" ) ) ; (setq atcad (vlax-get-acad-object) doc (vla-get-activedocument atcad) layers (vla-get-layers doc) layerlist nil ) (if (setq s1 (car sel)) (sssetfirst nil (ssget "x" (list (assoc 8 (cdr (entget s1))))) ) ) (vlax-for each layers (setq nam (vla-get-name each) layerlist (cons (list nam) layerlist) ) ) (setq laynam (cdr (assoc 8 (entget (car sel))))) (princ (strcat " 提示:您选中的图元所在图层为:" laynam)) (if (setq newlaynam (getstring " 请输入新的图层名:")) (command "rename" "LA" laynam newlaynam) (princ " 输入的图层名为空或与现已有图层名相同。 ") ) ) (command "undo" "e") (princ))

deliSpecialBarTenderUltraLite打印一直是之前的文字

deliSpecialBarTenderUltraLite打印一直是之前的文字,可能是运行错误。目前条码打印机市场,很多品牌的条码机厂商都选择与Seagull公司合作,采用Seagull公司最经典的条码设计软件—Bartender条码软件,比如TSC条码打印机、TEC条形码打印机、Datamax标签打印机等,Bartender条码设计软件易学易懂,使用简单方便,颇受条码业内人士以及初学者欢迎。UltraliteBartender条码制作软件在安装使用的时候需要注意两点:第一,在Bartender条码软件安装完成后,第一次运行的时候,会弹出一个选择框,上面有两个选项,一个是仅运行Ultralite版,另一个是运行Bartender软件标准版,这时候应该选择仅运行Ultralite版,才能保证Bartender条码软件正常使用,如果选择了运行标准版,那么自即日起30天时间内,是可以正常使用的,并且能使用Bartender所有的功能,但是30天以后该软件将会过期,过期以后,哪怕把软件卸载重新安装都不行,只有重新安装电脑的操作系统才行。第二就是在设计软件条码标签格式后,第一次点选打印按钮,这时候会弹出一个节目,选择忽略所有字体警告,原因是我们设计条码标签所采用的文字字体大多都是Windows系统自带的字体,而不是条码机自带的字体,如果不忽略字体问题,那么在打印出的标签上,文字字体将会出现乱码、误码等问题。
 1 2  下一页  尾页