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)
编辑
收藏
举报
来源