我想创建一个在线服务,该服务使用坐在服务器上的AutoCAD为从网页请求服务的用户提供服务。 这可能吗?

您可能可以完成此操作,但是会违反AutoCAD EULA。 他们不喜欢在服务器上使用它(除非Autodesk拥有它),因为他们希望您为每个用户支付一个许可证。


忽略合法性,我可以想到三种方法。

最慢,但最简单:AutoCAD ActiveX API(又名COM自动化)。 这是从外部程序控制AutoCAD的最简单方法。 您可以使用ASP或Asp.net作为Web界面,并在VB6,Vb.net或C#中编写一个dll,以在服务器上运行并随心所欲地驱动AutoCAD。 该API公开了AutoCAD屏幕和图形数据库的基础。 此API无法提供某些功能,但是您可以使用约70%的AutoCAD功能。 缺点是它很慢。 每个调用都跨流程边界进行封送,与图形数据库的每次交互都包装在幕后的独立事务中。 在某些情况下(例如在工程图中创建新的实体),这是可以的,但实际上要进行大量工作(例如遍历工程图中的实体集以查找某些内容)会陷入困境。


控制AutoCAD的更有效方法是使用AutoCAD。 网络API。 您可以创建一个被加载到AutoCAD进程空间中的dll,并且可以访问数据库和用户界面而无需始终跨越进程边界。 这至少快了一个数量级。 缺点是很难从外部程序驱动它。 我之前做过的工作是创建两个dll,一个在AutoCAD中运行并进行操作,另一个在与外部接口的外部运行。 您可以跨过程边界传递自定义COM对象,以告诉内部程序该怎么做并获得结果。 .Net API公开了大约90%的AutoCAD功能。 仅在少数情况下,我不得不艰难地调用本机AutoCAD函数。

有关这些技术的一些信息可以在以下位置找到:

外部COM应用程序与正在运行中的.NET模块连接到AutoCAD(redux)

.NET与AutoCAD进程外接口的特殊体系结构


一个可以使用的第三个API是AutoCAD ARX。 打算从C ++使用。 它揭示了AutoCAD 99%的功能。 您几乎可以在这里做任何事情,并且它是最快的,但是您将具有与上面给出的.Net示例相同的体系结构要求。 实际上,.Net API通常只是ARX API上的瘦托管包装。


要考虑的另一件事是熟练使用COM运行对象表。 您可能需要使用它来支持服务器上的多个同时用户。 我会将这些用户映射到服务器上运行的AutoCAD的单独实例,以使它们彼此之间互不干扰。 您需要创建它们并通过将它们与运行对象表上列出的正确应用程序实例进行匹配来跟踪它们。 您必须通过COM接口执行此操作,因为诸如GetObject之类的简化命令通常只会为您提供第一个实例。 也许您可以通过仅创建应用程序对象来避免这种混乱,而不必跟踪与它绑定的用户。


祝您项目顺利! 希望这有助于阐明哪种API适合您的任务。

More Interesting

如何使用我的电脑设计网站

我希望学习自适应和直观的HTML5 UI设计。 如何使用互联网作为唯一工具来做到这一点?

我在PS中做了一个社区网页设计。 如何使它看起来更适合成人而不是青少年?

我只想创建一个烹饪网站。 我需要什么要求? 它是如何创建的?

我喜欢编写代码,并且对前端和后端逻辑都很满意,但是我很喜欢CSS和设计。 我应该怎么做才能增强CSS技能?

我想在HTML / CSS的中心显示我的gif,我该怎么做?

我有第一个希望我创建网站的客户。 我应该为这个简单的网站向他收取多少费用?

如果我要建立像Quora这样的网站,由于我不知道如何使用任何前端框架,应该使用哪个框架?

我想建立我的网站组合。 我应该从哪里开始?

我正在寻找WordPress电子商务主题来开发类似于https://www.camomile.london/的网站。 如果有人知道,请告诉我?

我想建立一个网站,在其中发布有关个人项目的博客。 此外,我希望使用Python / Django。 我应该使用哪个数据库?

我想使用HTML5和CSS设计一个网站,该怎么办?

我一直在研究前端开发。 学到了很多东西,包括jQuery和React。 如果我想就业,下一步该怎么做?

如果我想赚更多的钱,我应该坚持作为前端开发人员的当前道路,还是应该继续发展一些管理技能?

我正在学习Web开发。 我在编码方面没有任何问题,但是我发现CSS非常难以掌握和记住。 我该怎么办?