是否可以在不使用C ++的情况下进行CAD / CAM软件?我的公司使用c / C ++开发了他们的软件,但这已经超过10年了。今天,有许多遗留代码切换会迫使我们摆脱,但我想知道实际的风险是什么。我们有很多用于刀具路径计算,特征识别和模拟以及3D渲染的数学算法,我想知道C#是否可以处理所有这些而没有很大的性能损失。
在c#中重写这样的算法是不是乌托邦,或者该语言是否只处理UI。 我们不是在谈论游戏开发(Halo 3或Call of Duty),那么CAD / CAM真正需要多少处理?
有人可以在这件事上给我启发吗?我的大多数同事都是硬核C ++程序员,虽然我用c ++编程我喜欢.NET,但除了基本用户界面之外我很难向他们销售.NET。考虑在这样的领域中切换到.NET是否有意义,或者这不是一个明智的想法?
谢谢
答案 0 :(得分:12)
如果您有许多需要重写的遗留代码,我认为切换到其他语言并不具有商业意义。即使使用不同的语言(这是有问题的)有所收获,测试和调试新代码的成本也不仅仅是克服它们。您还拥有一个C ++专家的开发团队。当他们加快新语言的速度时,会有很大的生产力下降。
答案 1 :(得分:3)
C#可以与C ++代码互操作。您可以开始在C#中编写新代码,并在需要时调用现有的c ++代码。它不一定只是用户界面。查看C ++ / CLI和C#Interop方法,了解如何使用新的C#代码使用现有的c ++代码。
另外,我在这里问了一个类似的问题: C# Performance For Proxy Server (vs C++)
答案 2 :(得分:1)
CAD / CAM应用程序是计算密集型的,速度肯定是选择程序包的标准之一,因此我会谨慎地转向较慢的语言。
您需要仔细考虑转换语言的原因。是因为你不喜欢C ++,还是因为C#会带来真正的好处。很可能会降低您的应用程序速度。查看C ++ C#速度比较。
Computer Language Benchmarks Game C++ vs C#
在我看来,你最好用C ++保存所有的刀具路径计算,如果你真的必须将任何代码转移到另一种语言,请将其移到脚本语言中用户可以轻松编辑,无需重新编译。
我每天都在工作中使用CAD / CAM应用程序,UI中有很多东西让我感到紧张。如果我能从源头获得它们,它们将是简单的修复。
如果您的公司制作的CAD / CAM应用程序具有用脚本语言编写的UI,我可以调整(Lua,Python等),我会买一份。
雨果
答案 3 :(得分:1)
看看pythonocc。它为您提供了一个包装OpenCASCADE CAD内核的python模块。 OpenCASCADE是我所知道的唯一的行业优势开源内核。好的功能是STEP和IGES支持以及从BRep数据生成FEM网格的能力。
答案 4 :(得分:0)
您需要考虑的另一件事是平台独立性 - 如果您/您公司有可能需要将您的CAD软件迁移到Linux / Unix(当然,为了商业决策),那将是非常痛苦的。目前,即使是使用MFC / Win32调用的C ++也给我们带来了许多麻烦......
答案 5 :(得分:0)
开放设计联盟图书馆是跨平台的。他们最近推出了他们库的.NET版本的测试版。有关详细信息,请参阅我对Open source cad drawing (dwg) library in C#的回答。
说过我同意这里的其他答案 - 如果它没有被破坏,不要修复它,代码和编码器。 MSFT仍然使用C ++,ODA也是如此 - 它们的代码库源自C ++&包装为.NET。