天天看点

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

需要理解的知识

* com组件原理及应用
	1. IUnknown , IDiapatch  ...
	2. 接口的指针指向接口这个结构,接口里面保存一个虚函数表指针,指向接口里的函数。
	3. 接口的使用
		+ 通过queryInterface  	(必须是同一个组件)
		+ 通过上一级接口的方法得到
		+ 通过某些某些接口的方法得到
           

SOLIDWORKS环境配置

安装apisdk 后 打开vs新建工程时会有向导可以新建solidworks项目

新建后需要配置下项目:

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

编译这个模板项目会出现

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

继续编译完成。 编译时需要关闭solidworks

注意!! 直接用solidrorks打开生成的dll会注册失败,编译成dll后,需要注册到注册表 才能被使用。

需要用管理员身份注册

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

接口也可以通过api文档下面这个提示来知道怎么获取

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

第一个项目

既然都已经有模板项目了,再在这个模板项目上进行修改就可以了。
           
  1. Add-in Callback and Enable Methods (先添加cmd cmd可以绑定工具栏和菜单)
cmdIndex0 = cmdGroup.AddCommandItem2("CreateCube", -1, "Create a cube", "Create cube", 0, "CreateCube", "EnableCube", mainItemID1, menuToolbarOption);
#Region UI Callbacks

public void CreateCube
{
    // Create Cube command code
}
public int EnableCube
{
    // Return status of the Create Cube enablement
    return 0;
}

public void ShowPMP
{
    // Show PMP command code
}
public int EnablePMP
{
    // Return status of Show PMP enablement
    return 0;
}

           
  1. solidwork 直接添加一个dll会自动加一个工具栏,不要试图在代码里加,加不了
    SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目
    有血缘关系的接口指针 , 比如newPart() 得到的是dispatch的指针,但是实际上得到part,而part和modelDoc2有血缘关系,所以可以直接 代码如下:
CComPtr <IModelDoc2> modelDoc2Ptr;
	CComPtr <IDispatch> disPathchPtr;
	gSwApp->NewPart(&disPathchPtr);
	modelDoc2Ptr = disPathchPtr;
	long docType;
	modelDoc2Ptr->GetType(&docType);
	if (docType == swDocPART)
	{
		AfxMessageBox(L"这是个零件");
	}

           

有时候需要像下面这样用

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

下面这样是错误的

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

而且下面这种也是可以的, 注释的是不可以的编译不过。

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

这里一定要置空,不然会死循环,next函数不会帮你置空。

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

事件

SOLIDWORKS 二次开发 VC++需要理解的知识SOLIDWORKS环境配置第一个项目

调用IGetRefAxisParams()前不要select轴,不然会调用失败导致获取不了轴得两个端点

solidworks二次开发问题解决:

1.打开dll无法启动插件,此时需要注册插件才能打开。

2.需要什么什么.140msu.lib这种都是工具集不匹配问题,改项目配置文件,改成自己的工具集。

继续阅读