我从事的一个项目,主要工作在AutoCAD,以设计和制造预制建筑组件,如屋顶桁架。我们的目标之一是重新设计一个用LISP语言编写的程序,用于设计屋顶桁架。我们将在C#中重写LISP代码,并将其逐步实现到它们所设置的当前库中。
我的问题是,我的任务是构建一个基本的LISP到C#转换器。经过一些研究(正如Google的结果很快表明,这样的事情并不存在),我开始思考如何转换这些遗留代码将更有效。用C#来分析和重写LISP代码更好,还是应该继续为AutoLISP代码开发一个基本的转换器?
发布于 2014-05-16 17:32:06
您应该使用LISP代码块并在C#中重写。
即使用C#编写通用LISP解释器比用c#重写LISP (这是非常不可能的),LISP也可能运行AutoCAD命令,比如输入AutoCAD命令行,而不是以ObjectARX的方式进行操作。因此,您还需要将命令转换为使用ObjectARX API。
发布于 2014-05-16 19:24:51
C#是一种编译的面向对象的编程语言,而AutoLISP是一种面向表达式的解释语言.因此,如果不付出巨大的努力,就永远不会有一种真正直截了当的方式将其中一种转化为另一种。
值得注意的是,AutoLISP具有快速修改而无需重新编译的灵活性。使用本机进程内C#的好处是,与类似的LISP方法相比,它速度非常快。我发现有一个很好的中间点,可以用C#的速度和功能来保持LISP的灵活性,它利用了LispFunction命令标志和.NET原生API中的ResultBuffer类型。
https://stackoverflow.com/questions/23700864
复制相似问题