什么是CAD应用程序,它们是如何组织的?

时间:2009-04-22 23:17:38

标签: language-agnostic rhino backend autocad

今天写的CAD应用程序(Rhino,Autocad)是什么?它们是如何在内部组织的?

我举了一个例子,Autocad和Rhino,虽然我也想听听其他例子。我特别感兴趣的是知道他们的后端是什么(多语言?)以及它是如何组织的,以及它们如何实时处理它们的前端(GUI)?他们是否使用原生的Windows API或他们自己的一些库,因为我认为,尽管如此,今天市场上的开源解决方案不会削减它。我可能错了......

正如大多数使用它们的人所知,他们实时处理相对复杂的旋转操作(阴影对我来说并不重要)。我最近一直在用几个软件包进行一些实验,对于一些较大的模型发现,速度存在很大差异,例如,其中一些(我不会说出名)的程序轮换(大型全船模型) 。所以我想知道他们的内部......

另外,如果有人知道有关这个主题的书,我会很有兴趣听到它。

4 个答案:

答案 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 ++设计原则,例如接口/实现模式,以使模块与变更隔离。

它们由几个子系统组成,例如:

  • 提供底层操作系统抽象的基础框架
  • 用于GUI,对话框和用户交互的框架
  • 3D渲染器(主要使用带有一些自定义场景图层的OpenGL)
  • 几何内核,带有曲面细分模块(以便几何体可以在渲染器中显示)
  • 基于几何内核的参数化建模器
  • 以及针对不同领域的许多特定建模者(机械,制图,模拟......)

答案 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可能会让您感兴趣。