2021/04/12

如何在.NET代码中使用COM接口

作者 Leon

S3D到目前时间2021年4月为止,更新到2019版,但底层的内核和大部分原生功能都是用古老的VB6来封装的,64位的Modern Client版预计今年会推出,届时从内到外会有一个很大的变化,到时候我们再一起来看看二次开发的接口会不会更加友好。但就目前的这些版本来说,我们在.NET平台做二次开发的时候经常会遇到某些功能找不到对应API的情况。令人郁闷的是明明在3D里面我们可以做这些操作。这就是.Net接口没有封装这个功能的结果,今天我们将介绍一下如何在.NET的开发环境中使用COM接口。


1、安装VB6.0环境。
2、将C:\Program Files (x86)\Smart3D\Programming\Tools\Bin目录下的两个文件SP3DReferences.dll和SP3DReferencesHelper.dll使用regsvr注册

3、打开VB6.0随便创建一个项目
4、打开外接程序>外接程序管理器

5、看到Speedy References,启用

6、在工程菜单中可以看到Speedy References选项,点击打开使用

7、在弹出的对话框汇总输入你想查找的接口或类,便可看到它存在于哪些dll中,在.net的代码中便可以去引用这些dll

8、注意在.NET的代码中BO对象需要转换成COM类对象才能使用COM接口,COMConverters方法在引入Ingr.SP3D.Common.Services.Hidden后可直接使用

小结:以前在VB6.0开发虽然写代码非常繁琐,但是稳定性和丰富的接口是它的优势,在.NET代码中有些封装好的方法在调试过程中依然有可能会碰到各种各样崩溃的问题,如果有时候实在没有好的办法,可以尝试绕回到COM接口去实现,相对​稳定些。就像我前段时间遇到的删除等级会导致项目的IAllowableSpec接口坏掉,进而导致很多依赖于这个接口的方法无法使用,而如果借用COM的方法就可以绕过这个​接口。不过话说回来,终究还是​不方便。

0 0 投票数
文章评分