如何用Qt做SolidWorks二次开发

这个问题困扰了我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的简写,可以在注册表中搜索命名控件来获得。

时间: 2024-10-12 14:18:08

如何用Qt做SolidWorks二次开发的相关文章

什么是php二次开发,怎么做php二次开发?

什么是php二次开发 所谓的二次开发,简单的说就是修改别人的东西,变成你想要的东西,插件基本属于高端了,根据现有的程序的不足,加以改进修饰,然后达到自己想要实现的功能和效果. 怎么做php二次开发 二次开发和一次开发不同的地方在于你是要先看懂别人的代码再去做,二次开发,首先你需要知道自己对什么程序进行二次开发,比如一些招聘信息上会写Discuz二次开发,ShopEX二次开发.这些都是对已经成型的程序进行的功能性扩展开发. 第一,你要有这个开 源 产 品的所用语言的语言基础,就是能看懂代码是最基本

我们做微信二次开发的意义

微信的传播价值 1. 微信传播符号多样化,能多元化地传播个人及企业信息 作为一种新兴媒体,微信的信息传播符号具有多样化的特点:语音.文字.图片.视频.表情等 一应俱全.这其中,语音通信功能的加入意义重大,它改变了互联网用户以往单纯依靠文字和图片进 行社交的状况,使人与人之间的交流回归至语音. 微信多元化的信息传播方式, 无论对于个人社交还是对于品牌营销都具有重要价值. 从社交的角 度来说,主打语音聊天的微信,改变了人们传统的通信方式.个人可以通过文字.语音甚至视频的形 式直接与最亲近.最想沟通的

solidworks二次开发学习(1)如何选中一个草图并遍历草图中的所有直线

1 Imports SolidWorks.Interop.sldworks 2 Imports SolidWorks.Interop.swconst 3 Imports System.Runtime.InteropServices 4 Imports System 5 6 Partial Class SolidWorksMacro 7 8 Public Sub main() 9 10 11 Dim swDoc As ModelDoc2 = Nothing 12 Dim swPart As Par

solidworks二次开发学习(3)move all of the bodies in a part document。

1 'SolidWorks API Help 2 'Move Bodies Example (VB.NET) 3 'This example shows how to move all of the bodies in a part document. 4 5 '------------------------------------------------------------- 6 ' Preconditions: 7 ' 1. Specified part document to ope

solidworks二次开发学习(2)如何选中一个草图并遍历草图中的所有直线(非草图编辑状态)

1 Imports SolidWorks.Interop.sldworks 2 Imports SolidWorks.Interop.swconst 3 Imports System.Runtime.InteropServices 4 Imports System 5 6 Partial Class SolidWorksMacro 7 8 Public Sub main() 9 10 Dim swSelMgr As SelectionMgr 11 Dim swDoc As ModelDoc2 =

浅析PHP的开源产品二次开发的基本要求

浅析PHP的开源产品二次开发的基本要求 第一, 基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的) 第二, 熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能 第三, 要熟悉这个开源产品的数据库结构,还要理解里面核心文

svnkit——svn二次开发背景和闲谈

开发背景: 简述现有流程:代码的合并.提交是以任务为最小单元的.例如A和B两个同学开发不同的任务,那就是两个任务号.合并的时候可能会先合并A的代码,在合并B的代码. 需求:SVN合并程序开发--一款能够满足测试人员合并代码的工具,通过输入任务号或版本号及选择合并分支,将对应的任务及版本合并到选择的分支上. 要求:避免SVN冲突. 工作要点:设计一个即能减少冲突,又能提交次数最少的流程.使用SVNKIT完成设计工具,最好是图形界面客户端. 梳理思路: 个人觉得在合并过程中冲突是无法完全避免的,A和

开源系统_二次开发(转)

转自http://www.phpchina.com/portal.php?mod=view&aid=40204, 更多详细资料请参看原文 最好最实用的二次开发教程 ◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或 是软件公司.选择和应用这些优秀的开源软件,并在此基础上进行

最好最实用的PHP二次开发教程

◆二次开发 1.什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核. 2.为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司.选择和 应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障.这就是 我们常听的:站在巨人的肩膀上,你将看的更远.所以国内