页面树结构
转至元数据结尾
转至元数据起始

LISP:旧的还是很新的

欢迎来到我在THCAD博客上发表的第一篇文章的第1部分!我将写有关LISP编程并将现有代码转换到THCAD环境中的文章。我将回顾实施,与其他环境的差异,提示和技巧以及读者的其他主题要求。或者,如果您还没有开始研究LISP,也许我可以给您一点鼓励,让您知道LISP仍然健康。对于THCAD定制,这绝对是一种值得考虑的语言。

首先,让我说一下,在过去的几十年中,我已经编写了数十万行LISP。但是我仍然不会自称专家。我不了解所有的vl命令,也不了解某些“高级”功能。如果我提出的方法不是最有效的,或者我建议一段可以被单个函数代替的代码,请原谅我。很有可能我不知道“更好”的功能存在!我仍然偶然发现“新”命令(对我而言)是定期的。当我这样做时,我常常想知道新发现的功能可以为我节省多少时间。

不久前,一位客户向我询问我如何继续使用LISP进行编码。我实际上认为这可能已经成为过时的技能。考虑一下Vemco绘图机的(手动)绘图技巧和精通技巧-现在,这些已经过时了!但是,当我查看客户的实际需求时,发现了越来越多的原因来更新或开发新的LISP功能。我认为与您分享其中一些概念以帮助您入门非常有趣。


LISP是CAD定制的Rosetta Stone吗?

名称“ LISP”来自单词“列表处理”。数据以列表形式存储在.dwg文件中,并且LISP读取,写入,更改和存储该数据。最重要的是,此代码与平台无关。它高效,小巧而灵活。我更喜欢使用非编译语言开发代码的简单性。虽然不需要编译LISP代码,但是您可以加密程序以保护源代码。我二十年前在“老式”硬件/软件/ OS上编写的许多程序如今仍可以在THCAD的当前版本中运行,而几乎不需要修改。

最近,有人要求我为从AutoCAD™2014过渡到2016的客户解决迁移问题。该公司的标准CAD设置包括400多个程序文件和123,000行LISP代码,并定义了大约4,000个功能。经过一番研究,我发现主要问题与几个与AutoCAD™2016不兼容的(已编译)ARX应用程序有关。它们的LISP代码(其中大部分写于90年代后期)运行得很好。

当我问到关于CAD标准迁移咨询,我首先确定如何公司的工作流程中有多少是依赖于3第三方工具。然后,我检查他们的工具是否需要特定的软件版本或平台。通常,唯一的问题围绕着需要更新的硬编码文件夹路径。


为什么要将LISP用于自定义CAD程序?

那么,在您的CAD环境中创建自定义程序的一些原因是什么?通常,我会编写代码来改善与特定CAD实体或CAD标准有关的流程或工作流自动化。例程可以像几行代码一样简单。这些功能可以执行图层操作,更改实体属性,自动执行绘图和XREF关系,或帮助标准化绘图和发布工作流程。

或者,这些例程可能与参数驱动的设计过程或用于自动化数据库访问的应用程序一样复杂。正如我前面提到的,使用LISP的一个主要好处就是在CAD环境中语言的小尺寸和高效率。在我们将在本文第2部分中探讨的示例中,进行简单的几何处理(移动和旋转)的LISP代码可能只是用一种编译语言(.NET,C,C ++,等)。

为了页面空间的缘故,我在这里不包括.NET示例。但是,如果您真的想了解我在说什么,只需Google:“使用.NET API创建移动命令”,您将看到一些示例。这些已编译的语言通常需要数百至数千行代码来创建用户在日常CAD环境中期望的图形行为和直观界面。

(此职位将在第2部分中继续)

您可以通过添加以THCAD中运行的几种编程语言中的任何一种编写的自定义程序来自定义THCAD。在此处查看可用的API 


  • 无标签