Clojure是最近比较火的一门Lisp方言,它最大的特色在于直接构建在java虚拟机上,可以方便使用java sdk和各种java库。相对说来,Common Lisp就不太方便了,自带的函数库功能少,许多功能要自己去找。有Lisp的爱好者开发了rdnzl,一个Lisp的函数库,可以直接调用.Net的函数库。
官方主页点击这里
下面介绍怎么在Ecl里面使用rdnzl。
首先下载rdnzl的源代码包,解压到Ecl的目录下。用文本编辑器打开rdnzl.asd,将
#+:ecl (:file "port-ecl") ; ECL-specific stuff here
这一行修改成
(:file "port-ecl")
为了方便使用,我打算将rdnzl编译成一个独立的fas文件,因此,还需要Visual Studio的编译环境。
打开VS的命令行提示,进入Ecl,
输入如下命令:
>(require 'asdf)
>(require 'cmp)
>(setf C::*COMPILE-IN-CONSTANTS* t)
>(asdf:make-build :rdnzl :type :fasl)
编译完成后,会在系统的Application Data\common-lisp\cache\ecl-12.2.1-unknown-win-x86 目录下生成rdnzl.fasb和rdnzl.lib,将这两个文件和压缩包中的RDNZL.dll拷贝到Ecl目录下,就能使用了。
注意:正常情况下会有个路径错误,Ecl的编译器不能正确识别路径中的空格,因此链接过程会失败。我是将Application Data的路径重新设置,消除空格后,才能完成编译。解决的办法,需要将link命令下中的将路径用""包含起来。不过这似乎需要修改Ecl的源代码。
现在可以试用下rdnzl了,在Ecl环境中输入以下命令:
> (require 'rdnzl)
> (rdnzl:enable-rdnzl-syntax)
> (rdnzl:import-types "System.Windows.Forms"
"MessageBox" "MessageBoxButtons" "DialogResult")
>(rdnzl:use-namespace "System.Windows.Forms")
>[MessageBox.Show "hello .Net" "Lisp" [$MessageBoxButtons.OKCancel]]
.Net的messagebox显示出来了。
- 大小: 46.3 KB
分享到:
相关推荐
在AutoCAD中,开发者可以利用.NET Framework进行二次开发,扩展AutoCAD的功能。本主题聚焦于如何使用.NET来动态创建对话框,并允许LISP程序调用这些自定义的用户界面元素。 首先,我们需要了解.NET环境下的Windows ...
总的来说,解决这个问题需要理解.NET Framework的角色,知道如何安装和更新它,以及如何在AUTOCAD2019中使用.NET开发环境。同时,对于压缩包内的资源,理解其性质并根据需要正确使用也非常重要。
7. **LISP与.NET集成**:对于熟悉LISP的开发者,手册会介绍如何在.NET环境中调用LISP函数,或者将.NET组件暴露给LISP。 8. **性能优化**:学习如何有效地使用异步操作、批处理处理和内存管理,以提高代码执行效率和...
AutoCAD提供了多种开发接口,其中比较常用的是ObjectARX(使用C++)、Visual LISP、VBA和.NET API。本书主要关注.NET API的使用。 ##### 三、开发环境搭建 **1. 安装AutoCAD** 首先需要安装AutoCAD软件,这是进行...
- **.NET Framework集成**:AutoCAD自2004版本起开始支持.NET编程,使得开发者可以使用C#、VB.NET等语言进行开发,极大地扩展了AutoCAD的功能。 - **ACAD对象模型**:手册会详细解释AutoCAD的对象模型,包括图层、...
- **管理包装类**:.NET API为AutoCAD的核心对象提供了管理包装类(Managed Wrapper Class),这意味着开发者可以直接在.NET环境中使用这些对象,而无需关心底层C++实现。 - **跨语言支持**:除了C#之外,.NET还...
1. AutoLISP代码示例:展示如何用LISP语言编写简单到复杂的绘图和编辑命令。 2. VBA宏编程:通过VBA宏,演示如何实现自定义功能,如自动填充属性、批量修改图层属性等。 3. .NET插件开发:使用C#或VB.NET,构建独立...
2. **COM Interop**:由于AutoCAD主要基于COM(组件对象模型),在.NET中使用它需要设置COM互操作性。这涉及添加对AutoCAD的引用,并通过`AcadApplication`或`AcadDocument`等接口与AutoCAD通信。 3. **Windows ...
通过《CAD二次开发》的学习,开发者不仅可以掌握LISP语言在CAD领域的应用,还能提升在工程设计、制造和建筑行业中解决实际问题的能力。结合实际项目练习,将理论知识转化为实用技能,可以极大地提高工作效率,为职业...
5. **VBA与.NET对比**:虽然AutoCAD还支持Visual Basic for Applications (VBA) 和 .NET Framework进行编程,但Lisp以其简单、快速的开发周期和强大的文本处理能力,在某些情况下更为高效。 6. **Lisp在CAD中的应用...
作者指出,.NET开发可以建立动态链接库(.dll文件),加载到CAD中后即可编程操作CAD。同时,通过引用Excel COM组件,可以编程创建、显示、编辑、读取和保存Excel文件,以此实现在CAD中直接调用Excel数据,或是在CAD...
7. **脚本与宏**:除了直接编程,AutoCAD支持LISP和VBA脚本,开发者可以学习如何将.NET与这些脚本语言结合,以增强程序的灵活性。 8. **性能优化**:由于AutoCAD操作涉及到大量图形数据,了解如何高效地处理这些...
3.1 Lisp编程:Lisp是CAD系统中广泛使用的二次开发语言,可以编写脚本实现与Excel的接口。例如,编写一个Lisp程序,读取Excel表格数据,然后在CAD中创建相应的图元。 3.2 .NET Framework:利用.NET Framework,...
了解如何在C#中使用COM对象,如使用`AcadApplication`和`AcadDocument`等,是成功开发的关键。此外,掌握异常处理、线程管理和资源释放等最佳实践也是必不可少的。 总的来说,这个项目为那些希望涉足CAD二次开发的...
IronScheme 不仅提供了 Scheme 语言的编译器,还包含了丰富的标准库,使得开发者能够在 .NET 平台上充分利用 Scheme 的强大功能。 首先,让我们深入了解 Scheme 语言。Scheme 是 Lisp 家族的一员,以其简洁的语法和...
AutoCAD提供了丰富的API(应用程序接口)和LISP语言支持,使得开发者能够深入对象层次,添加元数据,以及读取和写入这些数据。 首先,我们需要理解“非图形数据”这一概念。在AutoCAD中,图形数据主要指线条、曲线...
通过 C# 实现 Lisp 解释器,开发者可以利用 .NET Framework 的丰富资源,同时享受到 Lisp 语言的灵活性和简洁性。 AjLisp 的诞生源于对 Lisp 语言的兴趣和对 C# 编程的热爱。它是对原始 Lisp 解释器的复制和改编,...
对于使用C#开发ARX,开发者需要理解.NET Framework和如何将.NET与AutoCAD集成。 7. **编译和调试**:使用Visual Studio等IDE,开发者需要了解如何编译和调试ARX项目,解决可能出现的链接错误和运行时问题。 8. **...
Visual LISP是一个可视化的LISP语言开发环境,是Auto LISP语言的扩展和延伸。它的特性是完全可视化的开发环境、编译后提高了运行性能和保密性、LISP代码通过AutoCAD R14的Object ARX接口提高了程序的运行速度、可以...