SolidWorks二次开发—打开文件那些事

月末了,这个月的任务还没完成,难道是因为太忙了吗,好像不是。
今天就简单记录一下前一段时间有人问的一个问题,怎么知道文件在没有在solidworks中打开。如果没打开就做A ,已经打开了就做B. 别乱想,只是说某个动作哈。
大家看过之前的教程的都知道Opendoc这个方法。
这个就是打开某个已经存在的文件并返回它的指针(瞎翻译的哈)
在这里插入图片描述
但是这个和网友问的问题没什么直接关系,要想知道文件有没有打开,常规思路就有以下几种:

  • 遍历已经打开的文件,进行对比
Traverse All Open Documents Example (C++ COM)
  • 切换到该名称的文件,如果成功则表示已经打开。
var swModel= swApp.IActivateDoc("xxx.sldprt");
  • 直接利用打开命令,看看执行完是不是当前零件。(如果文件已经打开,会返回一个对象,但没有激活)
            //打开文件
            var fileName = @"XXXXX";
            int errors = 0;
            int warnings = 0;

            var swModel = (ModelDoc2)swApp.OpenDoc6(fileName, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
有没有更厉害的办法呢,我们再找一找。我假装我英文很牛B,搜索一下opened document
发现以下内容,最后一个有点像。

在这里插入图片描述

在这里插入图片描述
到目前为止,最直接的方法就是GetOpenDocumentByName
在这里插入图片描述
示例代码如下:


            var partOpened = swApp.GetOpenDocumentByName(@"D:9_StudyCSharpAndSolidWorksCSharpAndSolidWorksTemplateModelclamp3.sldprt");

            if (partOpened!=null)
            {
                MessageBox.Show("该文件已经被打开");
            }
            else
            {
                MessageBox.Show("该文件已经没有被打开。");
            }

好了,结束了。

收藏好地址,以防找不到。
https://gitee.com/painezeng/CSharpAndSolidWorks

发表回复