大部分函数可以直接从VB语言“翻译”过去成为Qt中的C++语言,如
Set Part = swApp.OpenDoc6(strFilePath & "\" & partName & ".SLDPRT", 1, 0, "", longstatus, longwarnings) '打开指定文件,这里是SLDPRT格式三维模型
Set Part = swApp.ActivateDoc2(partName & ".SLDPRT", False, longstatus) '设置文件处于激活状态
翻译到Qt就是
Part = swApp->querySubObject("OpenDoc(QString,int)",path,1);
Part = swApp->querySubObject("ActivateDoc(QString)",this->partName);
这里不用OpenDoc6是为了简便。这里的数据类型都是string, int 这样子的常规类型
但是有一种问题,就是这样的VB语言,比如SelectByID2
boolstatus = Part.Extension.SelectByID2("MainRad@草图[email protected]", "DIMENSION", 1.52752972114265E-02, -1.13202148822171E-03, 2.30092248393811E-02, False, 0, Nothing, 0)
根据SolidWorks的api说明文档,点击打开链接
Visual Basic (Usage) | |
---|---|
|
C++/CLI | |
---|---|
|
这里面有一个Callout的指针,在Qt里面用
myExtension->dynamicCall(
"SelectByID2(QString,QString,double,double,"
"double,bool,int,Callout *,int)",list);
会提醒参数不匹配,这里要用QAxObject的asVariant()方法来解决,就是说,list里面对应append一个QAxObject*类型的参数
list.append(myExtension->asVariant());
然后dynamicCall里面把Callout * 改成QAxObject *类型,就可以了
myExtension->dynamicCall(
"SelectByID2(QString,QString,double,double,"
"double,bool,int,QAxObject *,int)",list);
接下来就是EditDimensionProperties2函数,这个直接翻译就可以了
Part->dynamicCall("EditDimensionProperties2(int,double,double,"
"QString,QString,bool,int,int,bool,int,int,"
"QString,QString,bool,QString,QString,bool)",list1);
参考内容:点击打开链接