乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 101|回复: 6

参考AutoCAD。来自Windows窗体应用程序的. NET代码

[复制链接]

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2017-8-1 11:44:19 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2017-8-1 16:54:09 | 显示全部楼层
如果您坚持执行外部 EXE 应用程序,则只能使用 AutoCAD COM API,而不能使用 AutoCAD .NET API。
有两种情况可以以某种方式将AutoCAD .NET API代码与EXE解决方案集成:
1.使用Acad .NET API创建一堆自定义命令,并确保它们在AutoCAD启动时加载。然后你的EXE App,你使用COM API的AcadDocument.SendCommand()来调用那里的自定义命令;
2. 在 AutoCAD .NET API 中执行代码,并将其公开给 COM,以便 EXE 应用程序可以调用 COP 包装的 .NET API 代码。
不过,我不会做任何一个。
从您的描述来看,您的解决方案提供的功能似乎主要针对运行 AutoCAD 的 AutoCAD 用户(并且您的应用程序必须与正在运行的 AutoCAD 会话一起使用)。那么,如果我是AutoCAD用户,为什么我需要运行一个侧面EXE应用程序来执行可以在AutoCAD中更轻松,更快速地完成的工作?
您列出的所有任务都可以在使用AutoCAD .NET API开发的AutoCAD加载项中完成,这样,您不仅可以获得更强大的API支持(.NET API与COM API),还可以消除额外的应用程序层(外部EXE应用程序)。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2017-8-1 17:42:24 | 显示全部楼层
我同意n.yuan的观点,并想补充一点,听起来你的数据库与你的前端应用程序联系得太紧密了。您提到的大多数功能都是特定于CAD的,除了您介绍的标题栏更新。
我想还有更多用于前端应用程序的命令与CAD无关,这就是为什么让它独立存在是有意义的。
无论哪种方式,您都需要像他们所说的那样“分离您的关注点”。您需要将“模型”(数据库)功能分离到单独的dll中,将“前端”(视图)分离到其自己的应用程序中,并为CAD功能创建CAD插件dll。前端和 CAD 应用程序都在数据库 dll 中引用,因此它们都使用相同的数据库代码。
也许您可以保留 Access 前端,只需直接从 CAD 调用 Access db,并根据需要在 CAD 插件中制作一个精简的 UI?
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2017-8-1 18:30:11 | 显示全部楼层
我倾向于同一个方向 - 分解CAD的CAD内容,分解外部应用程序的UI内容,并分解出两者要引用的数据库内容。
尽管我非常想建议让“非CAD”的人完全远离图纸。 如果您需要构建一个隐藏AutoCAD的整个前端,以便他们可以正确执行某些操作,则他们可能首先不应该访问图形。 他们应该有更合适的工作。
是的 - 我*做*与iso,P&ID和各种条纹的工程师合作。 我们有CAD人员在CAD中做了很多你在这里描述的事情。
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2017-8-1 20:39:59 | 显示全部楼层

因此前端数据库的主要目的是跟踪图纸及其修订。这些“非CAD”用户中的大多数人都在进行竣工前的分析。前端不隐藏AutoCAD。当“非CAD”用户打开绘图时,它只是使用他们的默认dwg查看器来打开绘图。这些用户无论如何都对CAD文件具有只读访问权限。也许他们这样做了,也许他们不需要访问AutoCAD图纸。我可以同样让他们访问PDF,因为每次保存AutoCAD绘图时,都会在姊妹目录中创建一个PDF。
AutoCAD命令存在于前端应用程序中的原因只是为了易于使用。单击按钮在数据库中打开告诉您完成工作的绘图比正确导航文件夹结构要容易得多?
我附上了前端应用程序的屏幕截图,以便我可以更清楚地传达它的作用。同样,此应用程序的目的不是控制AutoCAD,而是跟踪我们所有常青AutoCAD图纸的状态。为“CAD”用户控制AutoCAD只是为了帮助更快地浏览绘图。
当我考虑这个问题时,我可以实现我已经在Access应用程序中完成的后期绑定技术。我认为我真正想要完成的是捕获事件处理的能力。例如,在保存绘图完成时创建PDF。在绘图关闭时索引块及其属性。我一直在使用AutoCAD VBA完成此操作,但我试图将所有代码打包在前端应用程序中。
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2017-8-2 09:45:27 | 显示全部楼层

我研究了上述两个推荐的选项。这些真的很酷,但我不知道这是否是我正在寻找的。我仍然只需要使用AutoCAD的用户对图形进行任何修改。我是否错过了这些建议将是一个不错的选择。提前致谢!
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2017-8-2 10:00:28 | 显示全部楼层
我以前这样做过,我已经能够成功地使用普通命令执行此操作,但不能使用我的自定义命令。我的AutoCAD dll在启动时确实加载,但当我发送AcadDocument.SendCommand时该命令不会执行(“
任何
”)。我将深入研究此选项,看看我的前端应用程序或我的dll有什么问题。
***更新我能够使用位于汇编文件中的自定义命令执行此操作。
这是我真正想完成的一个选项,但我找不到任何解决方案来通过正在运行的AutoCAD应用程序获取命令。我还猜你的意思是“COM”而不是“COP”包装正确吗?我用谷歌搜索了“COP包装。NET API代码”并找到了一些警方结果。
我还尝试在我的前端应用程序中加载AutoCAD dll作为参考。这给了我命令,但它好像是空的。我不知道如何将其与AutoCAD相关联。dll是使用NETLOAD和所有内容加载的。有些事情我太没有经验了,无法理解。
我感谢您的反馈,并希望您能提供有关最好完成第二个选项的任何指导。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 13:07 , Processed in 0.352324 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表