0

我从事的项目主要使用 AutoCAD 设计和制造预制建筑构件,例如屋架。我们的目标之一是重新设计一个用 LISP 编写的程序,该程序用于设计屋顶桁架。我们将用 C# 重写 LISP 代码,并将其逐步实现到他们设置的当前库中。

我的问题是我的任务是构建一个基本的 LISP 到 C# 转换器。经过一些研究(因为谷歌的结果很快表明手头上并不存在这样的东西),我想到了哪种方式转换这个遗留代码会更有效的问题。用 C# 分析和重写 LISP 代码块会更好,还是我应该继续为 AutoLISP 代码开发一个基本的转换器?

4

2 回答 2

2

您应该获取 LISP 代码块并用 C# 重写。

即使在 C# 中编写通用 LISP 解释器比在 C# 中重写 LISP(这不太可能)更容易,LISP 可能正在运行 AutoCAD 命令,就像您在 AutoCAD 命令行中键入的那样,而不是执行 ObjectARX方法。因此,您还需要转换命令以使用 ObjectARX API。

于 2014-05-16T17:32:06.093 回答
0

C# 是一种编译的面向对象的编程语言,而 AutoLISP 是一种解释型的面向表达式的语言。因此,如果不付出巨大的努力,就永远不会有一种真正直接的方式将一个转换为另一个。

值得注意的是,AutoLISP 具有无需重新编译即可快速修改的灵活性。使用本机进程内 C# 的好处是它与类似的 LISP 方法相比非常快。我发现在保持 LISP 的灵活性和 C# 的速度和功能方面有一个很好的中间立场,它利用了 .NET 本机 API 中的 LispFunction 命令标志和 ResultBuffer 类型。

于 2014-05-16T19:24:51.467 回答