SolidWorks PDM二次开发—检出与检入

SolidWorks PDM二次开发—检出与检入

五一放假后半段了,今天来聊一下PDM中的检出与检入文件。

一翻译,发现检出 和检入的英文是Check Out Check in

好,打开api help。
在索引中发现这个是关于bom对象的。我要找的是文件的。

然后到搜索里面找一下: 发现了指定检入 和检出 文件的示例:

它这里面每个例子都是完整的,需要自己按它的操作一步步来创建窗体。

我们进去找一下最关键的地方,它这里用的是pdm提供的批量的方法。
我们这一次是想检出指定的一个文件,经过查找 ,发现对单个文件的检出 ,其实用的不是check out和check in 这个词。
用的是LockFile 和UnLockFile,看下面的描述。 难怪 上一个文章显示信息的时候,也是用的是否锁定。
所以简单理解 就是文件锁定,肯定是别人检出了。

先手动检入一个文件:

执行完之后 ,文件已经被已经登陆的当前用户检出了。

再看一下检入的动作,看代码的提示发现有两个可以进行的操作:

这两个的区别还是比较明显的,就是一个是不检出文件,这个是如果改了就放弃保存了。
另一个才是真正的检入。


两个方法有些不同的参数:

在执行完上面一条,文件当前已经被检入了。看下历史记录:

上代码: 其实内容比较简单:

 try
            {
               

                //new 一个库对象
                var vault = new EdmVault5();

                //登陆到库中
                vault.LoginAuto("PDM2020Default", this.Handle.ToInt32());
                
                var vault2 = (IEdmVault7)vault;

                var rootPath = vault2.RootFolderPath;

                string filePath = $@"{rootPath}\PDMTraining\文件1.txt";

                IEdmFile14 aFile = default(IEdmFile16);
                IEdmFolder5 ppoRetParentFolder;
                aFile = (IEdmFile16)vault2.GetFileFromPath(filePath, out ppoRetParentFolder);

                aFile.LockFile(ppoRetParentFolder.ID,0,0);

                if (aFile.IsLocked)
                {
                    MessageBox.Show("检出成功。");

                    //把文件内容做修改后保存后,检入。

                    aFile.UnlockFile(0,"修改内容为2",0,null); //检入

                    //aFile.UndoLockFile(0,true); //撤销检出

                    if (!aFile.IsLocked)
                    {
                        MessageBox.Show("检入成功。");
                    }


                }


            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                throw;
            }

posted @
2022-05-03 16:28 
painezeng  阅读(
0)  评论(
0
编辑 
收藏 
举报  
来源