今天写的CAD应用程序(Rhino,Autocad)是什么?它们是如何在内部组织的?
我举了一个例子,Autocad和Rhino,虽然我也想听听其他例子。我特别感兴趣的是知道他们的后端是什么(多语言?)以及它是如何组织的,以及它们如何实时处理它们的前端(GUI)?他们是否使用原生的Windows API或他们自己的一些库,因为我认为,尽管如此,今天市场上的开源解决方案不会削减它。我可能错了......
正如大多数使用它们的人所知,他们实时处理相对复杂的旋转操作(阴影对我来说并不重要)。我最近一直在用几个软件包进行一些实验,对于一些较大的模型发现,速度存在很大差异,例如,其中一些(我不会说出名)的程序轮换(大型全船模型) 。所以我想知道他们的内部......
另外,如果有人知道有关这个主题的书,我会很有兴趣听到它。
答案 0 :(得分:7)
由于我的公司是AutoCAD的注册开发人员,我肯定知道它是用C ++编写的。它公开了一个COM接口,以及一个.Net包装器。此外,它的图形显示是组件化的,可能会被替换。 回顾其历史,它使用的是跨平台。然而它只是Windows大约10年,现在利用我见过的每个Windows功能。 您可能对Open Design Alliance感兴趣。
答案 1 :(得分:7)
3D Mechanical CAD软件,如CATIAv5,Pro / Engineer和Solidworks,大多是用C ++编写的,有时还带有一个瘦COM接口,用于向客户发布基本API。
由于这些应用程序非常庞大并且正在由多个团队开发,因此它们依赖于大规模的C ++设计原则,例如接口/实现模式,以使模块与变更隔离。
它们由几个子系统组成,例如:
答案 2 :(得分:5)
AutoLISP是lisp的一种风格,多年来一直用于编程AutoCAD。非常强大,不是很友好。 AutoCAD(和大多数垂直行业)已经内置了VBA大约10年。有点强大,非常友好。 VBA项目存储在一个单独的文件中,该文件由主机程序内部的机制加载。 最新版本(目前为2010)默认不再包含VBA。您必须安装单独的VBA启用程序。这是为了让我们注意到VBA(VB6就此而言)在某种程度上将成为过去。 .NET平台是目前的首选。 VB.NET,C#.NET,C ++是常用的。有些人尝试过其他.NET语言,如F#和IronPython。
答案 3 :(得分:4)
开源项目BRL-CAD可能会让您感兴趣。