private static bool AddFile2Vault(IEdmVault5 vault, string filePath, out IEdmFile5 edmFile) { edmFile = null; try { IEdmFolder9 parentFolder = vault.GetFolderFromPath(Path.GetDirectoryName(filePath)) as IEdmFolder9; if (parentFolder == null) { //文件夹也是新增的 string fileFolder = Path.GetDirectoryName(filePath).ToLower(); string vaultPath = vault.RootFolderPath.ToLower(); fileFolder = fileFolder.Replace(vault.RootFolderPath.ToLower(), ""); string[] subFolders = fileFolder.Split('/', '\\'); if (!RecursivelyAddFolder(vault, vault.RootFolder, subFolders, out parentFolder)) { return(false); } } int addFileStatus; parentFolder.AddFile2(0, filePath, out addFileStatus, "", (int)EdmAddFlag.EdmAdd_Simple); IEdmFolder5 folder; return(GetFileFromPath(vault, filePath, out edmFile, out folder)); } catch (Exception ex) { return(false); } }
private static bool RecursivelyAddFolder(IEdmVault5 vault, IEdmFolder5 rootFolder, string[] subFolders, out IEdmFolder9 outFolder) { outFolder = null; if (vault == null || rootFolder == null) { return(false); } if (subFolders.Length == 0) { return(true); } IEdmFolder5 tempFolder = rootFolder; try { for (int i = 0; i < subFolders.Length; ++i) { IEdmFolder5 subFolder; string folderPath = Path.Combine(tempFolder.LocalPath, subFolders[i]); subFolder = vault.GetFolderFromPath(folderPath); if (subFolder == null) { subFolder = tempFolder.AddFolder(0, subFolders[i]); if (subFolder == null) { return(false); } } tempFolder = subFolder; } outFolder = tempFolder as IEdmFolder9; return(outFolder != null); } catch (Exception ex) { return(false); } }
private void SearchFiles(IEdmVault5 vault, object Val1) { try { IEdmSearch5 search = null; IEdmFolder5 folder = null; folder = vault.GetFolderFromPath(@"C:\CDI Controlled Documents\drawings\part drawings- controlled"); search = vault.CreateSearch(); search.FileName = "%.%d%w%"; search.StartFolderID = folder.ID; object Var1 = "Part Numbers"; object State = "Approved for Production"; search.AddVariable(Var1, Val1); search.set_State(State); search.FindHistoricStates = false; search.Recursive = true; String message = string.Empty; List <IEdmSearchResult5> results = new List <IEdmSearchResult5>(); IEdmSearchResult5 result = search.GetFirstResult(); while (result != null) { results.Add(result); result = search.GetNextResult(); } results = results.Distinct(new SearchResultComparer()).ToList(); if (results.Count < 1) { search.Clear(); search.FileName = Val1 + ".%d%w%"; search.StartFolderID = folder.ID; State = "Approved for Production"; search.set_State(State); search.FindHistoricStates = false; search.Recursive = true; result = search.GetFirstResult(); while (result != null) { results.Add(result); result = search.GetNextResult(); } results = results.Distinct(new SearchResultComparer()).ToList(); } foreach (IEdmSearchResult5 item in results) { //get latest version IEdmFile5 file = null; IEdmFolder5 retFolder = default(IEdmFolder5); file = vault.GetFileFromPath(item.Path, out retFolder); file.GetFileCopy(0); //System.Diagnostics.Process.Start(item.Path, @"C:\Program Files\SOLIDWORKS Corp\eDrawings\eDrawings.exe"); //OpenEdwg(item.Path); OpenSaveSldrwPdf(item.Path); message = message + "Filename: " + item.Name + ", Rev: " + file.CurrentRevision + "; \n"; } MessageBox.Show(message); } catch (Exception ex) { MessageBox.Show(ex.Message); } }