14

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

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

正如大多数使用过它们的人所知道的那样,它们可以实时处理相对复杂的旋转操作(我对着色不感兴趣)。我最近一直在用几个包做一些实验,对于一些较大的模型,发现速度有很大差异,例如,其中一些(我不会命名)程序旋转(大型全船模型) . 所以我想知道他们的内部...

另外,如果有人知道一些关于这个主题的书,我很想听听。

4

4 回答 4

9

CATIAv5、Pro/Engineer 和 Solidworks 等 3D 机械 CAD 软件大多使用 C++ 编写,有时还带有用于向客户发布基本 API 的薄 COM 接口。

由于这些应用程序非常庞大并且由多个团队开发,它们依赖于大规模的 C++ 设计原则,例如接口/实现模式来隔离模块免受更改。

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

  • 提供底层操作系统抽象的基础框架
  • GUI、对话框和用户交互的框架
  • 一个 3D 渲染器(主要使用带有一些自定义场景图层的 OpenGL)
  • 带有镶嵌模块的几何内核(以便可以在渲染器中显示几何图形)
  • 基于几何内核的参数建模器
  • 以及针对不同领域(机械、制图、模拟……)的许多特定建模师
于 2010-03-20T20:40:47.417 回答
8

由于我的公司是 AutoCAD 的注册开发商,我确信它是用 C++ 编写的。它公开了一个 COM 接口,以及一个 .Net 包装器。此外,它的图形显示是组件化的,可能会被替换。早在其历史上,它曾经是跨平台的。然而,它的 Windows 仅使用了大约 10 年,现在利用了我见过的所有 Windows 功能。您可能对开放设计联盟感兴趣。

于 2009-04-23T00:47:16.693 回答
5

AutoLISP 是一种 lisp 风格,多年来一直用于 AutoCAD 编程。非常强大,一点也不友好。AutoCAD(和大多数垂直行业)已经内置了 VBA 大约 10 年。有点强大,非常友好。VBA 项目存储在一个单独的文件中,该文件由宿主程序内部的机制加载。默认情况下,最新版本(当前为 2010)不再包含 VBA。您必须安装单独的 VBA 启用程序。这是为了让我们注意到 VBA(就此而言是 VB6)将在某个时候成为过去。.NET 平台是目前的首选。VB.NET、C#.NET、C++是常用的。有些人尝试过其他 .NET 语言,例如 F# 和 IronPython。

于 2009-05-04T21:49:47.410 回答
4

您可能会对开源项目 BRL-CAD 感兴趣。

于 2009-04-22T23:29:29.360 回答