博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用Qt做SolidWorks二次开发
阅读量:6605 次
发布时间:2019-06-24

本文共 1001 字,大约阅读时间需要 3 分钟。

这个问题困扰了我2年了,之前找到的教程都是MFC的,ATL导入向导或是通过导入类型库的方式来调用控件,我一直都搞不明白。

 

最近学习了ActiveQT以及通过ActiveQT控制EXCEL、Word、PowerPoint、flash后,我终于大致明白了。

经过几个小时的尝试,终于成功通过Qt操作Solidworks。建议各位可以去BAIDU相关文章,关键词ActiveQt 

 

首先我要说明白一下,VC都是通过COM来操作Solidworks的,既然如此,我们只要通过Qt的COM操作方法来控制就可以了。

我用的是Qt5.4、Solidworks2014。

 

其实有两种方式:1、使用ClassId 直接获取COM对象来操作Solidworks。2、使用Qt自带的dumpcpp工具导出H文件,然后通过指针对象来控制。

第二种方法和VC的开发方式类似。但是导出的文件有12mb,37W行代码,IDE相当容易崩溃,而且编译有错误,需要求改一下头文件,但是因为老是崩溃,我就没有继续尝试了。

不过输出的头文件至少可以当个API手册看,至于输出方法:将solidworks目录下的sldworks.tlb文件复制到随便一个目录下(我复制到自己的Qt工程目录),打开Qt的命令行功能,通过cd转到这个目录下,运行dumpcpp SldWorks.tlb 即可。

 

下面说一下如何用第一个方法:

首先在项目文件中添加:QT+= axcontainer,之后运行QMake。

 

在Cpp文件中添加#include <ActiveQt/QAxObject>

之后在需要运行地方添加以下代码:

QAxObject *swApp=new QAxObject("SldWorks.Application",0);

if(!swApp->isNull())
{
swApp->dynamicCall("SetVisible(bool)",true);
swApp->dynamicCall("OpenDoc(QString,int)",QString("C:\\Users\\512\\Desktop\\a.SLDPRT"),1);
}

SldWorks.Application是COM的简写,可以在注册表中搜索命名控件来获得。

 

转载于:https://www.cnblogs.com/blueroses/p/6023500.html

你可能感兴趣的文章
实例讲解教你读懂路由表
查看>>
Glibc 和 uClibc
查看>>
VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
查看>>
Have a Good Attitude 良好的态度
查看>>
win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面...
查看>>
vs2012中自带IIS如何让其他电脑访问
查看>>
谁(何时)需要设置监听器(回调)
查看>>
关于termux在手机上搭载Linux系统,python,ssh
查看>>
Redux:异步操作
查看>>
Mysql学习第三课-分析二进制日志进行增量备份和还原
查看>>
2-11
查看>>
关于C#调用广州医保HG_Interface.dll调用的一些总结(外部组件异常)
查看>>
N2CMS——Bugs解决方案总结
查看>>
Appium IOS
查看>>
xhprof安装记录
查看>>
POJ1961 Period [KMP应用]
查看>>
CSS hack
查看>>
IT项目管理工具探讨之_项目群管理
查看>>
如何在 Android 手机上安装 Ubuntu 13.04
查看>>
HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
查看>>