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