Here’s my code snippet for getting the filepath (model + drawing) after searching the filename:
public class pdmSearch
{
public string[] FilePath { get; }
public string WorkflowStateName { get; }
public bool HasDrawing { get; }
public pdmSearch(EdmVault5 pdmVault, string variableName, string searchString, out bool found)
{
IEdmSearch5 pdmSearch = (IEdmSearch5)pdmVault.CreateUtility(EdmUtility.EdmUtil_Search);
pdmSearch.FindFiles = true;
pdmSearch.FindFolders = false;
pdmSearch.Recursive = true;
pdmSearch.StartFolderID = pdmVault.RootFolderID;
if (variableName != "")
{
pdmSearch.AddVariable(variableName, searchString);
}
else
{
pdmSearch.FileName = "%" + searchString + "%";
}
IEdmSearchResult5 pdmSearchResult = pdmSearch.GetFirstResult();
FilePath = new string[2] { "", "" };
HasDrawing = false;
if (pdmSearchResult != null)
{
WorkflowStateName = pdmSearchResult.StateName;
while (true)
{
if (pdmSearchResult.Path.ToUpper().Contains("SLDASM") || pdmSearchResult.Path.ToUpper().Contains("SLDPRT"))
{
FilePath[0] = pdmSearchResult.Path.ToUpper();
break;
}
pdmSearchResult = pdmSearch.GetNextResult();
}
pdmSearchResult = pdmSearch.GetFirstResult();
while (pdmSearchResult != null)
{
if (pdmSearchResult.Path.ToUpper().Contains("SLDDRW"))
{
FilePath[1] = pdmSearchResult.Path.ToUpper();
HasDrawing = true;
break;
}
pdmSearchResult = pdmSearch.GetNextResult();
}
found = true;
}
else { found = false; }
}
}
Before opening the document in the Solidworks the filepath is check by File.Exists(pdmSearch.FilePath[0])
which returns false.
So I manually performed a PDM search in the windows explorer into the vault for checking the filepath and for my surprise it’s correct.
Have you ever faced similar issue?